From be237ca879bc6d422607618b9e4fd698a58a24d7 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Fri, 30 Jan 2026 23:29:15 -0800 Subject: [PATCH 001/143] main changes --- components/WalkieTalkieRecorder.tsx | 387 +++++------------- package-lock.json | 4 +- .../components/BibleRecordingView.tsx | 34 +- .../components/RecordingControls.tsx | 138 ++++--- .../components/RecordingViewSimplified.tsx | 36 +- .../components/VADSettingsDrawer.tsx | 34 +- 6 files changed, 228 insertions(+), 405 deletions(-) diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index ff17cbf62..1ea6f639d 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -1,32 +1,22 @@ import { Button } from '@/components/ui/button'; import { useAuth } from '@/contexts/AuthContext'; import { useHaptic } from '@/hooks/useHaptic'; -import { colors } from '@/styles/theme'; import { cn } from '@/utils/styleUtils'; import { Audio } from 'expo-av'; -import { LockIcon, MicIcon, X } from 'lucide-react-native'; +import { MicIcon, Square } from 'lucide-react-native'; import React, { useEffect, useRef, useState } from 'react'; import { View } from 'react-native'; -import { Gesture, GestureDetector } from 'react-native-gesture-handler'; import type { SharedValue } from 'react-native-reanimated'; import Animated, { Easing, cancelAnimation, - interpolate, - interpolateColor, - useAnimatedProps, useAnimatedStyle, useSharedValue, - withSpring, withTiming } from 'react-native-reanimated'; -import Svg, { Circle } from 'react-native-svg'; -import { scheduleOnRN } from 'react-native-worklets'; import { Icon } from './ui/icon'; import { Text } from './ui/text'; -// Create animated SVG components -const AnimatedCircle = Animated.createAnimatedComponent(Circle); const AnimatedView = Animated.View; interface WalkieTalkieRecorderProps { @@ -41,8 +31,8 @@ interface WalkieTalkieRecorderProps { onWaveformUpdate?: (waveformData: number[]) => void; isRecording: boolean; // VAD mode props (native module handles recording, this is just for UI) - isVADLocked?: boolean; - onVADLockChange?: (locked: boolean) => void; + isVADActive?: boolean; + onVADActiveChange?: (active: boolean) => void; // VAD visual feedback currentEnergy?: number; vadThreshold?: number; @@ -63,8 +53,8 @@ const WalkieTalkieRecorder: React.FC = ({ onRecordingDiscarded, onWaveformUpdate: _onWaveformUpdate, isRecording, - isVADLocked = false, - onVADLockChange, + isVADActive = false, + onVADActiveChange, currentEnergy: _currentEnergy = 0, vadThreshold: _vadThreshold = 0.03, canRecord = true, @@ -81,130 +71,41 @@ const WalkieTalkieRecorder: React.FC = ({ // Permission check removed - handled by parent RecordingControls via canRecord prop const isPressedRef = useRef(false); const isActivatingRef = useRef(false); - const [isSlideGestureActive, setIsSlideGestureActive] = useState(false); + const pressStartTimeRef = useRef(null); // Track all recorded samples for final waveform data const [recordedSamples, setRecordedSamples] = useState([]); // Reanimated shared values for smooth UI-thread animations - const scaleAnim = useSharedValue(1); + // scaleAnim removed - no scale animations const pulseAnim = useSharedValue(1); // Use provided SharedValue or create local one const internalActivationProgress = useSharedValue(0); const activationProgress = activationProgressShared ?? internalActivationProgress; - const slideX = useSharedValue(0); - const lockOpacity = useSharedValue(0.3); // Timers and state const activationTimer = useRef | null>(null); const releaseDelayTimer = useRef | null>(null); - const [isSliding, setIsSliding] = useState(false); // Constants const MIN_RECORDING_DURATION = 1000; - const ACTIVATION_TIME = 500; - const RELEASE_DELAY = 300; - const SLIDE_THRESHOLD = 120; - const LOCK_HAPTIC_THRESHOLD = 100; + const ACTIVATION_TIME = 200; + const RELEASE_DELAY = 0; // Avoid React refs inside worklets: mutating `.current` after passing the ref // into a worklet triggers Reanimated's "Tried to modify key `current`..." warning. // Use SharedValues for any state that must be read from a worklet callback. const isRecordingShared = useSharedValue(isRecording); - const isVADLockedRef = useRef(isVADLocked); + const isVADActiveShared = useSharedValue(isVADActive); + const isVADActiveRef = useRef(isVADActive); useEffect(() => { - isVADLockedRef.current = isVADLocked; + isVADActiveRef.current = isVADActive; + isVADActiveShared.value = isVADActive; isRecordingShared.value = isRecording; - }, [isVADLocked, isRecording, isRecordingShared]); + }, [isVADActive, isRecording, isRecordingShared, isVADActiveShared]); - // Callbacks wrapped for scheduleOnRN - const handleSlideStart = () => { - setIsSliding(true); - setIsSlideGestureActive(true); - - if (activationTimer.current) { - clearTimeout(activationTimer.current); - activationTimer.current = null; - } - isActivatingRef.current = false; - }; - - const handleSlideComplete = () => { - console.log('๐Ÿ”’ Slide-to-lock completed - activating VAD mode'); - void successHaptic(); - onVADLockChange?.(true); - }; - - const handleSlideCancel = () => { - setIsSliding(false); - setTimeout(() => { - setIsSlideGestureActive(false); - }, 100); - }; - - const triggerHaptic = () => { - void mediumHaptic(); - }; - - // Pan gesture for slide-to-lock - const panGesture = Gesture.Pan() - .enabled(!isVADLocked && !isRecording) - .activeOffsetX(5) - .failOffsetY([-10, 10]) - .onStart(() => { - 'worklet'; - scheduleOnRN(handleSlideStart); - activationProgress.value = 0; - lockOpacity.value = withTiming(1, { duration: 150 }); - }) - .onUpdate((event) => { - 'worklet'; - const dx = Math.max(0, Math.min(SLIDE_THRESHOLD, event.translationX)); - slideX.value = dx; - - if (dx > LOCK_HAPTIC_THRESHOLD && dx < LOCK_HAPTIC_THRESHOLD + 5) { - scheduleOnRN(triggerHaptic); - } - }) - .onEnd((event) => { - 'worklet'; - const dx = event.translationX; - - if (dx >= SLIDE_THRESHOLD) { - slideX.value = withSpring(SLIDE_THRESHOLD, { - damping: 15, - stiffness: 150 - }); - lockOpacity.value = withTiming(1, { duration: 200 }); - scheduleOnRN(handleSlideComplete); - } else { - slideX.value = withSpring(0, { - damping: 12, - stiffness: 200 - }); - lockOpacity.value = withTiming(0.3, { duration: 200 }); - } - - scheduleOnRN(handleSlideCancel); - }) - .onFinalize(() => { - 'worklet'; - if (slideX.value > 0 && slideX.value < SLIDE_THRESHOLD) { - slideX.value = withSpring(0); - lockOpacity.value = withTiming(0.3, { duration: 200 }); - scheduleOnRN(handleSlideCancel); - } - }); - - // Reset slide position when unlocked externally - useEffect(() => { - if (!isVADLocked) { - slideX.value = withSpring(0); - lockOpacity.value = withTiming(0.3, { duration: 200 }); - } - }, [isVADLocked, slideX, lockOpacity]); // Append a live sample for recording playback const appendLiveSample = (amplitude01: number) => { @@ -427,32 +328,34 @@ const WalkieTalkieRecorder: React.FC = ({ }; const handlePressIn = () => { - if (isVADLocked) { - console.log('๐Ÿ”’ VAD mode is locked - manual recording disabled'); - return; - } - - if (isSlideGestureActive) { - console.log('๐Ÿ”’ Slide gesture active - ignoring press'); + // If VAD is active, allow tap to stop it + if (isVADActive) { + pressStartTimeRef.current = Date.now(); + isPressedRef.current = true; // Set pressed state so handlePressOut can process the stop return; } console.log('๐ŸŽ™๏ธ Press in detected, starting activation timer...'); + // Record press start time for tap detection + pressStartTimeRef.current = Date.now(); + void mediumHaptic(); isPressedRef.current = true; isActivatingRef.current = true; - scaleAnim.value = withSpring(0.9, { - damping: 15, - stiffness: 150 - }); + // No scale animation - keep button static + // scaleAnim.value = withSpring(0.9, { + // damping: 15, + // stiffness: 150 + // }); - activationProgress.value = withTiming(1, { - duration: ACTIVATION_TIME, - easing: Easing.linear - }); + // No activation progress animation + // activationProgress.value = withTiming(1, { + // duration: ACTIVATION_TIME, + // easing: Easing.linear + // }); activationTimer.current = setTimeout(() => { console.log('โœ… Activation complete, starting recording...'); @@ -468,22 +371,25 @@ const WalkieTalkieRecorder: React.FC = ({ const handlePressOut = () => { if (!isPressedRef.current) return; - if (isSlideGestureActive) { - console.log('๐Ÿ”’ Slide gesture was active - ignoring press out'); - isPressedRef.current = false; - activationProgress.value = withTiming(0, { duration: 150 }); - scaleAnim.value = withSpring(1, { - damping: 15, - stiffness: 150 - }); - return; - } - void mediumHaptic(); isPressedRef.current = false; + const pressDuration = pressStartTimeRef.current + ? Date.now() - pressStartTimeRef.current + : Infinity; + pressStartTimeRef.current = null; + + // If VAD is active, any tap stops VAD + if (isVADActive) { + console.log('๐Ÿ‘† Tap detected - stopping VAD mode'); + void successHaptic(); + onVADActiveChange?.(false); + // No animations when stopping VAD - immediate response + return; + } + + // If released before activation completes, check if it was a tap if (isActivatingRef.current) { - console.log('โŒ Released before activation complete, canceling...'); isActivatingRef.current = false; if (activationTimer.current) { @@ -491,69 +397,45 @@ const WalkieTalkieRecorder: React.FC = ({ activationTimer.current = null; } - activationProgress.value = withTiming(0, { duration: 150 }); - scaleAnim.value = withSpring(1, { - damping: 15, - stiffness: 150 - }); + // If press duration < ACTIVATION_TIME, it's a tap - start VAD + if (pressDuration < ACTIVATION_TIME) { + console.log('๐Ÿ‘† Tap detected - starting VAD mode'); + void successHaptic(); + onVADActiveChange?.(true); + } else { + console.log('โŒ Released before activation complete, canceling...'); + } + + // No animations + // activationProgress.value = withTiming(0, { duration: 150 }); + // scaleAnim.value = withSpring(1, { + // damping: 15, + // stiffness: 150 + // }); return; } + // If recording was active, stop it if (isRecording) { - console.log( - `โณ Release detected, will stop recording in ${RELEASE_DELAY}ms to capture audio tail` - ); - - if (releaseDelayTimer.current) { - clearTimeout(releaseDelayTimer.current); - } - - releaseDelayTimer.current = setTimeout(() => { - console.log('๐Ÿ›‘ Stopping recording after delay'); - void stopRecording(); - releaseDelayTimer.current = null; - }, RELEASE_DELAY); + console.log('๐Ÿ›‘ Stopping recording immediately'); + void stopRecording(); } - activationProgress.value = withTiming(0, { duration: 150 }); - scaleAnim.value = withSpring(1, { - damping: 15, - stiffness: 150 - }); + // No animations + // activationProgress.value = withTiming(0, { duration: 150 }); + // scaleAnim.value = withSpring(1, { + // damping: 15, + // stiffness: 150 + // }); }; - const progressCircumference = 2 * Math.PI * 28; - // Animated styles (background animation removed) const buttonAnimatedStyle = useAnimatedStyle(() => { + 'worklet'; + // Keep button static - no scale animations return { - transform: [ - { translateX: slideX.value }, - { scale: scaleAnim.value }, - { scale: pulseAnim.value } - ] - }; - }); - - const lockIndicatorAnimatedStyle = useAnimatedStyle(() => { - return { - opacity: lockOpacity.value - }; - }); - - const progressCircleAnimatedProps = useAnimatedProps(() => { - return { - stroke: interpolateColor( - activationProgress.value, - [0, 1], - ['#3b82f6', '#ef4444'] - ), - strokeDashoffset: interpolate( - activationProgress.value, - [0, 1], - [progressCircumference, 0] - ) + transform: [{ scale: 1 }] }; }); @@ -563,101 +445,34 @@ const WalkieTalkieRecorder: React.FC = ({ } return ( - - - {/* Lock indicator */} - {!isVADLocked ? ( - - - - {isSliding ? 'Release to lock' : 'Slide โ†’'} - - - ) : ( - <> - )} - - {/* Button with gesture detector */} - - - - {/* Circular progress indicator */} - - - {(isActivatingRef.current || isRecording) && ( - - )} - {(isActivatingRef.current || isRecording) && ( - - )} - - - - - ) : ( - - )} - - - - - + + + + ); }; diff --git a/package-lock.json b/package-lock.json index f97d91321..2164647ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "langquest", - "version": "2.0.8", + "version": "2.0.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "langquest", - "version": "2.0.8", + "version": "2.0.11", "hasInstallScript": true, "dependencies": { "@azure/core-asynciterator-polyfill": "^1.0.2", diff --git a/views/new/recording/components/BibleRecordingView.tsx b/views/new/recording/components/BibleRecordingView.tsx index 66e147bca..8ff4cd59d 100644 --- a/views/new/recording/components/BibleRecordingView.tsx +++ b/views/new/recording/components/BibleRecordingView.tsx @@ -191,7 +191,7 @@ const BibleRecordingView = ({ // Recording state const [isRecording, setIsRecording] = React.useState(false); - const [isVADLocked, setIsVADLocked] = React.useState(false); + const [isVADActive, setIsVADActive] = React.useState(false); // VAD settings - persisted in local store for consistent UX // These settings are automatically saved to AsyncStorage and restored on app restart @@ -726,7 +726,7 @@ const BibleRecordingView = ({ // This is done in the next useEffect that monitors allItems.length change // If VAD is active, update recording context to use the new pill - if (isVADLocked) { + if (isVADActive) { const newVerse = { from: verseToAdd, to: verseToAdd }; currentRecordingVerseRef.current = newVerse; vadCounterRef.current = newOrderIndex + 1; @@ -734,7 +734,7 @@ const BibleRecordingView = ({ `๐ŸŽฏ VAD: Updated to verse ${verseToAdd} | order_index: ${newOrderIndex + 1}` ); } - }, [verseToAdd, isVADLocked, addVersePill]); + }, [verseToAdd, isVADActive, addVersePill]); // Stable item list that only updates when content actually changes // We intentionally use assetContentKey instead of allItems to prevent re-renders @@ -1372,7 +1372,7 @@ const BibleRecordingView = ({ // Initialize VAD counter and verse when VAD mode activates React.useEffect(() => { - if (isVADLocked && vadCounterRef.current === null) { + if (isVADActive && vadCounterRef.current === null) { // Capture current position when VAD starts vadInsertionIndexRef.current = insertionIndexRef.current; @@ -1398,7 +1398,7 @@ const BibleRecordingView = ({ debugLog( `๐ŸŽฏ VAD initialized ${contextIsAtEnd ? 'at END' : 'in MIDDLE'} | index: ${insertionIndexRef.current} | item: "${itemName}" | order_index: ${orderIndex} | verse: ${verse ? `${verse.from}-${verse.to}` : 'null'}` ); - } else if (!isVADLocked) { + } else if (!isVADActive) { vadCounterRef.current = null; vadInsertionIndexRef.current = null; console.log( @@ -1409,7 +1409,7 @@ const BibleRecordingView = ({ vadIsAtEndRef.current = false; } }, [ - isVADLocked, + isVADActive, allItems, currentDynamicVerse, assets.length, @@ -1677,7 +1677,7 @@ const BibleRecordingView = ({ } = useVADRecording({ threshold: vadThreshold, silenceDuration: vadSilenceDuration, - isVADActive: isVADLocked, + isVADActive: isVADActive, onSegmentStart: handleVADSegmentStart, onSegmentComplete: handleVADSegmentComplete, isManualRecording: isRecording @@ -1685,13 +1685,13 @@ const BibleRecordingView = ({ // Invalidate queries when VAD mode ends React.useEffect(() => { - if (!isVADLocked) { + if (!isVADActive) { void queryClient.invalidateQueries({ queryKey: ['assets', 'by-quest', currentQuestId], exact: false }); } - }, [isVADLocked, currentQuestId, queryClient]); + }, [isVADActive, currentQuestId, queryClient]); // ============================================================================ // LAZY LOAD SEGMENT COUNTS @@ -2549,8 +2549,8 @@ const BibleRecordingView = ({ // SESSION-ONLY MODE: No loading/error states needed // The list starts empty and only shows assets recorded in this session - // Show full-screen overlay when VAD is locked and display mode is fullscreen - const showFullScreenOverlay = isVADLocked && vadDisplayMode === 'fullscreen'; + // Show full-screen overlay when VAD is active and display mode is fullscreen + const showFullScreenOverlay = isVADActive && vadDisplayMode === 'fullscreen'; const addButtonComponent = useMemo(() => { // Apply same conditions as floating button (line 3050) @@ -2635,7 +2635,7 @@ const BibleRecordingView = ({ isRecordingShared={isRecordingShared} onCancel={() => { // Cancel VAD mode - setIsVADLocked(false); + setIsVADActive(false); }} /> )} @@ -2687,10 +2687,10 @@ const BibleRecordingView = ({ {/* {(isRecording || isVADRecording)? ( */} - {isVADLocked ? ( + {isVADActive ? ( {highlightedItemVerse ? `${t('recording')}: ${formatVerseRange(highlightedItemVerse)}` @@ -2754,8 +2754,8 @@ const BibleRecordingView = ({ onRecordingComplete={handleRecordingComplete} onRecordingDiscarded={handleRecordingDiscarded} onLayout={setFooterHeight} - isVADLocked={isVADLocked} - onVADLockChange={setIsVADLocked} + isVADActive={isVADActive} + onVADActiveChange={setIsVADActive} onSettingsPress={() => setShowVADSettings(true)} onAutoCalibratePress={() => { setAutoCalibrateOnOpen(true); @@ -2799,7 +2799,7 @@ const BibleRecordingView = ({ onThresholdChange={setVadThreshold} silenceDuration={vadSilenceDuration} onSilenceDurationChange={setVadSilenceDuration} - isVADLocked={isVADLocked} + isVADActive={isVADActive} displayMode={vadDisplayMode} onDisplayModeChange={setVadDisplayMode} autoCalibrateOnOpen={autoCalibrateOnOpen} diff --git a/views/new/recording/components/RecordingControls.tsx b/views/new/recording/components/RecordingControls.tsx index 3592e1aac..41f8d84d1 100644 --- a/views/new/recording/components/RecordingControls.tsx +++ b/views/new/recording/components/RecordingControls.tsx @@ -3,7 +3,7 @@ * * - Waveform displayed above the controls * - Prevents re-renders from frequent currentEnergy updates - * - Only re-renders when critical props change (isRecording, isVADLocked) + * - Only re-renders when critical props change (isRecording, isVADActive) */ import WalkieTalkieRecorder from '@/components/WalkieTalkieRecorder'; @@ -38,8 +38,8 @@ interface RecordingControlsProps { onRecordingDiscarded?: () => void; onLayout?: (height: number) => void; // VAD props - isVADLocked?: boolean; - onVADLockChange?: (locked: boolean) => void; + isVADActive?: boolean; + onVADActiveChange?: (active: boolean) => void; onSettingsPress?: () => void; onAutoCalibratePress?: () => void; // Callback to open settings drawer with auto-calibrate // VAD visual feedback (native module handles recording) @@ -59,8 +59,8 @@ export const RecordingControls = React.memo( onRecordingComplete, onRecordingDiscarded, onLayout, - isVADLocked, - onVADLockChange, + isVADActive, + onVADActiveChange, onSettingsPress, onAutoCalibratePress, currentEnergy, @@ -156,8 +156,8 @@ export const RecordingControls = React.memo( // Animate display progress to lag slightly behind activation progress // This makes the bar complete around the same time recording actually starts - // Activation completes in 500ms, but recording takes ~50-100ms more to actually start - // So we'll make display progress animate slightly slower (~550ms total) + // Activation completes in 200ms, but recording takes ~50-100ms more to actually start + // So we'll make display progress animate slightly slower (~250ms total) useAnimatedReaction( () => activationProgressShared.value, (currentProgress, previous) => { @@ -165,10 +165,10 @@ export const RecordingControls = React.memo( if (!isRecording) { // Detect when activation starts (progress goes from 0 to >0) if (previous === 0 && currentProgress > 0) { - // Start display animation - animate to 1 over 550ms (slightly longer than activation's 500ms) + // Start display animation - animate to 1 over 250ms (slightly longer than activation's 200ms) // This makes it complete around the same time recording actually starts displayProgressShared.value = withTiming(1, { - duration: 550, // Slightly longer than activation (500ms) to sync with recording start + duration: 250, // Slightly longer than activation (200ms) to sync with recording start easing: Easing.linear }); } else if (currentProgress === 0) { @@ -181,11 +181,11 @@ export const RecordingControls = React.memo( ); // Animated style for progress bar - shows activation progress, hides when recording starts - // Only shown during walkie-talkie mode (not during VAD lock) + // Only shown during walkie-talkie mode (not during VAD active) const progressBarStyle = useAnimatedStyle(() => { 'worklet'; - // Hide progress bar entirely when VAD locked or when recording has started - if (isVADLocked || isRecording) { + // Hide progress bar entirely when VAD active or when recording has started + if (isVADActive || isRecording) { return { width: 0, opacity: 0 @@ -201,7 +201,7 @@ export const RecordingControls = React.memo( opacity: progress > 0 ? 1 : 0, backgroundColor: '#3b82f6' // Blue during activation }; - }, [isRecording, isVADLocked, width]); + }, [isRecording, isVADActive, width]); // Fallback SharedValues for backward compatibility // Note: useSharedValue is already imported at the top, don't require it again @@ -235,10 +235,10 @@ export const RecordingControls = React.memo( // Update walkie-talkie recording state SharedValue (for waveform bar color) // Only update when NOT in VAD mode useEffect(() => { - if (!isVADLocked) { + if (!isVADActive) { walkieTalkieIsRecordingShared.value = isRecording; } - }, [isRecording, isVADLocked, walkieTalkieIsRecordingShared]); + }, [isRecording, isVADActive, walkieTalkieIsRecordingShared]); // Continuously tick walkie-talkie energy during recording to progress waveform // This ensures the waveform progresses even during silence - it's time-based, not just energy-based @@ -248,7 +248,7 @@ export const RecordingControls = React.memo( const tickToggleRef = useRef(false); useEffect(() => { - if (!isRecording || isVADLocked) { + if (!isRecording || isVADActive) { // Reset when not recording walkieTalkieEnergyShared.value = 0; tickToggleRef.current = false; @@ -274,7 +274,7 @@ export const RecordingControls = React.memo( return () => { clearInterval(interval); }; - }, [isRecording, isVADLocked, walkieTalkieEnergyShared]); + }, [isRecording, isVADActive, walkieTalkieEnergyShared]); // Show permission UI only if we explicitly know permission is denied (not while checking) // During check (hasPermission === null), show controls optimistically @@ -366,12 +366,12 @@ export const RecordingControls = React.memo( ]} /> - {/* Waveform visualization above controls - visible during VAD lock or walkie-talkie recording */} + {/* Waveform visualization above controls - visible during VAD active or walkie-talkie recording */} - {/* Controls row */} - - {/* Settings button on the left */} - - - {/* Recorder in center - takes remaining space */} - - { - // Duration tracking for other purposes if needed - // Progress bar uses activationProgressShared instead - }} - /> + {/* Settings row or VAD active message - above recorder */} + {isVADActive ? ( + + + VAD recording active + - - {/* Spacer to balance layout */} - + ) : ( + + + + Recording settings + + + )} + + {/* Recorder - full width */} + + { + // Duration tracking for other purposes if needed + // Progress bar uses activationProgressShared instead + }} + /> @@ -436,9 +443,9 @@ export const RecordingControls = React.memo( }, // **OPTIMIZATION: Custom equality check - only re-render for critical prop changes** (prevProps, nextProps) => { - // FIX: Allow immediate re-render when VAD lock changes for responsive cancel button - if (prevProps.isVADLocked !== nextProps.isVADLocked) { - return false; // Force re-render immediately on VAD lock change + // FIX: Allow immediate re-render when VAD active changes for responsive cancel button + if (prevProps.isVADActive !== nextProps.isVADActive) { + return false; // Force re-render immediately on VAD active change } // Re-render ONLY if these props change: @@ -446,14 +453,15 @@ export const RecordingControls = React.memo( // The progress bar uses a SharedValue that updates smoothly without causing re-renders return ( prevProps.isRecording === nextProps.isRecording && - // isVADLocked already checked above + // isVADActive already checked above prevProps.onRecordingStart === nextProps.onRecordingStart && prevProps.onRecordingStop === nextProps.onRecordingStop && prevProps.onRecordingComplete === nextProps.onRecordingComplete && prevProps.onRecordingDiscarded === nextProps.onRecordingDiscarded && - prevProps.onVADLockChange === nextProps.onVADLockChange && + prevProps.onVADActiveChange === nextProps.onVADActiveChange && prevProps.onSettingsPress === nextProps.onSettingsPress // Still ignoring currentEnergy, vadThreshold, and recordingDuration changes to prevent cascade + // isVADActive already checked above ); } ); diff --git a/views/new/recording/components/RecordingViewSimplified.tsx b/views/new/recording/components/RecordingViewSimplified.tsx index 4befa55d1..cebd5eac0 100644 --- a/views/new/recording/components/RecordingViewSimplified.tsx +++ b/views/new/recording/components/RecordingViewSimplified.tsx @@ -125,7 +125,7 @@ const RecordingViewSimplified = ({ // Recording state const [isRecording, setIsRecording] = React.useState(false); - const [isVADLocked, setIsVADLocked] = React.useState(false); + const [isVADActive, setIsVADActive] = React.useState(false); // VAD settings - persisted in local store for consistent UX // These settings are automatically saved to AsyncStorage and restored on app restart @@ -893,7 +893,7 @@ const RecordingViewSimplified = ({ // Initialize VAD counter when VAD mode activates React.useEffect(() => { - if (isVADLocked && vadCounterRef.current === null) { + if (isVADActive && vadCounterRef.current === null) { // CRITICAL: Use ref to get the LATEST insertionIndex value // This prevents issues when fullscreen overlay blocks the wheel and causes // insertionIndex state updates to be delayed or missed @@ -950,13 +950,13 @@ const RecordingViewSimplified = ({ vadCounterRef.current = targetOrder; })(); - } else if (!isVADLocked) { + } else if (!isVADActive) { vadCounterRef.current = null; } - // IMPORTANT: Only depend on isVADLocked and currentQuestId + // IMPORTANT: Only depend on isVADActive and currentQuestId // insertionIndex is read from ref to avoid stale closure issues // assets is captured from closure (intentional - we want the state at activation time) - }, [isVADLocked, currentQuestId, assets, insertionIndex]); + }, [isVADActive, currentQuestId, assets, insertionIndex]); // Manual recording handlers const handleRecordingStart = React.useCallback(() => { @@ -1022,13 +1022,13 @@ const RecordingViewSimplified = ({ // Generate name immediately and reserve it to prevent duplicates // In VAD mode: Use the VAD counter which is already incremented per segment // In manual mode: Use total count (existing + pending) for simple sequential naming - const nextNumber = isVADLocked + const nextNumber = isVADActive ? targetOrder + 1 // VAD: use order_index + 1 for naming (order is 0-based, names are 1-based) : assets.length + pendingAssetNamesRef.current.size + 1; const assetName = String(nextNumber).padStart(3, '0'); pendingAssetNamesRef.current.add(assetName); debugLog( - `๐Ÿท๏ธ Reserved name: ${assetName} (${isVADLocked ? 'VAD mode' : 'manual mode'}) | order_index: ${targetOrder}, asset count: ${assets.length}, pending: ${pendingAssetNamesRef.current.size}` + `๐Ÿท๏ธ Reserved name: ${assetName} (${isVADActive ? 'VAD mode' : 'manual mode'}) | order_index: ${targetOrder}, asset count: ${assets.length}, pending: ${pendingAssetNamesRef.current.size}` ); // Native module flushes the file before sending onSegmentComplete event. @@ -1085,7 +1085,7 @@ const RecordingViewSimplified = ({ await dbWriteQueueRef.current; // Invalidate queries to refresh asset list - if (!isVADLocked) { + if (!isVADActive) { await queryClient.invalidateQueries({ queryKey: ['assets', 'by-quest', currentQuestId], exact: false @@ -1105,7 +1105,7 @@ const RecordingViewSimplified = ({ currentProject, currentUser, queryClient, - isVADLocked, + isVADActive, assets, targetLanguoidId ] @@ -1153,7 +1153,7 @@ const RecordingViewSimplified = ({ } = useVADRecording({ threshold: vadThreshold, silenceDuration: vadSilenceDuration, - isVADActive: isVADLocked, + isVADActive: isVADActive, onSegmentStart: handleVADSegmentStart, onSegmentComplete: handleVADSegmentComplete, isManualRecording: isRecording @@ -1161,13 +1161,13 @@ const RecordingViewSimplified = ({ // Invalidate queries when VAD mode ends React.useEffect(() => { - if (!isVADLocked) { + if (!isVADActive) { void queryClient.invalidateQueries({ queryKey: ['assets', 'by-quest', currentQuestId], exact: false }); } - }, [isVADLocked, currentQuestId, queryClient]); + }, [isVADActive, currentQuestId, queryClient]); // ============================================================================ // LAZY LOAD SEGMENT COUNTS @@ -2008,8 +2008,8 @@ const RecordingViewSimplified = ({ ); } - // Show full-screen overlay when VAD is locked and display mode is fullscreen - const showFullScreenOverlay = isVADLocked && vadDisplayMode === 'fullscreen'; + // Show full-screen overlay when VAD is active and display mode is fullscreen + const showFullScreenOverlay = isVADActive && vadDisplayMode === 'fullscreen'; return ( @@ -2023,7 +2023,7 @@ const RecordingViewSimplified = ({ isDiscardedShared={isDiscardedShared} onCancel={() => { // Cancel VAD mode - setIsVADLocked(false); + setIsVADActive(false); }} /> )} @@ -2113,8 +2113,8 @@ const RecordingViewSimplified = ({ onRecordingComplete={handleRecordingComplete} onRecordingDiscarded={handleRecordingDiscarded} onLayout={setFooterHeight} - isVADLocked={isVADLocked} - onVADLockChange={setIsVADLocked} + isVADActive={isVADActive} + onVADActiveChange={setIsVADActive} onSettingsPress={() => setShowVADSettings(true)} onAutoCalibratePress={() => { setAutoCalibrateOnOpen(true); @@ -2159,7 +2159,7 @@ const RecordingViewSimplified = ({ onSilenceDurationChange={setVadSilenceDuration} minSegmentLength={vadMinSegmentLength} onMinSegmentLengthChange={setVadMinSegmentLength} - isVADLocked={isVADLocked} + isVADActive={isVADActive} displayMode={vadDisplayMode} onDisplayModeChange={setVadDisplayMode} autoCalibrateOnOpen={autoCalibrateOnOpen} diff --git a/views/new/recording/components/VADSettingsDrawer.tsx b/views/new/recording/components/VADSettingsDrawer.tsx index 2a9c374b9..823ed7b98 100644 --- a/views/new/recording/components/VADSettingsDrawer.tsx +++ b/views/new/recording/components/VADSettingsDrawer.tsx @@ -177,11 +177,11 @@ interface VADSettingsDrawerProps { onSilenceDurationChange: (duration: number) => void; minSegmentLength: number; onMinSegmentLengthChange: (duration: number) => void; - isVADLocked?: boolean; // Don't stop detection if VAD is locked + isVADActive?: boolean; // Don't stop detection if VAD is active displayMode: 'fullscreen' | 'footer'; onDisplayModeChange: (mode: 'fullscreen' | 'footer') => void; autoCalibrateOnOpen?: boolean; // Automatically start calibration when drawer opens - energyShared?: SharedValue; // Optional: Use this energy source when VAD is locked + energyShared?: SharedValue; // Optional: Use this energy source when VAD is active } function VADSettingsDrawerInternal({ @@ -193,7 +193,7 @@ function VADSettingsDrawerInternal({ onSilenceDurationChange, minSegmentLength, onMinSegmentLengthChange, - isVADLocked = false, + isVADActive = false, displayMode, onDisplayModeChange, autoCalibrateOnOpen = false, @@ -207,9 +207,9 @@ function VADSettingsDrawerInternal({ energyShared: internalEnergyShared } = useMicrophoneEnergy(); - // Use external energy source when VAD is locked, otherwise use internal + // Use external energy source when VAD is active, otherwise use internal const energyShared = - isVADLocked && externalEnergyShared + isVADActive && externalEnergyShared ? externalEnergyShared : internalEnergyShared; @@ -485,11 +485,11 @@ function VADSettingsDrawerInternal({ // Only act on actual changes, not on every render if (isOpen && !wasOpen) { // Drawer just opened - // CRITICAL: If VAD is locked, energy detection is already running via useVADRecording + // CRITICAL: If VAD is active, energy detection is already running via useVADRecording // Don't call startEnergyDetection() again - it would interfere with the native module - if (isVADLocked) { + if (isVADActive) { console.log( - '๐ŸŽฏ VAD Settings: Drawer opened with VAD locked - using existing energy detection' + '๐ŸŽฏ VAD Settings: Drawer opened with VAD active - using existing energy detection' ); // Don't reset energy or start detection - let useVADRecording manage it } else { @@ -512,31 +512,31 @@ function VADSettingsDrawerInternal({ // Drawer just closed - cancel any in-progress calibration cancelCalibration(); - // CRITICAL: If VAD is locked, don't touch energy detection or reset values + // CRITICAL: If VAD is active, don't touch energy detection or reset values // useVADRecording is managing the native module and needs consistent state - if (!isVADLocked) { - // Reset energy values only when VAD is not locked + if (!isVADActive) { + // Reset energy values only when VAD is not active resetEnergy(); latestEnergyRef.current = 0; if (currentIsActive) { - // Stop energy detection only if VAD is not locked - // If VAD is locked, let useVADRecording manage the energy detection + // Stop energy detection only if VAD is not active + // If VAD is active, let useVADRecording manage the energy detection console.log( - '๐ŸŽฏ VAD Settings: Stopping energy detection (drawer closed, VAD not locked)' + '๐ŸŽฏ VAD Settings: Stopping energy detection (drawer closed, VAD not active)' ); void stopEnergyDetectionRef.current(); } } else { console.log( - '๐ŸŽฏ VAD Settings: Drawer closed with VAD locked - leaving energy detection running' + '๐ŸŽฏ VAD Settings: Drawer closed with VAD active - leaving energy detection running' ); } } // Update refs for next render prevIsOpenRef.current = isOpen; - }, [isOpen, isVADLocked, cancelCalibration, resetEnergy]); + }, [isOpen, isVADActive, cancelCalibration, resetEnergy]); // Reset to default threshold const handleResetToDefault = React.useCallback(() => { @@ -1508,7 +1508,7 @@ export const VADSettingsDrawer = React.memo( prevProps.threshold === nextProps.threshold && prevProps.silenceDuration === nextProps.silenceDuration && prevProps.minSegmentLength === nextProps.minSegmentLength && - prevProps.isVADLocked === nextProps.isVADLocked && + prevProps.isVADActive === nextProps.isVADActive && prevProps.displayMode === nextProps.displayMode && prevProps.autoCalibrateOnOpen === nextProps.autoCalibrateOnOpen && prevProps.energyShared === nextProps.energyShared; From 942f43cfd6f838e2362fb65fb7313d37510e750c Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 31 Jan 2026 11:41:36 -0800 Subject: [PATCH 002/143] record button ripple animation --- components/WalkieTalkieRecorder.tsx | 170 ++++++++++++++++++++++------ 1 file changed, 133 insertions(+), 37 deletions(-) diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index 1ea6f639d..c7ebf038e 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -1,15 +1,15 @@ -import { Button } from '@/components/ui/button'; import { useAuth } from '@/contexts/AuthContext'; import { useHaptic } from '@/hooks/useHaptic'; import { cn } from '@/utils/styleUtils'; import { Audio } from 'expo-av'; import { MicIcon, Square } from 'lucide-react-native'; import React, { useEffect, useRef, useState } from 'react'; -import { View } from 'react-native'; +import { Pressable, View, useWindowDimensions } from 'react-native'; import type { SharedValue } from 'react-native-reanimated'; import Animated, { Easing, cancelAnimation, + interpolateColor, useAnimatedStyle, useSharedValue, withTiming @@ -79,9 +79,9 @@ const WalkieTalkieRecorder: React.FC = ({ // Reanimated shared values for smooth UI-thread animations // scaleAnim removed - no scale animations const pulseAnim = useSharedValue(1); - // Use provided SharedValue or create local one + // Use provided SharedValue or create local one (kept for potential future use) const internalActivationProgress = useSharedValue(0); - const activationProgress = + const _activationProgress = activationProgressShared ?? internalActivationProgress; // Timers and state @@ -100,6 +100,16 @@ const WalkieTalkieRecorder: React.FC = ({ const isVADActiveShared = useSharedValue(isVADActive); const isVADActiveRef = useRef(isVADActive); + // ============================================================================ + // RIPPLE ANIMATION STATE (Material Design-style radial wipe) + // ============================================================================ + // Ripple expands from center of button, transitioning from white (50% opacity) + // to red (100% opacity) over ACTIVATION_TIME duration + // This creates a "wipe" effect that reveals the red recording state + const { width: windowWidth } = useWindowDimensions(); + const rippleProgress = useSharedValue(0); // 0 to 1, maps to ACTIVATION_TIME + const rippleOpacity = useSharedValue(0); // Controls white overlay opacity (fades out as red shows through) + useEffect(() => { isVADActiveRef.current = isVADActive; isVADActiveShared.value = isVADActive; @@ -345,18 +355,31 @@ const WalkieTalkieRecorder: React.FC = ({ isPressedRef.current = true; isActivatingRef.current = true; - // No scale animation - keep button static - // scaleAnim.value = withSpring(0.9, { - // damping: 15, - // stiffness: 150 - // }); - - // No activation progress animation - // activationProgress.value = withTiming(1, { - // duration: ACTIVATION_TIME, - // easing: Easing.linear - // }); - + // ============================================================================ + // START RIPPLE ANIMATION + // ============================================================================ + // Initialize ripple: starts at center, 50% opacity white + rippleProgress.value = 0; + rippleOpacity.value = 0.5; + + // Animate ripple expanding from center over ACTIVATION_TIME + // The ripple expands outward, revealing red underneath as white overlay fades + rippleProgress.value = withTiming(1, { + duration: ACTIVATION_TIME, // 200ms - matches activation time + easing: Easing.linear, + }); + + // Fade white overlay to reveal red underneath + // White starts at 50% opacity, fades to 0% as red shows through + rippleOpacity.value = withTiming(0, { + duration: ACTIVATION_TIME, + easing: Easing.linear, + }); + + // ============================================================================ + // ACTIVATION TIMER + // ============================================================================ + // Start recording after ACTIVATION_TIME completes activationTimer.current = setTimeout(() => { console.log('โœ… Activation complete, starting recording...'); isActivatingRef.current = false; @@ -384,7 +407,12 @@ const WalkieTalkieRecorder: React.FC = ({ console.log('๐Ÿ‘† Tap detected - stopping VAD mode'); void successHaptic(); onVADActiveChange?.(false); - // No animations when stopping VAD - immediate response + + // ============================================================================ + // RESET RIPPLE ANIMATION (VAD stopped) + // ============================================================================ + rippleProgress.value = withTiming(0, { duration: 200 }); + rippleOpacity.value = withTiming(0, { duration: 200 }); return; } @@ -398,20 +426,20 @@ const WalkieTalkieRecorder: React.FC = ({ } // If press duration < ACTIVATION_TIME, it's a tap - start VAD + // NOTE: Don't reset ripple animation here - let it complete since VAD is starting + // The button will turn red (VAD active) and ripple animation completes naturally if (pressDuration < ACTIVATION_TIME) { console.log('๐Ÿ‘† Tap detected - starting VAD mode'); void successHaptic(); onVADActiveChange?.(true); } else { + // Edge case: released after ACTIVATION_TIME but before timer fired + // Reset ripple since nothing is starting console.log('โŒ Released before activation complete, canceling...'); + rippleProgress.value = withTiming(0, { duration: 150 }); + rippleOpacity.value = withTiming(0, { duration: 150 }); } - // No animations - // activationProgress.value = withTiming(0, { duration: 150 }); - // scaleAnim.value = withSpring(1, { - // damping: 15, - // stiffness: 150 - // }); return; } @@ -421,15 +449,16 @@ const WalkieTalkieRecorder: React.FC = ({ void stopRecording(); } - // No animations - // activationProgress.value = withTiming(0, { duration: 150 }); - // scaleAnim.value = withSpring(1, { - // damping: 15, - // stiffness: 150 - // }); + // ============================================================================ + // RESET RIPPLE ANIMATION (recording stopped) + // ============================================================================ + rippleProgress.value = withTiming(0, { duration: 200 }); + rippleOpacity.value = withTiming(0, { duration: 200 }); }; - // Animated styles (background animation removed) + // ============================================================================ + // ANIMATED STYLES + // ============================================================================ const buttonAnimatedStyle = useAnimatedStyle(() => { 'worklet'; @@ -439,23 +468,90 @@ const WalkieTalkieRecorder: React.FC = ({ }; }); + // ============================================================================ + // RIPPLE ANIMATION STYLE (GPU-accelerated with transform: scale) + // ============================================================================ + // PERFORMANCE OPTIMIZATION: + // - Uses transform: scale instead of width/height (GPU-accelerated) + // - Uses interpolateColor (optimized color transitions) + // - Fixed position/size - only scale and color animate + // - Reduces animated properties from 6 to 2 (scale + backgroundColor) + + // Pre-calculate ripple size (only depends on window width, not animated) + // The circle must be large enough to cover the button diagonal when scale=1 + const buttonWidth = windowWidth - 32; // Account for px-4 padding + const buttonHeight = 80; // h-20 = 80px + const maxRadius = Math.sqrt( + Math.pow(buttonWidth / 2, 2) + Math.pow(buttonHeight / 2, 2) + ); + const rippleDiameter = maxRadius * 2; + + const rippleStyle = useAnimatedStyle(() => { + 'worklet'; + const progress = rippleProgress.value; + + // Use interpolateColor for optimized color transition + // White (50% opacity) -> Destructive red (100% opacity) + // Note: interpolateColor handles opacity via alpha channel + const backgroundColor = interpolateColor( + progress, + [0, 1], + ['rgba(255, 255, 255, 0.5)', 'rgba(255, 84, 112, 1)'] + ); + + return { + // GPU-accelerated transform instead of width/height + transform: [{ scale: progress }], + backgroundColor, + }; + }); + // Permission check is now handled by parent component if (!canRecord) { return null; } + // Determine button background color class based on state + const buttonBgClass = isVADActive || isRecording ? 'bg-destructive' : 'bg-primary'; + return ( - + ); From 62788c3c057509a40131a1ff36b9f85dc3bb00a8 Mon Sep 17 00:00:00 2001 From: Rafael Winter Date: Sat, 31 Jan 2026 14:17:41 -0800 Subject: [PATCH 003/143] Create Recording View as a page --- database_services/assetService.ts | 89 +- hooks/useAppNavigation.ts | 11 + store/localStore.ts | 12 + views/AppView.tsx | 3 + views/new/BibleAssetsView.tsx | 78 +- views/new/RecordingView.tsx | 2800 +++++++++++++++++++++++++++++ 6 files changed, 2949 insertions(+), 44 deletions(-) create mode 100644 views/new/RecordingView.tsx diff --git a/database_services/assetService.ts b/database_services/assetService.ts index 3c05424a5..2a960d878 100644 --- a/database_services/assetService.ts +++ b/database_services/assetService.ts @@ -4,7 +4,7 @@ import { system } from '@/db/powersync/system'; import { resolveTable } from '@/utils/dbUtils'; -import { and, eq, inArray } from 'drizzle-orm'; +import { and, asc, eq, gte, inArray, lte } from 'drizzle-orm'; /** * Asset metadata structure for verse ranges @@ -268,3 +268,90 @@ export async function batchUpdateAssetMetadata( throw error; } } + +/** + * Normalize order_index for recorded verses + * Recording uses unit scale (7001001, 7001002) but Assets view uses thousand scale (7001000, 7002000) + * This function reads assets from DB and reassigns order_index with thousand scale + * @param questId - The quest ID to normalize assets for + * @param verses - Array of verse numbers that were recorded + */ +export async function normalizeOrderIndexForVerses( + questId: string, + verses: number[] +): Promise { + if (!questId || verses.length === 0) return; + + const assetTable = resolveTable('asset', { localOverride: true }); + const questAssetLinkTable = resolveTable('quest_asset_link', { + localOverride: true + }); + + for (const verse of verses) { + // Calculate order_index range for this verse + // Formula: verse * 1000 * 1000 to (verse + 1) * 1000 * 1000 - 1 + // Example: verse 7 โ†’ 7000000 to 7999999 + const minOrderIndex = verse * 1000 * 1000; + const maxOrderIndex = (verse + 1) * 1000 * 1000 - 1; + + try { + // Query assets by order_index range using join with quest_asset_link + // This ensures we only get assets that belong to this quest + const assetsInVerse = await system.db + .select({ + id: assetTable.id, + name: assetTable.name, + order_index: assetTable.order_index + }) + .from(assetTable) + .innerJoin( + questAssetLinkTable, + eq(assetTable.id, questAssetLinkTable.asset_id) + ) + .where( + and( + eq(questAssetLinkTable.quest_id, questId), + gte(assetTable.order_index, minOrderIndex), + lte(assetTable.order_index, maxOrderIndex) + ) + ) + .orderBy(asc(assetTable.order_index)); + + if (assetsInVerse.length === 0) { + continue; + } + + // Recalculate order_index with thousand scale + // Formula: (verse * 1000 + sequential) * 1000 + // sequential starts at 1: 7001000, 7002000, 7003000... + const updates: AssetUpdatePayload[] = []; + let hasChanges = false; + + for (let i = 0; i < assetsInVerse.length; i++) { + const asset = assetsInVerse[i]; + if (!asset) continue; + + const sequential = i + 1; // 1-based + const newOrderIndex = (verse * 1000 + sequential) * 1000; + + // Only update if order_index changed + if (asset.order_index !== newOrderIndex) { + hasChanges = true; + updates.push({ + assetId: asset.id, + order_index: newOrderIndex + }); + } + } + + if (hasChanges && updates.length > 0) { + await batchUpdateAssetMetadata(updates); + console.log( + ` โœ… Verse ${verse}: normalized ${updates.length} of ${assetsInVerse.length} asset(s)` + ); + } + } catch (error) { + console.error(` โŒ Failed to normalize verse ${verse}:`, error); + } + } +} diff --git a/hooks/useAppNavigation.ts b/hooks/useAppNavigation.ts index 2e2fe55f5..7cdb912aa 100644 --- a/hooks/useAppNavigation.ts +++ b/hooks/useAppNavigation.ts @@ -25,6 +25,17 @@ export interface NavigationState { bookQuestData?: Record; questData?: Record; assetData?: Record; + + // Recording view specific data + recordingData?: { + bookChapterLabel?: string; + bookChapterLabelFull?: string; + initialOrderIndex?: number; + verse?: { from: number; to: number }; + nextVerse?: number | null; + limitVerse?: number | null; + label?: string; + }; } export function useAppNavigation() { diff --git a/store/localStore.ts b/store/localStore.ts index 8fc92b4e8..833731a05 100644 --- a/store/localStore.ts +++ b/store/localStore.ts @@ -12,6 +12,7 @@ export type AppView = | 'assets' | 'asset-detail' | 'bible-assets' + | 'recording' | 'profile' | 'notifications' | 'settings' @@ -37,6 +38,17 @@ export interface NavigationStackItem { bookQuestData?: Record; questData?: Record; assetData?: Record; + + // Recording view specific data + recordingData?: { + bookChapterLabel?: string; + bookChapterLabelFull?: string; + initialOrderIndex?: number; + verse?: { from: number; to: number }; + nextVerse?: number | null; + limitVerse?: number | null; + label?: string; + }; } export type Language = typeof language.$inferSelect; diff --git a/views/AppView.tsx b/views/AppView.tsx index 89e41708c..4c4d05438 100644 --- a/views/AppView.tsx +++ b/views/AppView.tsx @@ -35,6 +35,7 @@ const NextGenAssetsView = React.lazy( () => import('@/views/new/NextGenAssetsView') ); const BibleAssetsView = React.lazy(() => import('@/views/new/BibleAssetsView')); +const RecordingView = React.lazy(() => import('@/views/new/RecordingView')); const NextGenProjectsView = React.lazy( () => import('@/views/new/NextGenProjectsView') ); @@ -228,6 +229,8 @@ function AppViewContent() { return ; case 'bible-assets': return ; + case 'recording': + return ; case 'asset-detail': return ; case 'profile': diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index 2cd78dd32..eab772d84 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -108,7 +108,6 @@ import { and, asc, eq, gte, lte } from 'drizzle-orm'; import { ScrollView as GHScrollView } from 'react-native-gesture-handler'; import Sortable from 'react-native-sortables'; import { BibleAssetListItem } from './BibleAssetListItem'; -import BibleRecordingView from './recording/components/BibleRecordingView'; import { BibleSelectionControls } from './recording/components/BibleSelectionControls'; import { RenameAssetDrawer } from './recording/components/RenameAssetDrawer'; import { useSelectionMode } from './recording/hooks/useSelectionMode'; @@ -313,7 +312,7 @@ export default function BibleAssetsView() { currentQuestData, currentBookId } = useCurrentNavigation(); - const { goBack } = useAppNavigation(); + const { goBack, navigate } = useAppNavigation(); const { currentUser } = useAuth(); const audioContext = useAudio(); const queryClient = useQueryClient(); @@ -607,7 +606,6 @@ export default function BibleAssetsView() { : queriedProjectData?.[0]; const isPrivateProject = projectPrivacyData?.private ?? false; - const [showRecording, setShowRecording] = React.useState(false); // Track selected item for recording insertion // Can be an asset (insert after) or a separator (insert at beginning of verse) @@ -1825,8 +1823,9 @@ export default function BibleAssetsView() { // When returning from BibleRecordingView, normalize order_index for recorded verses // Recording uses unit scale (7001001, 7001002) but Assets view uses thousand scale (7001000, 7002000) // This function reads assets from DB and reassigns order_index with thousand scale + // NOTE: This function is now available in assetService.ts and is called by RecordingView // ============================================================================ - const normalizeOrderIndexForVerses = React.useCallback( + const _normalizeOrderIndexForVerses = React.useCallback( async (verses: number[]) => { if (!currentQuestId || verses.length === 0) return; @@ -2868,9 +2867,38 @@ export default function BibleAssetsView() { await audioContext.stopCurrentSound(); } - // Now show recording - setShowRecording(true); - }, [audioContext]); + // Navigate to recording view + const recordingOrderIndex = + selectedForRecording?.orderIndex ?? lastUnassignedOrderIndex; + + navigate({ + view: 'recording', + questId: currentQuestId, + projectId: currentProjectId, + recordingData: { + bookChapterLabel: bookChapterLabel, + bookChapterLabelFull: selectedQuest?.name, + initialOrderIndex: recordingOrderIndex, + verse: selectedForRecording?.metadata?.verse, + nextVerse: nextVerse, + limitVerse: limitVerse, + label: selectedForRecording?.verseName + } + }); + }, [ + audioContext, + navigate, + currentQuestId, + currentProjectId, + bookChapterLabel, + selectedQuest?.name, + selectedForRecording?.orderIndex, + selectedForRecording?.metadata?.verse, + selectedForRecording?.verseName, + lastUnassignedOrderIndex, + nextVerse, + limitVerse + ]); // Cleanup effect: Stop audio when component unmounts React.useEffect(() => { @@ -3296,42 +3324,6 @@ export default function BibleAssetsView() { ); } - // Recording mode UI - if (showRecording) { - // Calculate initialOrderIndex: - // - If an asset is selected, use its order_index - // - Otherwise, use the last unassigned order_index (to continue from where we left off) - // - If no unassigned assets exist, undefined will trigger default in BibleRecordingView - const recordingOrderIndex = - selectedForRecording?.orderIndex ?? lastUnassignedOrderIndex; - - // Pass existing assets as initial data for instant rendering - return ( - { - setShowRecording(false); - setSelectedForRecording(null); // Clear selection when exiting - - // Normalize order_index for recorded verses before refetching - // This converts unit-scale (7001001) to thousand-scale (7001000) - if (recordedVerses && recordedVerses.length > 0) { - await normalizeOrderIndexForVerses(recordedVerses); - } - - // Refetch to show newly recorded assets with normalized order_index - void refetch(); - }} - initialAssets={assets} - label={selectedForRecording?.verseName} - initialOrderIndex={recordingOrderIndex} - verse={selectedForRecording?.metadata?.verse} - bookChapterLabel={bookChapterLabel} - bookChapterLabelFull={selectedQuest?.name} - nextVerse={nextVerse} - limitVerse={limitVerse} - /> - ); - } // Check if quest is published (source is 'synced') // const isPublished = selectedQuest?.source === 'synced'; diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx new file mode 100644 index 000000000..0408f1ae9 --- /dev/null +++ b/views/new/RecordingView.tsx @@ -0,0 +1,2800 @@ +import type { ArrayInsertionWheelHandle } from '@/components/ArrayInsertionWheel'; +import ArrayInsertionWheel from '@/components/ArrayInsertionWheel'; +import { VersePill } from '@/components/VersePill'; +import { Button } from '@/components/ui/button'; +import { Icon } from '@/components/ui/icon'; +import { Text } from '@/components/ui/text'; +import { useAudio } from '@/contexts/AudioContext'; +import { useAuth } from '@/contexts/AuthContext'; +import { renameAsset } from '@/database_services/assetService'; +import { audioSegmentService } from '@/database_services/audioSegmentService'; +import { asset_content_link, project_language_link } from '@/db/drizzleSchema'; +import { system } from '@/db/powersync/system'; +import { useProjectById } from '@/hooks/db/useProjects'; +import { useAppNavigation, useCurrentNavigation } from '@/hooks/useAppNavigation'; +import { normalizeOrderIndexForVerses } from '@/database_services/assetService'; +import { useLocalization } from '@/hooks/useLocalization'; +import { useLocalStore } from '@/store/localStore'; +import { resolveTable } from '@/utils/dbUtils'; +import { + fileExists, + getLocalAttachmentUriWithOPFS, + saveAudioLocally +} from '@/utils/fileUtils'; +import RNAlert from '@blazejkustra/react-native-alert'; +import { toCompilableQuery } from '@powersync/drizzle-driver'; +import AsyncStorage from '@react-native-async-storage/async-storage'; +import { useQueryClient } from '@tanstack/react-query'; +import { and, asc, eq } from 'drizzle-orm'; +import { Audio } from 'expo-av'; +import { + ArrowDownNarrowWide, + ArrowLeft, + ChevronLeft, + ListVideo, + Mic, + PauseIcon, + Plus +} from 'lucide-react-native'; +import React, { useMemo } from 'react'; +import { InteractionManager, View } from 'react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; +import { AssetCard } from './recording/components/AssetCard'; +import { FullScreenVADOverlay } from './recording/components/FullScreenVADOverlay'; +import { RecordingControls } from './recording/components/RecordingControls'; +import { RenameAssetDrawer } from './recording/components/RenameAssetDrawer'; +import { SelectionControls } from './recording/components/SelectionControls'; +import { VADSettingsDrawer } from './recording/components/VADSettingsDrawer'; +import { useSelectionMode } from './recording/hooks/useSelectionMode'; +import { useVADRecording } from './recording/hooks/useVADRecording'; +import { saveRecording } from './recording/services/recordingService'; +import { useHybridData } from './useHybridData'; + +// Feature flag: true = use ArrayInsertionWheel, false = use LegendList +// const USE_INSERTION_WHEEL = true; +const DEBUG_MODE = false; +function debugLog(...args: unknown[]) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (DEBUG_MODE) { + console.log(...args); + } +} + +interface UIAsset { + type: 'asset'; + id: string; + name: string; + created_at: string; + order_index: number; + source: 'local' | 'synced' | 'cloud'; + segmentCount: number; + duration?: number; // Total duration in milliseconds + verse?: { from: number; to: number } | null; // Verse metadata (can be a range like 1-3) +} + +interface VersePillItem { + type: 'pill'; + id: string; // Unique ID for the pill (e.g., 'pill-verse-5') + order_index: number; + verse: { from: number; to: number } | null; // Verse metadata +} + +// Union type for items in the list (assets or verse pills) +type ListItem = UIAsset | VersePillItem; + +// Type guard to check if item is an asset +const isAsset = (item: ListItem): item is UIAsset => item.type === 'asset'; + +// Type guard to check if item is a pill +const isPill = (item: ListItem): item is VersePillItem => item.type === 'pill'; + +// Default order_index for unassigned verses: (999 * 1000 + 1) * 1000 = 999001000 +// Sequence starts at 1, not 0 (e.g., verse 7 โ†’ 7001000, 7002000...) +// The extra *1000 leaves space for future insertions between assets +const DEFAULT_ORDER_INDEX = 999001000; + +// Verse metadata type +interface VerseRange { + from: number; + to: number; +} + +// Asset metadata type (prefixed with _ to allow unused) +interface _AssetMetadata { + verse?: VerseRange; +} + +const RecordingView = () => { + // Get navigation state and functions + const { goBack } = useAppNavigation(); + const navigation = useCurrentNavigation(); + const { currentQuestId, currentProjectId } = navigation; + + // Get recording-specific data from navigation state + const navigationState = useLocalStore((state) => { + const stack = state.navigationStack; + if (!Array.isArray(stack) || stack.length === 0) return null; + return stack[stack.length - 1]!; + }); + + const recordingData = navigationState?.recordingData; + const bookChapterLabel = recordingData?.bookChapterLabel || 'Verse'; + const bookChapterLabelFull = recordingData?.bookChapterLabelFull; + const _initialOrderIndex = recordingData?.initialOrderIndex ?? DEFAULT_ORDER_INDEX; + const _verse = recordingData?.verse; + const nextVerse = recordingData?.nextVerse ?? null; + const limitVerse = recordingData?.limitVerse ?? null; + const _label = recordingData?.label || ''; + + // Log recording data on mount + React.useEffect(() => { + console.log( + `๐Ÿ“ฅ RecordingView data | initialOrderIndex: ${_initialOrderIndex} | label: "${_label}" | verse: ${_verse ? `${_verse.from}-${_verse.to}` : 'null'} | nextVerse: ${nextVerse} | limitVerse: ${limitVerse}` + ); + }, [_initialOrderIndex, _label, _verse, nextVerse, limitVerse]); + + const queryClient = useQueryClient(); + const { t } = useLocalization(); + const { currentUser } = useAuth(); + const { project: currentProject } = useProjectById(currentProjectId); + const audioContext = useAudio(); + const insets = useSafeAreaInsets(); + + // Get target languoid_id from project_language_link + + const { data: targetLanguoidLink = [] } = useHybridData<{ + languoid_id: string | null; + }>({ + dataType: 'project-target-languoid-id', + queryKeyParams: [currentProjectId || ''], + offlineQuery: toCompilableQuery( + system.db + .select({ languoid_id: project_language_link.languoid_id }) + .from(project_language_link) + .where( + and( + eq(project_language_link.project_id, currentProjectId!), + eq(project_language_link.language_type, 'target') + ) + ) + .limit(1) + ), + cloudQueryFn: async () => { + if (!currentProjectId) return []; + const { data, error } = await system.supabaseConnector.client + .from('project_language_link') + .select('languoid_id') + .eq('project_id', currentProjectId) + .eq('language_type', 'target') + .not('languoid_id', 'is', null) + .limit(1) + .overrideTypes<{ languoid_id: string | null }[]>(); + if (error) throw error; + return data; + }, + enableCloudQuery: !!currentProjectId, + enableOfflineQuery: !!currentProjectId + }); + + const targetLanguoidId = targetLanguoidLink[0]?.languoid_id; + + // Recording state + const [isRecording, setIsRecording] = React.useState(false); + const [isVADLocked, setIsVADLocked] = React.useState(false); + + // VAD settings - persisted in local store for consistent UX + // These settings are automatically saved to AsyncStorage and restored on app restart + // Default: threshold=0.03 (normal sensitivity), silenceDuration=1000ms (1 second pause) + const vadThreshold = useLocalStore((state) => state.vadThreshold); + const setVadThreshold = useLocalStore((state) => state.setVadThreshold); + const vadSilenceDuration = useLocalStore((state) => state.vadSilenceDuration); + const setVadSilenceDuration = useLocalStore( + (state) => state.setVadSilenceDuration + ); + + const vadMinSegmentLength = useLocalStore( + + (state) => state.vadMinSegmentLength + ); + + const setVadMinSegmentLength = useLocalStore( + + (state) => state.setVadMinSegmentLength + ); + const vadDisplayMode = useLocalStore((state) => state.vadDisplayMode); + const setVadDisplayMode = useLocalStore((state) => state.setVadDisplayMode); + const [showVADSettings, setShowVADSettings] = React.useState(false); + const [autoCalibrateOnOpen, setAutoCalibrateOnOpen] = React.useState(false); + + // Track current recording order index and verse + const currentRecordingOrderRef = React.useRef(0); + const currentRecordingVerseRef = React.useRef<{ + from: number; + to: number; + } | null>(null); + const vadCounterRef = React.useRef(null); + const dbWriteQueueRef = React.useRef>(Promise.resolve()); + + // Track pending asset names to prevent duplicates when recording multiple assets quickly + const pendingAssetNamesRef = React.useRef>(new Set()); + + // Sequential name counter - persisted per quest in AsyncStorage + // Key format: `bible_recording_counter_${questId}` + // This counter is independent of order_index and VAD mode + const nameCounterRef = React.useRef(1); + const nameCounterLoadedRef = React.useRef(false); + + // Track which verses were recorded during this session + // Used to normalize order_index when returning to BibleAssetsView + const recordedVersesRef = React.useRef>(new Set()); + + // Track if the user is allowed to add a new verse + const allowAddVerseRef = React.useRef(true); + + // Load name counter from AsyncStorage on mount + React.useEffect(() => { + if (!currentQuestId || nameCounterLoadedRef.current) return; + + const loadCounter = async () => { + try { + const key = `bible_recording_counter_${currentQuestId}`; + const saved = await AsyncStorage.getItem(key); + if (saved) { + const value = parseInt(saved, 10); + if (!isNaN(value) && value > 0) { + nameCounterRef.current = value; + console.log( + `๐Ÿ“Š Loaded name counter: ${value} for quest ${currentQuestId.slice(0, 8)}` + ); + } + } + nameCounterLoadedRef.current = true; + } catch (error) { + console.error('Failed to load name counter:', error); + nameCounterLoadedRef.current = true; + } + }; + + void loadCounter(); + }, [currentQuestId]); + + // Helper to save counter to AsyncStorage + const saveNameCounter = React.useCallback( + async (value: number) => { + if (!currentQuestId) return; + try { + const key = `bible_recording_counter_${currentQuestId}`; + await AsyncStorage.setItem(key, String(value)); + console.log( + `๐Ÿ’พ Saved name counter: ${value} for quest ${currentQuestId.slice(0, 8)}` + ); + } catch (error) { + console.error('Failed to save name counter:', error); + } + }, + [currentQuestId] + ); + + // Track which asset is currently playing during play-all + const [currentlyPlayingAssetId, setCurrentlyPlayingAssetId] = React.useState< + string | null + >(null); + // Track if PlayAll is running (for button icon state) + const [isPlayAllRunning, setIsPlayAllRunning] = React.useState(false); + // Ref to track if handlePlayAll is running (for cancellation) + const isPlayAllRunningRef = React.useRef(false); + // Ref to track current playing sound for immediate cancellation + const currentPlayAllSoundRef = React.useRef(null); + + // Track setTimeout IDs for cleanup + const timeoutIdsRef = React.useRef>>( + new Set() + ); + + // Track AbortController for batch loading cleanup + const batchLoadingControllerRef = React.useRef(null); + + // Ref to hold latest audioContext for cleanup (avoids stale closure) + const audioContextCurrentRef = React.useRef(audioContext); + React.useEffect(() => { + audioContextCurrentRef.current = audioContext; + }, [audioContext]); + + // Insertion wheel state + const [insertionIndex, setInsertionIndex] = React.useState(0); + const wheelRef = React.useRef(null); + + // Track footer height for proper scrolling + const [footerHeight, setFooterHeight] = React.useState(0); + const ROW_HEIGHT = 80; + + // Dynamic verse tracking for automatic progression + // Initialize with _verse.from if available, otherwise null (user must click "Add verse" button) + // This ensures the correct verse is used when starting recording + const [currentDynamicVerse, setCurrentDynamicVerse] = React.useState< + number | null + >(_verse?.from ?? null); + + // Persist initial props in refs - these should NOT change during the recording session + // even when invalidateQueries causes re-renders. We capture them once on mount. + // Using useState with initializer function ensures this only runs once + const [persistedProps] = React.useState(() => ({ + nextVerse, + limitVerse, + verse: _verse + })); + const persistedNextVerseRef = React.useRef(persistedProps.nextVerse); + const persistedLimitVerseRef = React.useRef(persistedProps.limitVerse); + const persistedVerseRef = React.useRef(persistedProps.verse); + + // Debounced insertion index to prevent button flickering when scrolling fast + const [debouncedIsAtEnd, setDebouncedIsAtEnd] = React.useState(false); + + // Selection mode for batch operations (merge, delete) + const { + isSelectionMode, + selectedAssetIds, + enterSelection, + toggleSelect, + cancelSelection, + selectMultiple + } = useSelectionMode(); + + // Rename drawer state + const [showRenameDrawer, setShowRenameDrawer] = React.useState(false); + const [renameAssetId, setRenameAssetId] = React.useState(null); + const [renameAssetName, setRenameAssetName] = React.useState(''); + + // Track segment counts for each asset (loaded lazily) + const [assetSegmentCounts, setAssetSegmentCounts] = React.useState< + Map + >(new Map()); + + // Track durations for each asset (loaded lazily) + const [assetDurations, setAssetDurations] = React.useState< + Map + >(new Map()); + + // SESSION-ONLY ITEMS: Assets and verse pills created during this recording session + // When user exits and returns, the list starts with just the initial verse pill + // Assets are still saved to database, but we don't load existing ones + const [sessionItems, setSessionItems] = React.useState(() => { + // Initialize with the initial verse pill + if (!_verse) return []; + const initialVerse = _verse; + const initialPill: VersePillItem = { + type: 'pill', + id: `pill-initial-${_initialOrderIndex}`, + order_index: _initialOrderIndex, + verse: initialVerse + }; + console.log( + `๐Ÿท๏ธ Initial pill created | order_index: ${_initialOrderIndex} | verse: ${initialVerse.from}-${initialVerse.to}` + ); + return [initialPill]; + }); + + // Track the "append" order_index (used when recording at the end of the list) + // Initialized from props or DEFAULT_ORDER_INDEX, increments by 1 for each recording at end + const appendOrderIndexRef = React.useRef(_initialOrderIndex + 1); + + // Helper to add a new asset to the session list + // Replicates the shift logic from recordingService.ts to keep UI in sync with DB + const addSessionAsset = React.useCallback( + (newAsset: { + id: string; + name: string; + order_index: number; + verse?: { from: number; to: number } | null; + }) => { + const targetOrderIndex = newAsset.order_index; + + setSessionItems((prev) => { + // 1. Shift existing items (both assets and pills) with order_index >= targetOrderIndex + // This mirrors the logic in recordingService.ts + const shifted = prev.map((item) => { + if (item.order_index >= targetOrderIndex) { + const itemName = isAsset(item) + ? item.name + : `pill-${item.verse?.from ?? 'null'}`; + console.log( + `๐Ÿ“Š UI Shift: "${itemName}" ${item.order_index} โ†’ ${item.order_index + 1}` + ); + return { ...item, order_index: item.order_index + 1 }; + } + return item; + }); + + // 2. Create new asset with the target order_index and verse + const uiAsset: UIAsset = { + type: 'asset', + id: newAsset.id, + name: newAsset.name, + created_at: new Date().toISOString(), + order_index: targetOrderIndex, + source: 'local', + segmentCount: 1, + duration: undefined, + verse: newAsset.verse ?? null + }; + + if (!newAsset.verse) { + allowAddVerseRef.current = false; + } + + console.log( + `โž• Adding "${newAsset.name}" with order_index: ${targetOrderIndex} | verse: ${newAsset.verse ? `${newAsset.verse.from}-${newAsset.verse.to}` : 'null'}` + ); + + // 3. Add new asset and sort by order_index + const newList = [...shifted, uiAsset]; + return newList.sort((a, b) => { + if (a.order_index === b.order_index) { + // Pills come before assets at the same order_index + if (isPill(a) && isAsset(b)) return -1; + if (isAsset(a) && isPill(b)) return 1; + // Both are same type - sort by created_at for assets, keep order for pills + if (isAsset(a) && isAsset(b)) { + return a.created_at.localeCompare(b.created_at); + } + return 0; + } + return a.order_index > b.order_index ? 1 : -1; + }); + }); + }, + [] + ); + + // Helper to add a new verse pill to the session list + const addVersePill = React.useCallback( + (verse: number, orderIndex: number) => { + const newPill: VersePillItem = { + type: 'pill', + id: `pill-verse-${verse}-${Date.now()}`, + order_index: orderIndex, + verse: { from: verse, to: verse } + }; + + console.log( + `๐Ÿท๏ธ Adding pill for verse ${verse} with order_index: ${orderIndex}` + ); + + setSessionItems((prev) => { + const newList = [...prev, newPill]; + return newList.sort((a, b) => { + if (a.order_index === b.order_index) { + // Pills come before assets at the same order_index + if (isPill(a) && isAsset(b)) return -1; + if (isAsset(a) && isPill(b)) return 1; + if (isAsset(a) && isAsset(b)) { + return a.created_at.localeCompare(b.created_at); + } + return 0; + } + return a.order_index > b.order_index ? 1 : -1; + }); + }); + }, + [] + ); + + // Use session items - filter to get only assets for backward compatibility + const rawAssets = React.useMemo( + () => sessionItems.filter(isAsset), + [sessionItems] + ); + + // All items (assets + pills) for the wheel + const allItems = sessionItems; + + // Normalize assets + // ARCHITECTURE: + // - Asset: A single recording or merged group of recordings + // - Segment: One content_link row (merged assets have multiple segments) + // - Audio file: Individual audio file (each segment has audio[] array) + // + // METADATA (loaded lazily in background): + // - segmentCount: Number of content_link rows for this asset + // - duration: Sum of all audio files' durations across all segments + const assets = React.useMemo((): UIAsset[] => { + const result = rawAssets + .filter((a) => { + const obj = a as { + id?: string; + name?: string; + created_at?: string; + source?: string; + } | null; + return obj?.id && obj.name && obj.created_at && obj.source; + }) + .map((a, index) => { + const obj = a as { + id: string; + name: string; + created_at: string; + order_index?: number | null; + source: 'local' | 'synced' | 'cloud'; + verse?: { from: number; to: number } | null; + }; + // Get segment count and duration from lazy-loaded maps + // Default to 1 segment if not loaded yet, undefined for duration (shows loading state) + const segmentCount = assetSegmentCounts.get(obj.id) ?? 1; + const duration = assetDurations.get(obj.id); // undefined if not loaded yet + + // DEBUG: Log assets with multiple segments + if (segmentCount > 1) { + debugLog( + `๐Ÿ“Š Asset "${obj.name}" (${obj.id.slice(0, 8)}) has ${segmentCount} segments` + ); + } + + return { + type: 'asset' as const, + id: obj.id, + name: obj.name, + created_at: obj.created_at, + order_index: + typeof obj.order_index === 'number' ? obj.order_index : index, + source: obj.source, + segmentCount, + duration, + verse: obj.verse ?? null + }; + }); + + // DEBUG: Summary of segment counts + const multiSegmentAssets = result.filter((a) => a.segmentCount > 1); + if (multiSegmentAssets.length > 0) { + debugLog( + `๐Ÿ“Š Total assets with multiple segments: ${multiSegmentAssets.length}` + ); + } + + return result; + }, [rawAssets, assetSegmentCounts, assetDurations]); + + // Check if we're at the end of the list (for add verse button behavior) + const isAtEndOfList = React.useMemo( + () => allItems.length === 0 || insertionIndex >= allItems.length, + [allItems.length, insertionIndex] + ); + + // Get the item at the current insertion position (center of wheel) + // This can be either an asset or a verse pill + const highlightedItem = React.useMemo(() => { + if (allItems.length === 0) return null; + // insertionIndex can be 0 to allItems.length (inclusive) + // When at the end (insertionIndex >= allItems.length), we still want to show the last item + const idx = Math.min(insertionIndex, allItems.length - 1); + return allItems[idx] ?? null; + }, [allItems, insertionIndex]); + + // Get the highlighted item as an asset (null if it's a pill) + // Prefixed with _ as it may not be used directly but kept for potential future use + const _highlightedAsset = React.useMemo(() => { + if (!highlightedItem || isPill(highlightedItem)) return null; + return highlightedItem; + }, [highlightedItem]); + + // Get verse metadata from highlighted item (works for both assets and pills) + // This can be a range like { from: 1, to: 3 } + const highlightedItemVerse = React.useMemo(() => { + if (!highlightedItem) return null; + return highlightedItem.verse ?? null; + }, [highlightedItem]); + + // Legacy alias for backward compatibility + const highlightedAssetVerse = highlightedItemVerse; + + // Helper to format verse range as text + const formatVerseRange = React.useCallback( + (verse: { from: number; to: number } | null | undefined) => { + if (!verse?.from) return null; + const verseText = + verse.from === verse.to ? `${verse.from}` : `${verse.from}-${verse.to}`; + return `${bookChapterLabel}:${verseText}`; + }, + [bookChapterLabel] + ); + + // Build verse pill text based on context: + // - Always show the verse of the asset in the center of the wheel (highlightedAsset) + // - EXCEPT when user clicked "Add verse" button - then show the new verse + // - If no assets exist, show the initial verse from props or "No Label Assigned" + const versePillText = React.useMemo(() => { + // If user clicked "Add verse" button, show the new dynamic verse + if (currentDynamicVerse !== null) { + return ( + formatVerseRange({ + from: currentDynamicVerse, + to: currentDynamicVerse + }) ?? 'No Label Assigned' + ); + } + + // If there are assets, show the verse of the asset in the center + if (highlightedAssetVerse) { + return formatVerseRange(highlightedAssetVerse) ?? 'No Label Assigned'; + } + + // No assets yet - show the initial verse from props + if (persistedVerseRef.current) { + return formatVerseRange(persistedVerseRef.current) ?? 'No Label Assigned'; + } + + return 'No Label Assigned'; + }, [highlightedAssetVerse, formatVerseRange, currentDynamicVerse]); + + // Debounce logic for showing add verse button + // Uses isAtEndOfList calculated above + React.useEffect(() => { + const timeout = setTimeout(() => { + setDebouncedIsAtEnd(isAtEndOfList); + }, 300); // 300ms debounce + + return () => clearTimeout(timeout); + }, [isAtEndOfList]); + + // Calculate the next verse to add (what the button will show) + // Uses persisted refs to avoid issues with query invalidation re-renders + // If user already clicked Add, show currentDynamicVerse + 1 (if within limit) + // If user hasn't clicked yet, show persisted nextVerse + const verseToAdd = React.useMemo(() => { + const limit = persistedLimitVerseRef.current; + + if (currentDynamicVerse !== null) { + // User already clicked Add - next verse is current + 1 + const next = currentDynamicVerse + 1; + // Check if next is within limit + if (limit !== null && next > limit) { + return null; // No more verses to add + } + return next; + } + // User hasn't clicked Add yet - use persisted nextVerse + return persistedNextVerseRef.current; + }, [currentDynamicVerse]); + + // Show add verse button if: + // 1. At the end of the list (debounced) + // 2. There's a verse available to add (verseToAdd not null) + const showAddVerseButton = React.useMemo( + () => debouncedIsAtEnd && verseToAdd !== null, + [debouncedIsAtEnd, verseToAdd] + ); + + // Log for debugging button visibility and verse pill + React.useEffect(() => { + const highlightedVerseStr = highlightedAssetVerse + ? `${highlightedAssetVerse.from}-${highlightedAssetVerse.to}` + : 'null'; + console.log( + `๐Ÿ”˜ State | insertionIdx: ${insertionIndex} | assetsLen: ${assets.length} | isAtEnd: ${isAtEndOfList} | debouncedIsAtEnd: ${debouncedIsAtEnd} | highlightedVerse: ${highlightedVerseStr} | verseToAdd: ${verseToAdd} | currentDynamic: ${currentDynamicVerse} | pillText: ${versePillText}` + ); + }, [ + insertionIndex, + assets.length, + isAtEndOfList, + debouncedIsAtEnd, + highlightedAssetVerse, + verseToAdd, + currentDynamicVerse, + showAddVerseButton, + versePillText + ]); + + // Handle adding next verse metadata + // When clicked, adds a pill at the end of the list + // The button will then show the next verse (verseToAdd + 1) + const handleAddNextVerse = React.useCallback(() => { + if (verseToAdd === null) return; + + console.log(`โž• Adding verse ${verseToAdd} as pill to list`); + + // Calculate order_index for the first asset of this verse + // Formula: (verse * 1000 + 1) * 1000 + // This positions it at the beginning of the verse range + const newOrderIndex = (verseToAdd * 1000 + 1) * 1000; + + // Update appendOrderIndexRef to point to after this new pill + appendOrderIndexRef.current = newOrderIndex + 1; + + console.log( + `๐Ÿ“Š Adding pill for verse ${verseToAdd} | order_index: ${newOrderIndex} | next append: ${appendOrderIndexRef.current}` + ); + + // Mark that a pill was added (so auto-scroll moves to end) + wasPillAddedRef.current = true; + + // Add the verse pill to the list + addVersePill(verseToAdd, newOrderIndex); + + // Set currentDynamicVerse to this verse (for button calculation) + setCurrentDynamicVerse(verseToAdd); + + // Move insertion index to the end (where the pill was added) + // This is done in the next useEffect that monitors allItems.length change + + // If VAD is active, update recording context to use the new pill + if (isVADLocked) { + const newVerse = { from: verseToAdd, to: verseToAdd }; + currentRecordingVerseRef.current = newVerse; + vadCounterRef.current = newOrderIndex + 1; + console.log( + `๐ŸŽฏ VAD: Updated to verse ${verseToAdd} | order_index: ${newOrderIndex + 1}` + ); + } + }, [verseToAdd, isVADLocked, addVersePill]); + + // Stable item list that only updates when content actually changes + // We intentionally use assetContentKey instead of allItems to prevent re-renders + // when items array reference changes but content is identical + const itemsForWheel = React.useMemo(() => allItems, [allItems]); + + // Clamp insertion index when item count changes + React.useEffect(() => { + const maxIndex = allItems.length; // Can insert at 0..N (after last item) + if (insertionIndex > maxIndex) { + setInsertionIndex(maxIndex); + } + }, [allItems.length, insertionIndex]); + + // Track item count to detect new insertions + const previousItemCountRef = React.useRef(allItems.length); + + // Track if the last recording was in the middle (not at end) + // Used to determine if we should move insertionIndex to the new item + const wasRecordingInMiddleRef = React.useRef(false); + + // Track if a pill was just added (to distinguish from asset recording) + const wasPillAddedRef = React.useRef(false); + + // Auto-scroll behavior differs between list and wheel + React.useEffect(() => { + const currentCount = allItems.length; + const previousCount = previousItemCountRef.current; + + // Only scroll if a new item was added (count increased) + if (currentCount > previousCount && currentCount > 0) { + console.log( + `๐Ÿ“œ Item added | prevCount: ${previousCount} โ†’ ${currentCount} | insertionIndex: ${insertionIndex} | wasInMiddle: ${wasRecordingInMiddleRef.current} | wasPillAdded: ${wasPillAddedRef.current}` + ); + + console.log( + '[recording in the middle]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', + wasRecordingInMiddleRef.current + ); + + const wasInMiddle = wasRecordingInMiddleRef.current; + const wasPillAdded = wasPillAddedRef.current; + + // Reset the flags + wasRecordingInMiddleRef.current = false; + wasPillAddedRef.current = false; + + if (wasPillAdded) { + // A pill was added - move to the end + console.log( + `๐Ÿ“ Pill added - moving to end: ${insertionIndex} โ†’ ${currentCount}` + ); + setInsertionIndex(currentCount); + + // Scroll to the end + const timeoutId = setTimeout(() => { + try { + wheelRef.current?.scrollToInsertionIndex(currentCount, true); + } catch (error) { + console.error('Failed to scroll after pill added:', error); + } + timeoutIdsRef.current.delete(timeoutId); + }, 100); + timeoutIdsRef.current.add(timeoutId); + } else if (wasInMiddle) { + // Recorded in the middle - move to the new asset + const newIndex = insertionIndex + 1; + console.log( + `๐Ÿ“ Moving to new asset (recorded in middle): ${insertionIndex} โ†’ ${newIndex}` + ); + setInsertionIndex(newIndex); + + // Scroll to the new item + const timeoutId = setTimeout(() => { + try { + wheelRef.current?.scrollToInsertionIndex(newIndex, true); + } catch (error) { + console.error('Failed to scroll:', error); + } + timeoutIdsRef.current.delete(timeoutId); + }, 100); + timeoutIdsRef.current.add(timeoutId); + } else { + // Asset appended at the end - move to stay at end + console.log( + `๐Ÿ“ Moving to end (appended): ${insertionIndex} โ†’ ${currentCount}` + ); + setInsertionIndex(currentCount); + + // Scroll to the end + const timeoutId = setTimeout(() => { + try { + wheelRef.current?.scrollToInsertionIndex(currentCount, true); + } catch (error) { + console.error('Failed to scroll:', error); + } + timeoutIdsRef.current.delete(timeoutId); + }, 100); + timeoutIdsRef.current.add(timeoutId); + } + } + + previousItemCountRef.current = currentCount; + }, [allItems.length, insertionIndex]); + + // ============================================================================ + // AUDIO PLAYBACK + // ============================================================================ + + // Fetch audio URIs for an asset + // Includes fallback logic for local-only files when server records are removed + const getAssetAudioUris = React.useCallback( + async (assetId: string): Promise => { + try { + // Get content links from both synced and local tables + const assetContentLinkSynced = resolveTable('asset_content_link', { + localOverride: false + }); + const contentLinksSynced = await system.db + .select() + .from(assetContentLinkSynced) + .where(eq(assetContentLinkSynced.asset_id, assetId)); + + const assetContentLinkLocal = resolveTable('asset_content_link', { + localOverride: true + }); + const contentLinksLocal = await system.db + .select() + .from(assetContentLinkLocal) + .where(eq(assetContentLinkLocal.asset_id, assetId)); + + // Prefer synced links, but merge with local for fallback + const allContentLinks = [...contentLinksSynced, ...contentLinksLocal]; + + // Deduplicate by ID (prefer synced over local) + const seenIds = new Set(); + const uniqueLinks = allContentLinks.filter((link) => { + if (seenIds.has(link.id)) { + return false; + } + seenIds.add(link.id); + return true; + }); + + debugLog( + `๐Ÿ“€ Found ${uniqueLinks.length} content link(s) for asset ${assetId.slice(0, 8)} (${contentLinksSynced.length} synced, ${contentLinksLocal.length} local)` + ); + + if (uniqueLinks.length === 0) { + debugLog('No content links found for asset:', assetId); + return []; + } + + // Get audio values from content links (can be URIs or attachment IDs) + const audioValues = uniqueLinks + .flatMap((link) => { + const audioArray = link.audio ?? []; + debugLog( + ` ๐Ÿ“Ž Content link has ${audioArray.length} audio file(s):`, + audioArray + ); + return audioArray; + }) + .filter((value): value is string => !!value); + + debugLog(`๐Ÿ“Š Total audio files for asset: ${audioValues.length}`); + + if (audioValues.length === 0) { + debugLog('No audio values found in content links'); + return []; + } + + // Process each audio value - can be either a local URI or an attachment ID + const uris: string[] = []; + for (const audioValue of audioValues) { + // Check if this is already a local URI (starts with 'local/' or 'file://') + if (audioValue.startsWith('local/')) { + // It's a direct local URI from saveAudioLocally() + const constructedUri = + await getLocalAttachmentUriWithOPFS(audioValue); + // Check if file exists at constructed path + if (await fileExists(constructedUri)) { + uris.push(constructedUri); + debugLog( + 'โœ… Using direct local URI:', + constructedUri.slice(0, 80) + ); + } else { + // File doesn't exist at expected path - try to find it in attachment queue + debugLog( + `โš ๏ธ Local URI ${audioValue} not found at ${constructedUri}, searching attachment queue...` + ); + + if (system.permAttachmentQueue) { + // Extract filename from local path (e.g., "local/uuid.wav" -> "uuid.wav") + const filename = audioValue.replace(/^local\//, ''); + // Extract UUID part (without extension) for more flexible matching + const uuidPart = filename.split('.')[0]; + + // Search attachment queue by filename or UUID + let attachment = await system.powersync.getOptional<{ + id: string; + filename: string | null; + local_uri: string | null; + }>( + `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR filename LIKE ? OR id = ? OR id LIKE ? LIMIT 1`, + [filename, `%${uuidPart}%`, filename, `%${uuidPart}%`] + ); + + // If not found, try searching all attachments for this asset's content links + if (!attachment && uniqueLinks.length > 0) { + const allAttachmentIds = uniqueLinks + .flatMap((link) => link.audio ?? []) + .filter( + (av): av is string => + typeof av === 'string' && + !av.startsWith('local/') && + !av.startsWith('file://') + ); + if (allAttachmentIds.length > 0) { + const placeholders = allAttachmentIds + .map(() => '?') + .join(','); + attachment = await system.powersync.getOptional<{ + id: string; + filename: string | null; + local_uri: string | null; + }>( + `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id IN (${placeholders}) LIMIT 1`, + allAttachmentIds + ); + } + } + + if (attachment?.local_uri) { + const foundUri = system.permAttachmentQueue.getLocalUri( + attachment.local_uri + ); + // Verify the found file actually exists + if (await fileExists(foundUri)) { + uris.push(foundUri); + debugLog( + `โœ… Found attachment in queue for local URI ${audioValue.slice(0, 20)}` + ); + } else { + debugLog( + `โš ๏ธ Attachment found in queue but file doesn't exist: ${foundUri}` + ); + } + } else { + // Try fallback to local table for alternative audio values + const fallbackLink = contentLinksLocal.find( + (link) => link.asset_id === assetId + ); + if (fallbackLink?.audio) { + for (const fallbackAudioValue of fallbackLink.audio) { + if (fallbackAudioValue.startsWith('file://')) { + if (await fileExists(fallbackAudioValue)) { + uris.push(fallbackAudioValue); + debugLog(`โœ… Found fallback file URI`); + break; + } + } + } + } + } + } + } + } else if (audioValue.startsWith('file://')) { + // Already a full file URI - verify it exists + if (await fileExists(audioValue)) { + uris.push(audioValue); + debugLog('โœ… Using full file URI:', audioValue.slice(0, 80)); + } else { + debugLog(`โš ๏ธ File URI does not exist: ${audioValue}`); + // Try to find in attachment queue by extracting filename from path + if (system.permAttachmentQueue) { + const filename = audioValue.split('/').pop(); + if (filename) { + const attachment = await system.powersync.getOptional<{ + id: string; + filename: string | null; + local_uri: string | null; + }>( + `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR id = ? LIMIT 1`, + [filename, filename] + ); + + if (attachment?.local_uri) { + const foundUri = system.permAttachmentQueue.getLocalUri( + attachment.local_uri + ); + if (await fileExists(foundUri)) { + uris.push(foundUri); + debugLog(`โœ… Found attachment in queue for file URI`); + } + } + } + } + } + } else { + // It's an attachment ID - look it up in the attachment queue + if (!system.permAttachmentQueue) { + // No attachment queue - try fallback to local table + const fallbackLink = contentLinksLocal.find( + (link) => link.asset_id === assetId + ); + if (fallbackLink?.audio) { + for (const fallbackAudioValue of fallbackLink.audio) { + if (fallbackAudioValue.startsWith('local/')) { + const fallbackUri = + await getLocalAttachmentUriWithOPFS(fallbackAudioValue); + if (await fileExists(fallbackUri)) { + uris.push(fallbackUri); + break; + } + } else if (fallbackAudioValue.startsWith('file://')) { + if (await fileExists(fallbackAudioValue)) { + uris.push(fallbackAudioValue); + break; + } + } + } + } + continue; + } + + const attachment = await system.powersync.getOptional<{ + id: string; + local_uri: string | null; + }>( + `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, + [audioValue] + ); + + if (attachment?.local_uri) { + const localUri = system.permAttachmentQueue.getLocalUri( + attachment.local_uri + ); + if (await fileExists(localUri)) { + uris.push(localUri); + debugLog('โœ… Found attachment URI:', localUri.slice(0, 60)); + } + } else { + // Attachment ID not found in queue - try fallback to local table + debugLog( + `โš ๏ธ Attachment ID ${audioValue.slice(0, 8)} not found in queue, checking local table fallback...` + ); + + const fallbackLink = contentLinksLocal.find( + (link) => link.asset_id === assetId + ); + if (fallbackLink?.audio) { + for (const fallbackAudioValue of fallbackLink.audio) { + if (fallbackAudioValue.startsWith('local/')) { + const fallbackUri = + await getLocalAttachmentUriWithOPFS(fallbackAudioValue); + if (await fileExists(fallbackUri)) { + uris.push(fallbackUri); + debugLog( + `โœ… Found fallback local URI for attachment ${audioValue.slice(0, 8)}` + ); + break; + } + } else if (fallbackAudioValue.startsWith('file://')) { + if (await fileExists(fallbackAudioValue)) { + uris.push(fallbackAudioValue); + debugLog( + `โœ… Found fallback file URI for attachment ${audioValue.slice(0, 8)}` + ); + break; + } + } + } + } else { + debugLog(`โš ๏ธ Audio ${audioValue} not downloaded yet`); + } + } + } + } + + return uris; + } catch (error) { + console.error('Failed to fetch audio URIs:', error); + return []; + } + }, + [] + ); + + // Handle asset playback + const handlePlayAsset = React.useCallback( + async (assetId: string) => { + try { + const isThisAssetPlaying = + audioContext.isPlaying && audioContext.currentAudioId === assetId; + + if (isThisAssetPlaying) { + debugLog('โธ๏ธ Stopping asset:', assetId.slice(0, 8)); + await audioContext.stopCurrentSound(); + } else { + debugLog('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); + const uris = await getAssetAudioUris(assetId); + + if (uris.length === 0) { + console.error('โŒ No audio URIs found for asset:', assetId); + return; + } + + if (uris.length === 1 && uris[0]) { + debugLog('โ–ถ๏ธ Playing single segment'); + await audioContext.playSound(uris[0], assetId); + } else if (uris.length > 1) { + debugLog(`โ–ถ๏ธ Playing ${uris.length} segments in sequence`); + await audioContext.playSoundSequence(uris, assetId); + } + } + } catch (error) { + console.error('โŒ Failed to play audio:', error); + } + }, + [audioContext, getAssetAudioUris] + ); + + // Handle play all assets - optimized version with direct control + const handlePlayAll = React.useCallback(async () => { + try { + // Check if already playing - toggle to stop + if (isPlayAllRunningRef.current) { + isPlayAllRunningRef.current = false; + setIsPlayAllRunning(false); + + // Stop current sound immediately + if (currentPlayAllSoundRef.current) { + try { + await currentPlayAllSoundRef.current.stopAsync(); + await currentPlayAllSoundRef.current.unloadAsync(); + currentPlayAllSoundRef.current = null; + } catch (error) { + console.error('Error stopping sound:', error); + } + } + + setCurrentlyPlayingAssetId(null); + debugLog('โธ๏ธ Stopped play all'); + return; + } + + if (itemsForWheel.length === 0) { + console.warn('โš ๏ธ No items to play'); + return; + } + + // Mark as running + isPlayAllRunningRef.current = true; + setIsPlayAllRunning(true); + + debugLog(`๐ŸŽต Starting play all from wheel position ${insertionIndex}`); + + let assetsPlayed = 0; + + // Iterate directly through itemsForWheel starting from insertionIndex + for (let wheelIndex = insertionIndex; wheelIndex < itemsForWheel.length; wheelIndex++) { + // Check if cancelled + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!isPlayAllRunningRef.current) { + debugLog('โธ๏ธ Play all cancelled'); + setCurrentlyPlayingAssetId(null); + return; + } + + const item = itemsForWheel[wheelIndex]; + + // Skip if no item or if it's a pill + if (!item || isPill(item)) { + debugLog(`โญ๏ธ Position ${wheelIndex}: skipping pill`); + continue; + } + + // It's an asset - play it + const asset = item; + + // Get URIs for this asset + const uris = await getAssetAudioUris(asset.id); + if (uris.length === 0) { + debugLog(`โš ๏ธ Position ${wheelIndex}: no URIs for asset ${asset.name}`); + continue; + } + + // HIGHLIGHT THIS ASSET + setCurrentlyPlayingAssetId(asset.id); + + // Scroll to this position in the wheel (wheelIndex is the direct position) + if (wheelRef.current) { + wheelRef.current.scrollItemToTop(wheelIndex - 1, true); + } + + assetsPlayed++; + debugLog( + `โ–ถ๏ธ Position ${wheelIndex}: Playing asset ${asset.name} (${uris.length} segments)` + ); + + // Play all URIs for this asset sequentially + for (const uri of uris) { + // Check if cancelled + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!isPlayAllRunningRef.current) { + setCurrentlyPlayingAssetId(null); + return; + } + + // Play this URI and wait for it to finish + await new Promise((resolve) => { + Audio.Sound.createAsync({ uri }, { shouldPlay: true }) + .then(({ sound }) => { + currentPlayAllSoundRef.current = sound; + + sound.setOnPlaybackStatusUpdate((status) => { + if (!status.isLoaded) return; + + if (status.didJustFinish) { + currentPlayAllSoundRef.current = null; + void sound.unloadAsync().then(() => { + resolve(); + }); + } + }); + }) + .catch((error) => { + console.error('Failed to play audio:', error); + currentPlayAllSoundRef.current = null; + resolve(); + }); + }); + } + } + + if (assetsPlayed === 0) { + console.warn('โš ๏ธ No assets found to play from current position'); + } + + // Done playing all + debugLog('โœ… Finished playing all assets'); + setCurrentlyPlayingAssetId(null); + isPlayAllRunningRef.current = false; + setIsPlayAllRunning(false); + currentPlayAllSoundRef.current = null; + } catch (error) { + console.error('โŒ Failed to play all assets:', error); + setCurrentlyPlayingAssetId(null); + isPlayAllRunningRef.current = false; + setIsPlayAllRunning(false); + currentPlayAllSoundRef.current = null; + } + }, [getAssetAudioUris, insertionIndex, itemsForWheel]); + + // ============================================================================ + // RECORDING HANDLERS + // ============================================================================ + + /** + * CENTRALIZED INSERTION CONTEXT + * This function calculates where and how to insert new recordings + * based on the current wheel position and list state. + * + * Returns: + * - orderIndex: The order_index to use for the new recording + * - verse: The verse metadata to use for the new recording + * - isAtEnd: Whether we're inserting at the end of the list + */ + const getInsertionContext = React.useCallback( + (currentIndex: number = insertionIndex) => { + const isAtEnd = allItems.length === 0 || currentIndex >= allItems.length; + console.log( + '๐Ÿ” getInsertionContext | currentIndex:', + currentIndex, + '| allItems.length:', + allItems.length, + '| isAtEnd:', + isAtEnd + ); + + if (isAtEnd) { + // At end: calculate order_index based on last item, not appendOrderIndexRef + // appendOrderIndexRef is only used as a cache and gets updated after recording + const lastItem = allItems[allItems.length - 1]; + const orderIndex = lastItem + ? lastItem.order_index + 1 + : appendOrderIndexRef.current; // Fallback for empty list + const verse = lastItem?.verse ?? persistedVerseRef.current ?? null; + + console.log( + '๐Ÿ” At END | lastItem order_index:', + lastItem?.order_index, + '| calculated orderIndex:', + orderIndex, + '| appendOrderIndexRef:', + appendOrderIndexRef.current + ); + + return { orderIndex, verse, isAtEnd: true }; + } else { + // In middle: use selected item's context + const selectedItem = allItems[currentIndex]; + const orderIndex = selectedItem + ? selectedItem.order_index + 1 + : currentIndex + 1; + const verse = selectedItem?.verse ?? null; + + return { orderIndex, verse, isAtEnd: false }; + } + }, + [allItems, insertionIndex] + ); + + // Store insertion index in ref to prevent stale closure issues + const insertionIndexRef = React.useRef(insertionIndex); + React.useEffect(() => { + insertionIndexRef.current = insertionIndex; + }, [insertionIndex]); + + // Track if we're currently in the middle of the list (for VAD continuous recording) + // When VAD starts, we capture the position and use same order_index for all segments + // until VAD stops or user moves the wheel + const vadInsertionIndexRef = React.useRef(null); + // Track if VAD was started at the end of the list (append mode) + // This is captured once when VAD activates and doesn't change during the session + const vadIsAtEndRef = React.useRef(false); + + // Initialize VAD counter and verse when VAD mode activates + React.useEffect(() => { + if (isVADLocked && vadCounterRef.current === null) { + // Capture current position when VAD starts + vadInsertionIndexRef.current = insertionIndexRef.current; + + // Get insertion context based on current position + const { + orderIndex, + verse, + isAtEnd: contextIsAtEnd + } = getInsertionContext(insertionIndexRef.current); + + vadCounterRef.current = orderIndex; + currentRecordingVerseRef.current = verse; + + const selectedItem = contextIsAtEnd + ? allItems[allItems.length - 1] + : allItems[insertionIndexRef.current]; + const itemName = selectedItem + ? isPill(selectedItem) + ? `pill-${selectedItem.verse?.from ?? 'null'}` + : selectedItem.name + : 'none'; + + debugLog( + `๐ŸŽฏ VAD initialized ${contextIsAtEnd ? 'at END' : 'in MIDDLE'} | index: ${insertionIndexRef.current} | item: "${itemName}" | order_index: ${orderIndex} | verse: ${verse ? `${verse.from}-${verse.to}` : 'null'}` + ); + } else if (!isVADLocked) { + vadCounterRef.current = null; + vadInsertionIndexRef.current = null; + console.log( + '[INSERTION INDEX REF 000X VAD]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', + vadInsertionIndexRef.current, + insertionIndexRef.current + ); + vadIsAtEndRef.current = false; + } + }, [ + isVADLocked, + allItems, + currentDynamicVerse, + assets.length, + getInsertionContext + ]); + + // Manual recording handlers + const handleRecordingStart = React.useCallback(() => { + if (isRecording) return; + + const currentInsertionIndex = insertionIndexRef.current; + + console.log( + `๐ŸŽฌ Recording START | insertionIndex: ${currentInsertionIndex} | allItems.length: ${allItems.length}` + ); + + // Get insertion context (order_index and verse) based on current position + const { orderIndex, verse, isAtEnd } = getInsertionContext( + currentInsertionIndex + ); + + // Store values for use during recording + currentRecordingOrderRef.current = orderIndex; + currentRecordingVerseRef.current = verse; + + // Track if we're recording in the middle (for auto-scroll behavior) + wasRecordingInMiddleRef.current = !isAtEnd; + + // Update appendOrderIndexRef to point to next position after this recording + // This serves as a fallback for empty lists or initial state + if (isAtEnd) { + appendOrderIndexRef.current = orderIndex + 1; + console.log( + '๐Ÿ“Š Updated appendOrderIndexRef:', + appendOrderIndexRef.current, + '(for next recording at end)' + ); + } + + // If starting recording without verse, disable adding new verses + if (!verse) { + allowAddVerseRef.current = false; + } + + setIsRecording(true); + + const selectedItem = isAtEnd + ? allItems[allItems.length - 1] + : allItems[currentInsertionIndex]; + const itemName = selectedItem + ? isPill(selectedItem) + ? `pill-${selectedItem.verse?.from ?? 'null'}` + : selectedItem.name + : 'none'; + + console.log( + `๐ŸŽฏ Recording ${isAtEnd ? 'at END' : 'in MIDDLE'} | index: ${currentInsertionIndex} | item: "${itemName}" | order_index: ${orderIndex} | verse: ${verse ? `${verse.from}-${verse.to}` : 'null'}` + ); + }, [isRecording, allItems, getInsertionContext]); + + const handleRecordingStop = React.useCallback(() => { + debugLog('๐Ÿ›‘ Manual recording stop'); + setIsRecording(false); + }, []); + + const handleRecordingDiscarded = React.useCallback(() => { + debugLog('๐Ÿ—‘๏ธ Recording discarded'); + setIsRecording(false); + }, []); + + const handleRecordingComplete = React.useCallback( + async (uri: string, _duration: number, _waveformData: number[]) => { + // Recalculate order_index based on current list state + // This ensures each consecutive recording gets a unique incremented order_index + const currentContext = getInsertionContext(insertionIndexRef.current); + const targetOrder = currentContext.orderIndex; + const verseToUse = currentContext.verse; + + // Update refs for next recording in same session + currentRecordingOrderRef.current = targetOrder; + currentRecordingVerseRef.current = verseToUse; + + try { + debugLog('๐Ÿ’พ Saving recording | order_index:', targetOrder); + + // Validate required data + if ( + !currentProjectId || + !currentQuestId || + !currentProject || + !currentUser + ) { + console.error('โŒ Missing required data'); + return; + } + + // Generate name using persistent counter (independent of order_index and VAD mode) + // Counter is persisted per quest in AsyncStorage and increments continuously + const nextNumber = nameCounterRef.current; + nameCounterRef.current++; // Increment immediately to reserve this number + const assetName = String(nextNumber).padStart(3, '0'); + pendingAssetNamesRef.current.add(assetName); + console.log( + `๐Ÿท๏ธ Reserved name: ${assetName} | counter: ${nextNumber} โ†’ ${nameCounterRef.current} | order_index: ${targetOrder}` + ); + + // Native module flushes the file before sending onSegmentComplete event. + // File should be ready, but iOS Simulator may need a moment (handled by retry logic in saveAudioLocally). + + // Save audio file locally (with retry logic for timing issues) + const saveResult = await (async () => { + try { + const savedUri = await saveAudioLocally(uri); + return { success: true as const, uri: savedUri }; + } catch (error) { + // Release the reserved name on error + pendingAssetNamesRef.current.delete(assetName); + console.error('โŒ Failed to save audio file locally:', error); + return { success: false as const, error }; + } + })(); + + if (!saveResult.success) { + // Re-throw to be caught by outer catch block + throw saveResult.error; + } + + const localUri = saveResult.uri; + + // Queue DB write (serialized to prevent race conditions) + dbWriteQueueRef.current = dbWriteQueueRef.current + .then(async () => { + if (!targetLanguoidId) { + throw new Error('Target languoid not found for project'); + } + // Use the verse that was captured when recording started + // This ensures we use the correct verse for middle-of-list recordings + const verseToUse = currentRecordingVerseRef.current; + + const newAssetId = await saveRecording({ + questId: currentQuestId, + projectId: currentProjectId, + targetLanguoidId: targetLanguoidId, + userId: currentUser.id, + orderIndex: targetOrder, + audioUri: localUri, + assetName: assetName, // Pass the reserved name + metadata: verseToUse ? { verse: verseToUse } : null // Pass verse metadata if provided + }); + + // Log the saved asset details + console.log( + `๐Ÿ“ผ Asset saved | name: "${assetName}" | order_index: ${targetOrder} | verse: ${verseToUse ? `${verseToUse.from}-${verseToUse.to}` : 'null'}` + ); + + // Add to session assets list (UI only - not loaded from DB) + addSessionAsset({ + id: newAssetId, + name: assetName, + order_index: targetOrder, + verse: verseToUse + }); + + // Track which verse was recorded (for order_index normalization on return) + // If no verse is assigned, use 999 (UNASSIGNED_VERSE_BASE) + const verseToTrack = verseToUse?.from ?? 999; + recordedVersesRef.current.add(verseToTrack); + debugLog( + `๐Ÿ“‹ Tracked verse ${verseToTrack} for normalization (total: ${recordedVersesRef.current.size})` + ); + + // Save the updated name counter to AsyncStorage + await saveNameCounter(nameCounterRef.current); + + // Release the reserved name after successful save + pendingAssetNamesRef.current.delete(assetName); + debugLog( + `โœ… Released name: ${assetName} (pending: ${pendingAssetNamesRef.current.size})` + ); + }) + .catch((err) => { + console.error('โŒ DB write failed:', err); + // Release the reserved name on error + pendingAssetNamesRef.current.delete(assetName); + throw err; + }); + + await dbWriteQueueRef.current; + + // Invalidate queries to sync order_index after insertions in the middle + // This is needed because recordingService shifts order_index values + await queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + + debugLog('๐Ÿ Recording saved'); + setIsRecording(false); + } catch (error) { + console.error('โŒ Failed to save recording:', error); + setIsRecording(false); + } + }, + [ + currentProjectId, + currentQuestId, + currentProject, + currentUser, + queryClient, + targetLanguoidId, + addSessionAsset, + saveNameCounter, + getInsertionContext + ] + ); + + // VAD segment handlers + const handleVADSegmentStart = React.useCallback(() => { + if (vadCounterRef.current === null) { + console.error('โŒ VAD counter not initialized!'); + return; + } + + const targetOrder = vadCounterRef.current; + // Use the captured isAtEnd state from when VAD was activated + // This prevents issues where assets.length changes during recording + const isAtEnd = vadIsAtEndRef.current; + + // Track if we're recording in the middle (for auto-scroll behavior) + wasRecordingInMiddleRef.current = !isAtEnd; + + debugLog( + `๐ŸŽฌ VAD: Segment starting | order_index: ${targetOrder} | isAtEnd: ${isAtEnd}` + ); + + currentRecordingOrderRef.current = targetOrder; + + // Increment VAD counter for next segment ONLY if appending at end + // If inserting in middle, all recordings get the same order_index + if (isAtEnd) { + vadCounterRef.current = targetOrder + 1; + appendOrderIndexRef.current = vadCounterRef.current; // Keep append ref in sync + } + }, []); + + const handleVADSegmentComplete = React.useCallback( + (uri: string) => { + if (!uri || uri === '') { + debugLog('๐Ÿ—‘๏ธ VAD: Segment discarded'); + return; + } + + debugLog('๐Ÿ“ผ VAD: Segment complete'); + void handleRecordingComplete(uri, 0, []); + }, + [handleRecordingComplete] + ); + + // Hook up native VAD recording + const { + currentEnergy, + isRecording: isVADRecording, + energyShared, + isRecordingShared + } = useVADRecording({ + threshold: vadThreshold, + silenceDuration: vadSilenceDuration, + isVADActive: isVADLocked, + onSegmentStart: handleVADSegmentStart, + onSegmentComplete: handleVADSegmentComplete, + isManualRecording: isRecording + }); + + // Invalidate queries when VAD mode ends + React.useEffect(() => { + if (!isVADLocked) { + void queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + } + }, [isVADLocked, currentQuestId, queryClient]); + + // ============================================================================ + // LAZY LOAD SEGMENT COUNTS + // ============================================================================ + + // Stable reference to raw assets for segment count loading + // Only extract what we need to avoid circular dependencies + const assetMetadata = React.useMemo( + () => + rawAssets + .map((a) => { + const obj = a as { id?: string } | null; + return obj?.id; + }) + .filter((id): id is string => !!id), + [rawAssets] + ); + + const assetIds = React.useMemo( + () => assetMetadata.join(','), + [assetMetadata] + ); + + // Track which asset IDs we've loaded counts for to prevent re-loading + const loadedAssetIdsRef = React.useRef(new Set()); + + // Clear loaded IDs when asset list changes significantly (e.g., after merge/delete) + // This ensures segment counts are re-loaded for modified assets + const previousAssetIdsRef = React.useRef(assetIds); + React.useEffect(() => { + if (previousAssetIdsRef.current !== assetIds) { + // Asset list changed - clear cache for assets that no longer exist + const currentAssetIdSet = new Set(assetMetadata); + const toRemove = Array.from(loadedAssetIdsRef.current).filter( + (id) => !currentAssetIdSet.has(id) + ); + + if (toRemove.length > 0) { + debugLog( + `๐Ÿงน Clearing ${toRemove.length} stale asset segment cache entries` + ); + toRemove.forEach((id) => loadedAssetIdsRef.current.delete(id)); + + // Also clear from state maps + setAssetSegmentCounts((prev) => { + const next = new Map(prev); + toRemove.forEach((id) => next.delete(id)); + return next; + }); + setAssetDurations((prev) => { + const next = new Map(prev); + toRemove.forEach((id) => next.delete(id)); + return next; + }); + } + + previousAssetIdsRef.current = assetIds; + } + }, [assetIds, assetMetadata]); + + // OPTIMIZED: Load segment counts and durations in batches after UI is idle + // This prevents blocking the UI thread during initial render and animations + React.useEffect(() => { + // Check both ref AND state to determine if we need to load + // This ensures we reload when re-entering the view (state is cleared on unmount) + const assetsToLoad = assetMetadata.filter((id) => { + // Load if not in ref (never attempted) OR missing from state (needs reload) + const notInRef = !loadedAssetIdsRef.current.has(id); + const missingFromState = + !assetSegmentCounts.has(id) || !assetDurations.has(id); + return notInRef || missingFromState; + }); + + if (assetsToLoad.length === 0) { + // Nothing new to load - don't even start the async work + return; + } + + // Defer until animations complete + const interactionHandle = InteractionManager.runAfterInteractions(() => { + const controller = new AbortController(); + batchLoadingControllerRef.current = controller; + + // Process assets in batches to prevent blocking + const processBatch = async (startIdx: number) => { + if (controller.signal.aborted) return; + + const BATCH_SIZE = 5; // Process 5 assets at a time + const batch = assetsToLoad.slice(startIdx, startIdx + BATCH_SIZE); + + if (batch.length === 0) { + // All done! + debugLog('โœ… Finished loading all asset metadata'); + return; + } + + debugLog( + `๐Ÿ“Š Loading batch ${Math.floor(startIdx / BATCH_SIZE) + 1}: ${batch.length} assets (${startIdx + 1}-${startIdx + batch.length} of ${assetsToLoad.length})` + ); + + try { + const newCounts = new Map(); + const newDurations = new Map(); + + for (const assetId of batch) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (controller.signal.aborted) break; + + try { + // Query asset_content_link to get audio segments + // ARCHITECTURE EXPLANATION: + // - Each asset can have multiple segments (merged assets) + // - Each segment is one row in asset_content_link + // - Each segment can have one or more audio files in its audio[] array + // + // COUNTS: + // - Segment count = number of content_link rows + // - Audio file count = total audio files across all segments + // - Duration = sum of all audio files' durations + const contentLinks = + await system.db.query.asset_content_link.findMany({ + columns: { + id: true, + audio: true + }, + where: eq(asset_content_link.asset_id, assetId), + orderBy: asc(asset_content_link.created_at) + }); + + // DEBUG: Log raw query result + debugLog( + `๐Ÿ”Ž Query result for asset ${assetId.slice(0, 8)}:`, + contentLinks.length, + 'rows found' + ); + if (contentLinks.length > 0) { + debugLog( + ` First row ID: ${contentLinks[0]?.id.slice(0, 8)}, audio count: ${contentLinks[0]?.audio?.length ?? 0}` + ); + if (contentLinks.length > 1) { + debugLog( + ` Second row ID: ${contentLinks[1]?.id.slice(0, 8)}, audio count: ${contentLinks[1]?.audio?.length ?? 0}` + ); + } + } else { + console.warn( + `โš ๏ธ NO content_link rows found for asset ${assetId.slice(0, 8)}!` + ); + } + + // SEGMENT COUNT: Number of content_link rows (each row = one segment) + const segmentCount = contentLinks.length || 1; + newCounts.set(assetId, segmentCount); + + // DEBUG: Log segment count for this asset + debugLog( + `๐Ÿ” Asset ${assetId.slice(0, 8)} segment count: ${segmentCount} ${segmentCount > 1 ? 'โœ… MULTI-SEGMENT' : '(single)'}` + ); + + // AUDIO FILES: Extract all audio file references from all segments + // This flattens the audio arrays from all content_link rows + const audioValues = contentLinks + .flatMap((link) => link.audio ?? []) + .filter((value): value is string => !!value); + + // DEBUG: Log audio values found + debugLog( + `๐ŸŽต Asset ${assetId.slice(0, 8)} has ${audioValues.length} audio file(s) across ${segmentCount} segment(s) - loading durations...` + ); + + // DURATION: Load and sum all audio file durations + let totalDuration = 0; + + for (const audioValue of audioValues) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (controller.signal.aborted) break; + + try { + // Get the full URI for this audio + let audioUri: string | null = null; + if (audioValue.startsWith('local/')) { + audioUri = await getLocalAttachmentUriWithOPFS(audioValue); + } else if (audioValue.startsWith('file://')) { + audioUri = audioValue; + } else if (system.permAttachmentQueue) { + // It's an attachment ID + const attachment = await system.powersync.getOptional<{ + id: string; + local_uri: string | null; + }>( + `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, + [audioValue] + ); + if (attachment?.local_uri) { + audioUri = system.permAttachmentQueue.getLocalUri( + attachment.local_uri + ); + } + } + + if (audioUri) { + // Load audio file to get duration + const { sound } = await Audio.Sound.createAsync({ + uri: audioUri + }); + const status = await sound.getStatusAsync(); + await sound.unloadAsync(); + + if (status.isLoaded && status.durationMillis) { + totalDuration += status.durationMillis; + } + } + } catch (err) { + // Skip this segment if we can't load it + console.warn(`Failed to load duration for segment:`, err); + } + } + + if (totalDuration > 0) { + newDurations.set(assetId, totalDuration); + debugLog( + `โฑ๏ธ Asset ${assetId.slice(0, 8)} total duration: ${Math.round(totalDuration / 1000)}s` + ); + } else { + // Set duration to 0 to mark as loaded (prevents infinite retries) + // AssetCard will only show duration if it's > 0, so 0 won't be displayed + newDurations.set(assetId, 0); + debugLog( + `โš ๏ธ Asset ${assetId.slice(0, 8)} has no duration (${audioValues.length} audio files found) - marked as loaded` + ); + } + + loadedAssetIdsRef.current.add(assetId); + } catch (err) { + // If query fails for any asset, default to 1 segment and 0 duration + // This marks it as loaded (prevents infinite retries) + console.warn(`Failed to load data for asset ${assetId}:`, err); + newCounts.set(assetId, 1); + newDurations.set(assetId, 0); + loadedAssetIdsRef.current.add(assetId); + } + } + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (controller.signal.aborted) { + return; + } else { + if (newCounts.size > 0) { + // Merge with existing counts + setAssetSegmentCounts((prev) => { + const merged = new Map(prev); + for (const [id, count] of newCounts) { + merged.set(id, count); + } + return merged; + }); + debugLog( + `โœ… Batch loaded segment counts for ${newCounts.size} asset${newCounts.size > 1 ? 's' : ''}` + ); + } + + if (newDurations.size > 0) { + // Merge with existing durations + setAssetDurations((prev) => { + const merged = new Map(prev); + for (const [id, duration] of newDurations) { + merged.set(id, duration); + } + return merged; + }); + debugLog( + `โœ… Batch loaded durations for ${newDurations.size} asset${newDurations.size > 1 ? 's' : ''}` + ); + } + + // Schedule next batch with a frame delay to keep UI responsive + const timeoutId = setTimeout(() => { + timeoutIdsRef.current.delete(timeoutId); + void processBatch(startIdx + BATCH_SIZE); + }, 16); // One frame delay (60fps) + timeoutIdsRef.current.add(timeoutId); + } + } catch (error) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (controller.signal.aborted) { + return; + } else { + console.error('Failed to load asset metadata batch:', error); + // Continue with next batch even if this one failed + setTimeout(() => { + void processBatch(startIdx + BATCH_SIZE); + }, 16); + } + } + }; + + // Start processing from first batch + void processBatch(0); + + return () => { + controller.abort(); + }; + }); + + return () => { + interactionHandle.cancel(); + // Abort controller if it exists + if (batchLoadingControllerRef.current) { + batchLoadingControllerRef.current.abort(); + batchLoadingControllerRef.current = null; + } + // Clear any pending timeouts + const timeoutIds = timeoutIdsRef.current; + timeoutIds.forEach((id) => clearTimeout(id)); + timeoutIds.clear(); + }; + // Only depend on assetIds and assetMetadata - NOT on the state Maps + // The Maps are checked inside the effect with .has(), so we don't need them as dependencies + // Including them causes the effect to re-run every time durations are updated, which + // triggers unnecessary re-checks even though loadedAssetIdsRef prevents actual re-loading + }, [assetIds, assetMetadata]); + + // ============================================================================ + // ASSET OPERATIONS (Delete, Merge) + // ============================================================================ + + const handleDeleteLocalAsset = React.useCallback( + async (assetId: string) => { + try { + await audioSegmentService.deleteAudioSegment(assetId); + + // Remove from session assets list + setSessionItems((prev) => prev.filter((a) => a.id !== assetId)); + + await queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + } catch (e) { + console.error('Failed to delete local asset', e); + } + }, + [queryClient, currentQuestId] + ); + + const handleMergeDownLocal = React.useCallback( + async (index: number) => { + try { + const first = assets[index]; + const second = assets[index + 1]; + if (!first || !second || !currentUser) return; + if (first.source === 'cloud' || second.source === 'cloud') return; + + const contentLocal = resolveTable('asset_content_link', { + localOverride: true + }); + const secondContent = await system.db + .select() + .from(contentLocal) + .where(eq(contentLocal.asset_id, second.id)); + + for (const c of secondContent) { + if (!c.audio) continue; + await system.db.insert(contentLocal).values({ + asset_id: first.id, + source_language_id: c.source_language_id, // Deprecated field, kept for backward compatibility + languoid_id: c.languoid_id ?? c.source_language_id ?? null, // Use languoid_id if available, fallback to source_language_id + text: c.text || '', + audio: c.audio, + download_profiles: [currentUser.id] + }); + } + + await audioSegmentService.deleteAudioSegment(second.id); + + // Remove merged asset from session list (second one gets deleted) + setSessionItems((prev) => prev.filter((a) => a.id !== second.id)); + + // Force re-load of segment count for the merged asset + debugLog( + `๐Ÿ”„ Forcing segment count reload for merged asset: ${first.id}` + ); + loadedAssetIdsRef.current.delete(first.id); + setAssetSegmentCounts((prev) => { + const next = new Map(prev); + next.delete(first.id); + return next; + }); + setAssetDurations((prev) => { + const next = new Map(prev); + next.delete(first.id); + return next; + }); + + await queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + } catch (e) { + console.error('Failed to merge local assets', e); + } + }, + [assets, currentUser, queryClient, currentQuestId] + ); + + const handleBatchMergeSelected = React.useCallback(() => { + const selectedOrdered = assets.filter( + (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' + ); + if (selectedOrdered.length < 2) return; + + RNAlert.alert( + 'Merge Assets', + `Are you sure you want to merge ${selectedOrdered.length} assets? The audio segments will be combined into the first selected asset, and the others will be deleted.`, + [ + { + text: 'Cancel', + style: 'cancel' + }, + { + text: 'Merge', + style: 'destructive', + onPress: () => { + void (async () => { + try { + if (!currentUser) return; + + const target = selectedOrdered[0]!; + const rest = selectedOrdered.slice(1); + const contentLocal = resolveTable('asset_content_link', { + localOverride: true + }); + + for (const src of rest) { + const srcContent = await system.db + .select() + .from(contentLocal) + .where(eq(contentLocal.asset_id, src.id)); + + for (const c of srcContent) { + if (!c.audio) continue; + await system.db.insert(contentLocal).values({ + asset_id: target.id, + source_language_id: c.source_language_id, // Deprecated field, kept for backward compatibility + languoid_id: + c.languoid_id ?? c.source_language_id ?? null, // Use languoid_id if available, fallback to source_language_id + text: c.text || '', + audio: c.audio, + download_profiles: [currentUser.id] + }); + } + + await audioSegmentService.deleteAudioSegment(src.id); + } + + // Remove merged assets from session list (all except target get deleted) + const deletedIds = new Set(rest.map((a) => a.id)); + setSessionItems((prev) => + prev.filter((a) => !deletedIds.has(a.id)) + ); + + // Force re-load of segment count for the merged target asset + debugLog( + `๐Ÿ”„ Forcing segment count reload for merged asset: ${target.id}` + ); + loadedAssetIdsRef.current.delete(target.id); + setAssetSegmentCounts((prev) => { + const next = new Map(prev); + next.delete(target.id); + return next; + }); + setAssetDurations((prev) => { + const next = new Map(prev); + next.delete(target.id); + return next; + }); + + cancelSelection(); + await queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + + debugLog('โœ… Batch merge completed'); + } catch (e) { + console.error('Failed to batch merge local assets', e); + RNAlert.alert( + 'Error', + 'Failed to merge assets. Please try again.' + ); + } + })(); + } + } + ] + ); + }, [ + assets, + selectedAssetIds, + currentUser, + cancelSelection, + queryClient, + currentQuestId + ]); + + const handleBatchDeleteSelected = React.useCallback(() => { + const selectedOrdered = assets.filter( + (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' + ); + if (selectedOrdered.length < 1) return; + + RNAlert.alert( + 'Delete Assets', + `Are you sure you want to delete ${selectedOrdered.length} asset${selectedOrdered.length > 1 ? 's' : ''}? This action cannot be undone.`, + [ + { + text: 'Cancel', + style: 'cancel' + }, + { + text: 'Delete', + style: 'destructive', + onPress: () => { + void (async () => { + try { + for (const asset of selectedOrdered) { + await audioSegmentService.deleteAudioSegment(asset.id); + } + + // Remove deleted assets from session list + const deletedIds = new Set(selectedOrdered.map((a) => a.id)); + setSessionItems((prev) => + prev.filter((a) => !deletedIds.has(a.id)) + ); + + cancelSelection(); + await queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + + debugLog( + `โœ… Batch delete completed: ${selectedOrdered.length} assets` + ); + } catch (e) { + console.error('Failed to batch delete local assets', e); + RNAlert.alert( + 'Error', + 'Failed to delete assets. Please try again.' + ); + } + })(); + } + } + ] + ); + }, [assets, selectedAssetIds, cancelSelection, queryClient, currentQuestId]); + + // ============================================================================ + // SELECT ALL / DESELECT ALL + // ============================================================================ + + // Calculate if all local assets are selected + const allSelected = React.useMemo(() => { + if (!isSelectionMode || assets.length === 0) return false; + const selectableAssets = assets.filter((a) => a.source !== 'cloud'); + if (selectableAssets.length === 0) return false; + return selectableAssets.every((a) => selectedAssetIds.has(a.id)); + }, [isSelectionMode, assets, selectedAssetIds]); + + // Handle select all / deselect all + const handleSelectAll = React.useCallback(() => { + if (allSelected) { + // Deselect all + selectMultiple([]); + } else { + // Select all local assets (exclude cloud assets) + const selectableIds = assets + .filter((a) => a.source !== 'cloud') + .map((a) => a.id); + selectMultiple(selectableIds); + } + }, [allSelected, assets, selectMultiple]); + + // ============================================================================ + // RENAME ASSET + // ============================================================================ + + const handleRenameAsset = React.useCallback( + (assetId: string, currentName: string | null) => { + setRenameAssetId(assetId); + setRenameAssetName(currentName ?? ''); + setShowRenameDrawer(true); + }, + [] + ); + + const handleSaveRename = React.useCallback( + async (newName: string) => { + if (!renameAssetId) return; + + try { + // renameAsset will validate that this is a local-only asset + // and throw if it's synced (immutable) + await renameAsset(renameAssetId, newName); + + // Update the name directly in sessionAssets to reflect in UI immediately + // This is safe because the database was already updated successfully + setSessionItems((prev) => + prev.map((asset) => + asset.id === renameAssetId ? { ...asset, name: newName } : asset + ) + ); + + // Invalidate queries to refresh the list in parent view + await queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + + debugLog('โœ… Asset renamed successfully'); + } catch (error) { + console.error('โŒ Failed to rename asset:', error); + if (error instanceof Error) { + console.warn('โš ๏ธ Rename blocked:', error.message); + RNAlert.alert('Error', error.message); + } + } + }, + [renameAssetId, queryClient, currentQuestId] + ); + + // ============================================================================ + // CLEANUP ON UNMOUNT + // ============================================================================ + + // Cleanup effect: Clear all refs and stop audio when component unmounts + // This prevents memory leaks when navigating away from the recording view + React.useEffect(() => { + // Capture refs in variables to avoid stale closure warnings + const pendingAssetNames = pendingAssetNamesRef.current; + const loadedAssetIds = loadedAssetIdsRef.current; + const timeoutIds = timeoutIdsRef.current; + + return () => { + // Stop audio playback if playing (access via ref for latest state) + if (audioContextCurrentRef.current.isPlaying) { + void audioContextCurrentRef.current.stopCurrentSound(); + } + + // Stop PlayAll if running + if (isPlayAllRunningRef.current) { + isPlayAllRunningRef.current = false; + + // Stop current sound immediately + if (currentPlayAllSoundRef.current) { + void currentPlayAllSoundRef.current.stopAsync().then(() => { + void currentPlayAllSoundRef.current?.unloadAsync(); + currentPlayAllSoundRef.current = null; + }).catch(() => { + // Ignore errors during cleanup + currentPlayAllSoundRef.current = null; + }); + } + } + + // Clear all refs to free memory + pendingAssetNames.clear(); + loadedAssetIds.clear(); + + // Abort any ongoing batch loading + if (batchLoadingControllerRef.current) { + batchLoadingControllerRef.current.abort(); + batchLoadingControllerRef.current = null; + } + + // Clear all pending timeouts + timeoutIds.forEach((id) => clearTimeout(id)); + timeoutIds.clear(); + + // Reset state maps (they'll be recreated on remount) + setAssetSegmentCounts(new Map()); + setAssetDurations(new Map()); + setCurrentlyPlayingAssetId(null); + setIsPlayAllRunning(false); + + debugLog('๐Ÿงน Cleaned up BibleRecordingView on unmount'); + }; + }, []); + + // ============================================================================ + // RENDER HELPERS + // ============================================================================ + + // Stable callbacks for AssetCard (don't change unless handlers change) + const stableHandlePlayAsset = React.useCallback(handlePlayAsset, [ + handlePlayAsset + ]); + const stableToggleSelect = React.useCallback(toggleSelect, [toggleSelect]); + const stableEnterSelection = React.useCallback(enterSelection, [ + enterSelection + ]); + const stableHandleDeleteLocalAsset = React.useCallback( + handleDeleteLocalAsset, + [handleDeleteLocalAsset] + ); + const stableHandleMergeDownLocal = React.useCallback(handleMergeDownLocal, [ + handleMergeDownLocal + ]); + const stableHandleRenameAsset = React.useCallback(handleRenameAsset, [ + handleRenameAsset + ]); + + // ============================================================================ + // OPTIMIZED CALLBACKS MAP - Prevents creating new functions in wheelChildren + // ============================================================================ + + // Create a memoized factory for asset callbacks + // This prevents creating new inline functions in wheelChildren useMemo + const createAssetCallbacks = React.useCallback( + (assetId: string) => ({ + onPress: () => { + if (isSelectionMode) { + stableToggleSelect(assetId); + } else { + void stableHandlePlayAsset(assetId); + } + }, + onLongPress: () => { + stableEnterSelection(assetId); + }, + onPlay: () => { + void stableHandlePlayAsset(assetId); + } + }), + [ + isSelectionMode, + stableToggleSelect, + stableHandlePlayAsset, + stableEnterSelection + ] + ); + + // Create a Map of callbacks per asset (only recreates when dependencies change) + // This is much more efficient than creating new functions in the render loop + const assetCallbacksMap = React.useMemo(() => { + const map = new Map< + string, + { + onPress: () => void; + onLongPress: () => void; + onPlay: () => void; + } + >(); + + itemsForWheel.forEach((item) => { + if (isAsset(item)) { + map.set(item.id, createAssetCallbacks(item.id)); + } + }); + + return map; + }, [itemsForWheel, createAssetCallbacks]); + + // Lazy renderItem for ArrayInsertionWheel + // OPTIMIZED: Only renders items when they become visible (virtualizaรงรฃo) + // No audioContext.position/duration dependencies - progress now uses SharedValues! + // This is much more efficient than pre-creating all children + const renderWheelItem = React.useCallback( + (item: ListItem, index: number) => { + // Render verse pill items differently from asset items + if (isPill(item)) { + const pillText = item.verse + ? (formatVerseRange(item.verse) ?? 'No Label') + : 'No Label'; + return ( + + + + ); + } + + // Asset item rendering + // Check if this asset is playing individually OR if it's the currently playing asset during play-all + const isThisAssetPlayingIndividually = + audioContext.isPlaying && audioContext.currentAudioId === item.id; + const isThisAssetPlayingInPlayAll = + isPlayAllRunning && currentlyPlayingAssetId === item.id; + const isThisAssetPlaying = + isThisAssetPlayingIndividually || isThisAssetPlayingInPlayAll; + const isSelected = selectedAssetIds.has(item.id); + + // Check if next item is an asset (not a pill) and not from cloud + const nextItem = itemsForWheel[index + 1]; + const canMergeDown = + index < itemsForWheel.length - 1 && + nextItem && + isAsset(nextItem) && + nextItem.source !== 'cloud'; + + // Duration from lazy-loaded metadata + const duration = item.duration; + + // Get stable callbacks from Map (avoids creating new functions) + const callbacks = assetCallbacksMap.get(item.id); + + // Fallback if callbacks not found (shouldn't happen, but defensive) + if (!callbacks) { + console.warn(`Missing callbacks for asset ${item.id}`); + return ; + } + + return ( + + ); + }, + [ + formatVerseRange, + audioContext.isPlaying, + audioContext.currentAudioId, + isPlayAllRunning, + currentlyPlayingAssetId, + selectedAssetIds, + isSelectionMode, + itemsForWheel, + assetCallbacksMap, + stableHandleDeleteLocalAsset, + stableHandleMergeDownLocal, + stableHandleRenameAsset + ] + ); + + // SESSION-ONLY MODE: No loading/error states needed + // The list starts empty and only shows assets recorded in this session + + // Show full-screen overlay when VAD is locked and display mode is fullscreen + const showFullScreenOverlay = isVADLocked && vadDisplayMode === 'fullscreen'; + + const addButtonComponent = useMemo(() => { + // Apply same conditions as floating button (line 3050) + const shouldShow = + !isSelectionMode && + showAddVerseButton && + verseToAdd !== null && + !isVADRecording && + allowAddVerseRef.current; + + if (!shouldShow) return null; + + return ( + + + + + + + ); + }, [ + isSelectionMode, + showAddVerseButton, + verseToAdd, + isVADRecording, + handleAddNextVerse + ]); + + const boundaryComponent = useMemo( + () => ( + + + + {/* Language-agnostic visual: mic + circle-plus = "add recording here" */} + + + + + + {addButtonComponent} + + ), + [addButtonComponent] + ); + + return ( + + {/* Full-screen VAD overlay - takes over entire screen */} + {showFullScreenOverlay && ( + { + // Cancel VAD mode + setIsVADLocked(false); + }} + /> + )} + + {/* Header */} + + + + + {bookChapterLabelFull || bookChapterLabel} + + {/* + {t('doRecord')} + */} + + + {assets.length > 0 && ( + + )} + + {assets.length} {t('assets').toLowerCase()} + + + + + {/* {(isRecording || isVADRecording)? ( */} + {isVADLocked ? ( + + {highlightedItemVerse + ? `${t('recording')}: ${formatVerseRange(highlightedItemVerse)}` + : t('recording')} + + ) : ( + + {highlightedItemVerse + ? `${t('recordTo')}: ${formatVerseRange(highlightedItemVerse)}` + : `${t('noLabelSelected')}`} + + )} + + {/* Scrollable list area - full height with padding for controls */} + + + + ref={wheelRef} + value={insertionIndex} + onChange={(newIndex) => { + const item = itemsForWheel[newIndex]; + const itemDesc = item + ? isPill(item) + ? `pill-${item.verse?.from ?? 'null'}` + : item.name + : 'end'; + console.log( + `๐ŸŽก Wheel onChange: ${insertionIndex} โ†’ ${newIndex} | ${itemDesc} ${item?.order_index}` + ); + setInsertionIndex(newIndex); + }} + rowHeight={ROW_HEIGHT} + className="h-full flex-1" + bottomInset={footerHeight} + boundaryComponent={boundaryComponent} + data={itemsForWheel} + renderItem={renderWheelItem} + /> + + + + {/* Bottom controls - absolutely positioned */} + + {isSelectionMode ? ( + + + + ) : ( + setShowVADSettings(true)} + onAutoCalibratePress={() => { + setAutoCalibrateOnOpen(true); + setShowVADSettings(true); + }} + currentEnergy={currentEnergy} + vadThreshold={vadThreshold} + energyShared={energyShared} + isRecordingShared={isRecordingShared} + displayMode={vadDisplayMode} + /> + )} + + + {/* Rename drawer */} + { + setShowRenameDrawer(open); + if (!open) { + setRenameAssetId(null); + } + }} + onSave={handleSaveRename} + /> + + {/* VAD Settings Drawer */} + { + setShowVADSettings(open); + // Reset auto-calibrate flag when drawer closes + if (!open) { + setAutoCalibrateOnOpen(false); + } + }} + minSegmentLength={vadMinSegmentLength} + onMinSegmentLengthChange={setVadMinSegmentLength} + threshold={vadThreshold} + onThresholdChange={setVadThreshold} + silenceDuration={vadSilenceDuration} + onSilenceDurationChange={setVadSilenceDuration} + isVADLocked={isVADLocked} + displayMode={vadDisplayMode} + onDisplayModeChange={setVadDisplayMode} + autoCalibrateOnOpen={autoCalibrateOnOpen} + energyShared={energyShared} + /> + + ); +}; + +export default RecordingView; From 41ffa9681217f5813625fa3c3b8e7445af6706d4 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 31 Jan 2026 17:26:05 -0800 Subject: [PATCH 004/143] Fixed tap and hold timing issues --- components/WalkieTalkieRecorder.tsx | 167 ++++++++++++++++++++++++---- 1 file changed, 145 insertions(+), 22 deletions(-) diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index c7ebf038e..110ccdaa4 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -69,9 +69,18 @@ const WalkieTalkieRecorder: React.FC = ({ const [recording, setRecording] = useState(null); const [recordingDuration, setRecordingDuration] = useState(0); // Permission check removed - handled by parent RecordingControls via canRecord prop - const isPressedRef = useRef(false); const isActivatingRef = useRef(false); const pressStartTimeRef = useRef(null); + // Track when startRecording() has been called but isRecording prop hasn't updated yet + const isPendingStartRef = useRef(false); + // Cancellation flag - set when user releases during async setup + const shouldCancelRecordingRef = useRef(false); + + // ============================================================================ + // BUSY LOCK - Prevents race conditions during state transitions + // ============================================================================ + // When true, ignores new press events to prevent conflicting actions + const isBusyRef = useRef(false); // Track all recorded samples for final waveform data const [recordedSamples, setRecordedSamples] = useState([]); @@ -114,8 +123,43 @@ const WalkieTalkieRecorder: React.FC = ({ isVADActiveRef.current = isVADActive; isVADActiveShared.value = isVADActive; isRecordingShared.value = isRecording; + + // Clear pending start flag when recording actually starts + if (isRecording) { + isPendingStartRef.current = false; + } }, [isVADActive, isRecording, isRecordingShared, isVADActiveShared]); + // ============================================================================ + // RIPPLE SYNC EFFECT - Ensures ripple matches actual state + // ============================================================================ + // This is a safety net: if state changes externally (or due to race conditions), + // this effect ensures the ripple animation matches the actual recording/VAD state + useEffect(() => { + const shouldBeActive = isVADActive || isRecording; + + if (shouldBeActive) { + // If we should be active but ripple is not at 1, snap it to 1 + // (This handles cases where state changed before animation completed) + if (rippleProgress.value < 0.9) { + rippleProgress.value = withTiming(1, { duration: 100 }); + rippleOpacity.value = withTiming(0, { duration: 100 }); + } + } else { + // If we should be inactive but ripple is not at 0, reset it + // (This is the main sync: ensures ripple resets when recording/VAD stops) + if (rippleProgress.value > 0.1) { + cancelAnimation(rippleProgress); + cancelAnimation(rippleOpacity); + rippleProgress.value = withTiming(0, { duration: 200 }); + rippleOpacity.value = withTiming(0, { duration: 200 }); + } + + // Also clear busy state when becoming inactive + isBusyRef.current = false; + } + }, [isVADActive, isRecording, rippleProgress, rippleOpacity]); + // Append a live sample for recording playback const appendLiveSample = (amplitude01: number) => { @@ -211,6 +255,14 @@ const WalkieTalkieRecorder: React.FC = ({ // Permission check removed - parent RecordingControls ensures canRecord=true // before this component is even rendered/interactive + // Reset cancellation flag at start + shouldCancelRecordingRef.current = false; + + // โœ… Notify parent IMMEDIATELY - we're in "recording mode" now + // This ensures isRecording is true synchronously, preventing race conditions + // where user releases before async setup completes + onRecordingStart(); + // Heavy operations - but user already sees feedback await Audio.setAudioModeAsync({ allowsRecordingIOS: true, @@ -235,6 +287,14 @@ const WalkieTalkieRecorder: React.FC = ({ const activeRecording = result.recording; activeRecording.setProgressUpdateInterval(9); + // Check if we were cancelled during async setup (user released early) + if (shouldCancelRecordingRef.current) { + console.log('โš ๏ธ Recording cancelled during setup - cleaning up'); + await activeRecording.stopAndUnloadAsync(); + shouldCancelRecordingRef.current = false; + return; + } + const duration = performance.now() - startTime; console.log(`โœ… Recording ready in ${duration.toFixed(0)}ms`); @@ -244,9 +304,6 @@ const WalkieTalkieRecorder: React.FC = ({ // Track energy range for logging const energyRange = { min: Infinity, max: -Infinity }; - // โœ… Notify parent AFTER recording is ready - onRecordingStart(); - // Set up status monitoring activeRecording.setOnRecordingStatusUpdate((status) => { if (status.isRecording) { @@ -287,7 +344,11 @@ const WalkieTalkieRecorder: React.FC = ({ const stopRecording = async () => { if (!recording) { - console.warn('โš ๏ธ stopRecording called but no active recording'); + // Recording object not created yet (user released during async setup) + // Set cancellation flag so startRecording() knows to abort + console.log('โš ๏ธ stopRecording called before recording created - signaling cancellation'); + shouldCancelRecordingRef.current = true; + onRecordingStop(); return; } @@ -337,14 +398,56 @@ const WalkieTalkieRecorder: React.FC = ({ } }; + // ============================================================================ + // CLEANUP HELPER - Resets all interaction state + // ============================================================================ + const cleanupInteractionState = () => { + // Clear any pending timers + if (activationTimer.current) { + clearTimeout(activationTimer.current); + activationTimer.current = null; + } + + // Reset refs + isActivatingRef.current = false; + pressStartTimeRef.current = null; + isPendingStartRef.current = false; + }; + const handlePressIn = () => { + // ============================================================================ + // GUARD: Prevent interactions during busy state or active recording + // ============================================================================ + if (isBusyRef.current) { + console.log('๐Ÿ”’ Busy - ignoring press'); + return; + } + + // If already recording (push-to-talk), ignore new presses + if (isRecording && !isVADActive) { + console.log('๐Ÿ”’ Already recording - ignoring press'); + return; + } + // If VAD is active, allow tap to stop it if (isVADActive) { pressStartTimeRef.current = Date.now(); - isPressedRef.current = true; // Set pressed state so handlePressOut can process the stop return; } + // ============================================================================ + // CLEANUP: Cancel any existing activation in progress + // ============================================================================ + if (isActivatingRef.current) { + console.log('โš ๏ธ Canceling previous activation'); + cleanupInteractionState(); + // Cancel existing ripple animation + cancelAnimation(rippleProgress); + cancelAnimation(rippleOpacity); + rippleProgress.value = 0; + rippleOpacity.value = 0; + } + console.log('๐ŸŽ™๏ธ Press in detected, starting activation timer...'); // Record press start time for tap detection @@ -352,25 +455,26 @@ const WalkieTalkieRecorder: React.FC = ({ void mediumHaptic(); - isPressedRef.current = true; isActivatingRef.current = true; // ============================================================================ // START RIPPLE ANIMATION // ============================================================================ + // Cancel any existing animation first + cancelAnimation(rippleProgress); + cancelAnimation(rippleOpacity); + // Initialize ripple: starts at center, 50% opacity white rippleProgress.value = 0; rippleOpacity.value = 0.5; // Animate ripple expanding from center over ACTIVATION_TIME - // The ripple expands outward, revealing red underneath as white overlay fades rippleProgress.value = withTiming(1, { - duration: ACTIVATION_TIME, // 200ms - matches activation time + duration: ACTIVATION_TIME, easing: Easing.linear, }); // Fade white overlay to reveal red underneath - // White starts at 50% opacity, fades to 0% as red shows through rippleOpacity.value = withTiming(0, { duration: ACTIVATION_TIME, easing: Easing.linear, @@ -379,23 +483,27 @@ const WalkieTalkieRecorder: React.FC = ({ // ============================================================================ // ACTIVATION TIMER // ============================================================================ - // Start recording after ACTIVATION_TIME completes activationTimer.current = setTimeout(() => { + // Double-check we're still in activating state (prevents stale timer execution) + if (!isActivatingRef.current) { + console.log('โš ๏ธ Activation timer fired but no longer activating - ignoring'); + return; + } + console.log('โœ… Activation complete, starting recording...'); isActivatingRef.current = false; + + // Mark that we're pending start - this bridges the gap between + // calling startRecording() and isRecording prop becoming true + isPendingStartRef.current = true; + void heavyHaptic(); - - requestAnimationFrame(() => { - void startRecording(); - }); + void startRecording(); }, ACTIVATION_TIME); }; const handlePressOut = () => { - if (!isPressedRef.current) return; - void mediumHaptic(); - isPressedRef.current = false; const pressDuration = pressStartTimeRef.current ? Date.now() - pressStartTimeRef.current @@ -406,11 +514,20 @@ const WalkieTalkieRecorder: React.FC = ({ if (isVADActive) { console.log('๐Ÿ‘† Tap detected - stopping VAD mode'); void successHaptic(); + + // Set busy to prevent rapid re-activation + isBusyRef.current = true; + setTimeout(() => { + isBusyRef.current = false; + }, 300); // Brief lock after stopping VAD + onVADActiveChange?.(false); // ============================================================================ // RESET RIPPLE ANIMATION (VAD stopped) // ============================================================================ + cancelAnimation(rippleProgress); + cancelAnimation(rippleOpacity); rippleProgress.value = withTiming(0, { duration: 200 }); rippleOpacity.value = withTiming(0, { duration: 200 }); return; @@ -427,7 +544,6 @@ const WalkieTalkieRecorder: React.FC = ({ // If press duration < ACTIVATION_TIME, it's a tap - start VAD // NOTE: Don't reset ripple animation here - let it complete since VAD is starting - // The button will turn red (VAD active) and ripple animation completes naturally if (pressDuration < ACTIVATION_TIME) { console.log('๐Ÿ‘† Tap detected - starting VAD mode'); void successHaptic(); @@ -436,6 +552,8 @@ const WalkieTalkieRecorder: React.FC = ({ // Edge case: released after ACTIVATION_TIME but before timer fired // Reset ripple since nothing is starting console.log('โŒ Released before activation complete, canceling...'); + cancelAnimation(rippleProgress); + cancelAnimation(rippleOpacity); rippleProgress.value = withTiming(0, { duration: 150 }); rippleOpacity.value = withTiming(0, { duration: 150 }); } @@ -443,15 +561,20 @@ const WalkieTalkieRecorder: React.FC = ({ return; } - // If recording was active, stop it - if (isRecording) { - console.log('๐Ÿ›‘ Stopping recording immediately'); + // If recording was active OR pending start, stop it + // isPendingStartRef handles the race condition where user releases after + // activation timer fired but before isRecording prop updated + if (isRecording || isPendingStartRef.current) { + console.log('๐Ÿ›‘ Stopping recording immediately', { isRecording, isPending: isPendingStartRef.current }); + isPendingStartRef.current = false; void stopRecording(); } // ============================================================================ // RESET RIPPLE ANIMATION (recording stopped) // ============================================================================ + cancelAnimation(rippleProgress); + cancelAnimation(rippleOpacity); rippleProgress.value = withTiming(0, { duration: 200 }); rippleOpacity.value = withTiming(0, { duration: 200 }); }; From 299f795b26f8559d40470508f210af0e308e8a66 Mon Sep 17 00:00:00 2001 From: Rafael Winter Date: Sat, 31 Jan 2026 20:30:42 -0800 Subject: [PATCH 005/143] Update UI components --- services/localizations.ts | 8 + utils/fileUtils.ts | 55 +++- views/new/RecordingView.tsx | 13 +- .../recording/components/RecordAssetCard.tsx | 268 ++++++++++++++++++ .../components/RecordSelectionControls.tsx | 76 +++++ 5 files changed, 406 insertions(+), 14 deletions(-) create mode 100644 views/new/recording/components/RecordAssetCard.tsx create mode 100644 views/new/recording/components/RecordSelectionControls.tsx diff --git a/services/localizations.ts b/services/localizations.ts index 4707d57db..6b2804252 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -1525,6 +1525,14 @@ export const localizations = { nepali: 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {count} เคเคธเฅ‡เคŸ(เคนเคฐเฅ‚) เคฎเฅ‡เคŸเคพเค‰เคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›? เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' }, + selected: { + english: 'selected', + spanish: 'seleccionado(s)', + brazilian_portuguese: 'selecionado(s)', + tok_pisin: 'selected', + indonesian: 'terpilih', + nepali: 'เคšเคฏเคจ เค—เคฐเคฟเคเค•เฅ‹' + }, delete: { english: 'Delete', spanish: 'Eliminar', diff --git a/utils/fileUtils.ts b/utils/fileUtils.ts index 6c736a823..89af611ab 100644 --- a/utils/fileUtils.ts +++ b/utils/fileUtils.ts @@ -249,15 +249,23 @@ export async function saveAudioLocally(uri: string) { const newUri = `local/${uuid.v4()}.${extension}`; console.log('๐Ÿ” Saving audio file locally:', cleanSourceUri, newUri); - // Retry logic for file existence - iOS Simulator can have timing issues - // where the file isn't immediately available after Swift writes it - const maxRetries = 5; - const retryDelayMs = 100; + // Initial delay to allow native module to finish writing the file + // This is especially important for Android where the file write may not be fully flushed + console.log('โณ Waiting 100ms for native module to flush file...'); + await new Promise((resolve) => setTimeout(resolve, 100)); + + // Retry logic for file existence - iOS Simulator and Android can have timing issues + // where the file isn't immediately available after native module writes it + const maxRetries = 10; // Increased from 5 to 10 + const retryDelayMs = 200; // Increased from 100ms to 200ms let fileExistsNow = false; + console.log(`๐Ÿ” Checking if file exists: ${cleanSourceUri}`); + for (let attempt = 0; attempt < maxRetries; attempt++) { fileExistsNow = await fileExists(cleanSourceUri); if (fileExistsNow) { + console.log(`โœ… File found on attempt ${attempt + 1}/${maxRetries}`); break; } @@ -266,14 +274,29 @@ export async function saveAudioLocally(uri: string) { `โณ File not found yet (attempt ${attempt + 1}/${maxRetries}), retrying in ${retryDelayMs}ms...` ); await new Promise((resolve) => setTimeout(resolve, retryDelayMs)); + } else { + console.error( + `โŒ File not found after ${maxRetries} attempts (total ${maxRetries * retryDelayMs}ms)` + ); } } if (!fileExistsNow) { // Get file info for better error message const fileInfo = await getFileInfo(cleanSourceUri); - const errorMsg = `File does not exist after ${maxRetries} attempts: ${cleanSourceUri}. File info: ${JSON.stringify(fileInfo)}`; + const errorMsg = `File does not exist after ${maxRetries} attempts (${maxRetries * retryDelayMs}ms total): ${cleanSourceUri}. File info: ${JSON.stringify(fileInfo)}`; console.error('โŒ', errorMsg); + + // Additional debugging: check if parent directory exists + const parentDir = getDirectory(cleanSourceUri); + console.error('โŒ Checking parent directory:', parentDir); + try { + const dirInfo = await getFileInfo(parentDir); + console.error('โŒ Parent directory info:', JSON.stringify(dirInfo)); + } catch (dirError) { + console.error('โŒ Failed to get parent directory info:', dirError); + } + throw new Error(errorMsg); } @@ -292,14 +315,32 @@ export async function saveAudioLocally(uri: string) { await moveFile(cleanSourceUri, newPath); } catch (error) { // Enhanced error logging for debugging + const sourceStillExists = await fileExists(cleanSourceUri); console.error('โŒ moveFile error details:', { error, sourceUri: cleanSourceUri, targetUri: newPath, - sourceExists: await fileExists(cleanSourceUri), + sourceExists: sourceStillExists, targetExists: await fileExists(newPath) }); - throw error; + + // Fallback: try to copy instead of move + // This can happen if the source file was already moved/deleted or has permission issues + if (sourceStillExists) { + console.log('โš ๏ธ Move failed but source exists, attempting copy as fallback...'); + try { + await copyFile(cleanSourceUri, newPath); + console.log('โœ… Copy succeeded, now deleting source...'); + await deleteIfExists(cleanSourceUri); + console.log('โœ… File saved via copy + delete fallback'); + } catch (copyError) { + console.error('โŒ Copy fallback also failed:', copyError); + throw error; // Throw original error + } + } else { + // Source doesn't exist - this is the main error + throw error; + } } console.log('โœ… Audio file saved locally:', getLocalAttachmentUri(newUri)); diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index 0408f1ae9..601fe36f2 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -6,13 +6,12 @@ import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; import { useAudio } from '@/contexts/AudioContext'; import { useAuth } from '@/contexts/AuthContext'; -import { renameAsset } from '@/database_services/assetService'; +import { normalizeOrderIndexForVerses, renameAsset } from '@/database_services/assetService'; import { audioSegmentService } from '@/database_services/audioSegmentService'; import { asset_content_link, project_language_link } from '@/db/drizzleSchema'; import { system } from '@/db/powersync/system'; import { useProjectById } from '@/hooks/db/useProjects'; import { useAppNavigation, useCurrentNavigation } from '@/hooks/useAppNavigation'; -import { normalizeOrderIndexForVerses } from '@/database_services/assetService'; import { useLocalization } from '@/hooks/useLocalization'; import { useLocalStore } from '@/store/localStore'; import { resolveTable } from '@/utils/dbUtils'; @@ -39,11 +38,11 @@ import { import React, { useMemo } from 'react'; import { InteractionManager, View } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; -import { AssetCard } from './recording/components/AssetCard'; import { FullScreenVADOverlay } from './recording/components/FullScreenVADOverlay'; +import { RecordAssetCard } from './recording/components/RecordAssetCard'; +import { RecordSelectionControls } from './recording/components/RecordSelectionControls'; import { RecordingControls } from './recording/components/RecordingControls'; import { RenameAssetDrawer } from './recording/components/RenameAssetDrawer'; -import { SelectionControls } from './recording/components/SelectionControls'; import { VADSettingsDrawer } from './recording/components/VADSettingsDrawer'; import { useSelectionMode } from './recording/hooks/useSelectionMode'; import { useVADRecording } from './recording/hooks/useVADRecording'; @@ -2493,7 +2492,7 @@ const RecordingView = () => { } return ( - { {/* Bottom controls - absolutely positioned */} {isSelectionMode ? ( - - + & { + source: HybridDataSource | 'optimistic'; + created_at?: string; + order_index?: number | null; + }; + index: number; + isSelected: boolean; + isSelectionMode: boolean; + isPlaying: boolean; + // progress removed - now calculated from SharedValues for 0 re-renders! + duration?: number; // Duration in milliseconds + segmentCount?: number; // Number of audio segments in this asset + // Custom progress for play-all mode (0-100 percentage) + // If provided, this overrides the default global progress calculation + customProgress?: SharedValue; + onPress: () => void; + onLongPress: () => void; + onPlay: (assetId: string) => void; + onRename?: (assetId: string, currentName: string | null) => void; + // Note: These callbacks are still passed but no longer used (batch operations only) + onDelete?: (assetId: string) => void; + onMerge?: (index: number) => void; + onEdit?: (assetId: string, assetName: string) => void; + canMergeDown?: boolean; +} + +// Format duration in milliseconds to MM:SS +function formatDuration(ms: number): string { + const totalSeconds = Math.floor(ms / 1000); + const minutes = Math.floor(totalSeconds / 60); + const seconds = totalSeconds % 60; + return `${minutes}:${seconds.toString().padStart(2, '0')}`; +} + +function RecordAssetCardInternal({ + asset, + index, + isSelected, + isSelectionMode, + isPlaying, + duration, + segmentCount, + customProgress, + onPress, + onLongPress, + onPlay, + onRename +}: AssetCardProps) { + const audioContext = useAudio(); + + // CRITICAL: Only local-only assets can be renamed/edited/deleted (synced assets are immutable) + const isLocal = asset.source === 'local'; + // Renameable = local and not currently saving + const isRenameable = isLocal; + + // ============================================================================ + // REANIMATED ANIMATIONS (Run on native thread for better performance) + // ============================================================================ + + // NEW: Calculate progress from SharedValues (no re-renders!) + // This runs entirely on the UI thread at 60fps + // If customProgress is provided (for play-all mode), use that instead + const animatedProgress = useDerivedValue(() => { + 'worklet'; + if (!isPlaying) return 0; + + // Use custom progress if provided (for play-all mode with asset-specific progress) + if (customProgress) { + return customProgress.value; + } + + // Otherwise, use global progress calculation + const pos = audioContext.positionShared.value; + const dur = audioContext.durationShared.value; + + if (dur <= 0) return 0; + + // Calculate progress percentage (0-100) + const progressPercent = (pos / dur) * 100; + return Math.min(100, Math.max(0, progressPercent)); + }, [isPlaying, customProgress]); + + // Progress bar style (interpolate to slightly lead at the end) + const progressBarStyle = useAnimatedStyle(() => { + 'worklet'; + const progress = animatedProgress.value; + const width = interpolate( + progress, + [0, 95, 100], + [0, 97, 100], + Extrapolation.CLAMP + ); + return { + width: `${width}%` + }; + }); + + // Handle card press: play/pause in normal mode, toggle selection in selection mode + const handleCardPress = React.useCallback(() => { + if (isSelectionMode) { + onPress(); // Toggle selection + } else { + onPlay(asset.id); // Play/pause audio + } + }, [isSelectionMode, onPress, onPlay, asset.id]); + + const { t } = useLocalization(); + return ( + + {/* Progress bar overlay - positioned absolutely behind content (Reanimated on native thread) */} + {isPlaying && ( + + + + )} + + {/* Content - z-index ensures it appears above progress bar */} + + + + {index + 1} + + + + + {/* Label with rename functionality - prevents card play when tapped */} + { + if (!isSelectionMode && isRenameable && onRename) { + onRename(asset.id, asset.name); + } + }} + disabled={isSelectionMode || !isRenameable || !onRename} + activeOpacity={0.7} + > + + {asset.name || t('unnamedAsset')} + + + {segmentCount && segmentCount > 1 && ( + + + {segmentCount} + + + )} + + + + {asset.created_at && new Date(asset.created_at).toLocaleString()} + + + + {duration !== undefined && duration > 0 && ( + + {formatDuration(duration)} + + )} + + {/* Selection checkbox - only show for local assets in selection mode */} + {isSelectionMode && isLocal && ( + + + + )} + + + ); +} + +/** + * Memoized AssetCard to prevent unnecessary re-renders + * Only re-renders when props actually change + * + * OPTIMIZATION: progress removed from comparison - now uses SharedValues + * This eliminates 10 re-renders/second during audio playback! + */ +export const RecordAssetCard = React.memo(RecordAssetCardInternal, (prev, next) => { + // Custom equality check - only re-render if these props change + return ( + prev.asset.id === next.asset.id && + prev.asset.name === next.asset.name && + prev.asset.source === next.asset.source && + prev.index === next.index && + prev.isSelected === next.isSelected && + prev.isSelectionMode === next.isSelectionMode && + prev.isPlaying === next.isPlaying && + // prev.progress removed - uses SharedValues now! + prev.duration === next.duration && + prev.segmentCount === next.segmentCount && + prev.canMergeDown === next.canMergeDown && + // Compare customProgress SharedValue reference (needed when it changes from undefined to SharedValue) + prev.customProgress === next.customProgress && + // Callbacks are stable (wrapped in useCallback in parent), so we can skip checking them + prev.onPress === next.onPress && + prev.onLongPress === next.onLongPress && + prev.onPlay === next.onPlay && + prev.onRename === next.onRename && + prev.onDelete === next.onDelete && + prev.onMerge === next.onMerge && + prev.onEdit === next.onEdit + ); +}); diff --git a/views/new/recording/components/RecordSelectionControls.tsx b/views/new/recording/components/RecordSelectionControls.tsx new file mode 100644 index 000000000..74004e65a --- /dev/null +++ b/views/new/recording/components/RecordSelectionControls.tsx @@ -0,0 +1,76 @@ +/** + * SelectionControls - Batch operation controls when in selection mode + * + * Shows: + * - Selected count + * - Cancel button + * - Merge button (requires 2+ selections) + * - Delete button (requires 1+ selections) + */ + +import { Button } from '@/components/ui/button'; +import { Icon } from '@/components/ui/icon'; +import { Text } from '@/components/ui/text'; +import { useLocalization } from '@/hooks/useLocalization'; +import { ListChecks, ListX, Merge, Trash2, X } from 'lucide-react-native'; +import React from 'react'; +import { View } from 'react-native'; + +interface RecordSelectionControlsProps { + selectedCount: number; + onCancel: () => void; + onMerge: () => void; + onDelete: () => void; + allowSelectAll?: boolean; + allSelected?: boolean; + onSelectAll?: () => void; +} + +export const RecordSelectionControls = React.memo(function RecordSelectionControls({ + selectedCount, + onCancel, + onMerge, + onDelete, + allowSelectAll = false, + allSelected = false, + onSelectAll +}: RecordSelectionControlsProps) { + const { t } = useLocalization(); + return ( + + {selectedCount} {t('selected')} + + + {allowSelectAll && onSelectAll && ( + + )} + + + + + + + ); +}); From 5e64f9504b31aacf85ea8e7f623b3865cc39f6b9 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 31 Jan 2026 20:49:53 -0800 Subject: [PATCH 006/143] Added help tooltip and localisation for everything --- components/RecordingHelpDialog.tsx | 81 +++++++++++++++++ components/WalkieTalkieRecorder.tsx | 6 +- services/localizations.ts | 91 +++++++++++++++++++ utils/storage.ts | 33 ++++++- .../components/BibleRecordingView.tsx | 4 + .../components/RecordingControls.tsx | 48 ++++++++-- .../components/RecordingViewSimplified.tsx | 4 + 7 files changed, 257 insertions(+), 10 deletions(-) create mode 100644 components/RecordingHelpDialog.tsx diff --git a/components/RecordingHelpDialog.tsx b/components/RecordingHelpDialog.tsx new file mode 100644 index 000000000..77dc3ea70 --- /dev/null +++ b/components/RecordingHelpDialog.tsx @@ -0,0 +1,81 @@ +import { Button } from '@/components/ui/button'; +import { Text } from '@/components/ui/text'; +import { useLocalization } from '@/hooks/useLocalization'; +import { storage } from '@/utils/storage'; +import React, { useEffect, useState } from 'react'; +import { Modal, Pressable, View } from 'react-native'; + +interface RecordingHelpDialogProps { + onClose?: () => void; +} + +export function RecordingHelpDialog({ onClose }: RecordingHelpDialogProps) { + const { t } = useLocalization(); + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + // Check if help has been shown before + const checkIfShouldShow = async () => { + const hasBeenShown = await storage.hasRecordingHelpBeenShown(); + if (!hasBeenShown) { + setIsVisible(true); + } + }; + checkIfShouldShow(); + }, []); + + const handleOk = async () => { + await storage.setRecordingHelpShown(); + setIsVisible(false); + onClose?.(); + }; + + const handleBackdropPress = async () => { + await storage.setRecordingHelpShown(); + setIsVisible(false); + onClose?.(); + }; + + return ( + + + e.stopPropagation()} + > + {/* Title */} + + {t('recordingHelpTitle')} + + + {/* Content */} + + + 1. {t('tap')}{' '} + {t('recordingHelpVAD')} + + + 2. {t('pressAndHold')}{' '} + {t('recordingHelpPushToTalk')} + + + + {/* Button */} + + + + + + + ); +} diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index 110ccdaa4..2eae59c33 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -1,5 +1,6 @@ import { useAuth } from '@/contexts/AuthContext'; import { useHaptic } from '@/hooks/useHaptic'; +import { useLocalization } from '@/hooks/useLocalization'; import { cn } from '@/utils/styleUtils'; import { Audio } from 'expo-av'; import { MicIcon, Square } from 'lucide-react-native'; @@ -66,6 +67,7 @@ const WalkieTalkieRecorder: React.FC = ({ const heavyHaptic = useHaptic('heavy'); const successHaptic = useHaptic('success'); const { currentUser: _currentUser } = useAuth(); + const { t } = useLocalization(); const [recording, setRecording] = useState(null); const [recordingDuration, setRecordingDuration] = useState(0); // Permission check removed - handled by parent RecordingControls via canRecord prop @@ -679,14 +681,14 @@ const WalkieTalkieRecorder: React.FC = ({ - Stop Recording + {t('stopRecording')} ) : ( - {isRecording ? 'Recording...' : 'Start Recording'} + {isRecording ? t('recording') : t('startRecording')} )} diff --git a/services/localizations.ts b/services/localizations.ts index 4707d57db..391a78b03 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -5866,6 +5866,97 @@ export const localizations = { nepali: 'เคจเฅเคฏเฅ‚เคจเคคเคฎ เค–เคฃเฅเคก เคฒเคฎเฅเคฌเคพเค‡เคฒเฅ‡ เคธเฅ‡เคŸ เค—เคฐเคฟเคเค•เฅ‹ เค…เคตเคงเคฟเคญเคจเฅเคฆเคพ เค•เคฎ เคงเฅ‡เคฐเฅˆ เค›เฅ‹เคŸเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคธเฅ‡เคญ เค—เคฐเฅเคจเคฌเคพเคŸ เคฐเฅ‹เค•เฅเค›, เคœเคธเฅเคคเฅˆ เค–เฅ‹เค•เฅ€ เคตเคพ เคขเฅ‹เค•เคพ เค เฅ‹เค•เฅเคจเฅ‡ เค†เคตเคพเคœเฅค' }, + vadRecordingSettings: { + english: 'VAD recording settings', + spanish: 'Configuraciรณn de grabaciรณn VAD', + brazilian_portuguese: 'Configuraรงรตes de gravaรงรฃo VAD', + tok_pisin: 'VAD rekoding seting', + indonesian: 'Pengaturan perekaman VAD', + nepali: 'VAD เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚' + }, + startRecording: { + english: 'Start Recording', + spanish: 'Iniciar Grabaciรณn', + brazilian_portuguese: 'Iniciar Gravaรงรฃo', + tok_pisin: 'Statim Rekodim', + indonesian: 'Mulai Merekam', + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + }, + stopRecording: { + english: 'Stop Recording', + spanish: 'Detener Grabaciรณn', + brazilian_portuguese: 'Parar Gravaรงรฃo', + tok_pisin: 'Stopim Rekodim', + indonesian: 'Hentikan Perekaman', + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจเฅเคนเฅ‹เคธเฅ' + }, + recording: { + english: 'Recording...', + spanish: 'Grabando...', + brazilian_portuguese: 'Gravando...', + tok_pisin: 'Rekodim...', + indonesian: 'Merekam...', + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™...' + }, + vadRecordingActive: { + english: 'VAD recording active', + spanish: 'Grabaciรณn VAD activa', + brazilian_portuguese: 'Gravaรงรฃo VAD ativa', + tok_pisin: 'VAD rekoding i wok', + indonesian: 'Perekaman VAD aktif', + nepali: 'VAD เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเค•เฅเคฐเคฟเคฏ' + }, + recordingHelpTitle: { + english: 'Two ways to record', + spanish: 'Dos formas de grabar', + brazilian_portuguese: 'Duas formas de gravar', + tok_pisin: 'Tupela rot bilong rekodim', + indonesian: 'Dua cara merekam', + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅ‡ เคฆเฅเคˆ เคคเคฐเคฟเค•เคพ' + }, + recordingHelpVAD: { + english: + 'the record button to start Voice Activity Detection (VAD) recording. This will automatically create new audio segments whenever you pause as you talk. Tap again to end the VAD session.', + spanish: + 'el botรณn de grabaciรณn para iniciar la grabaciรณn con Detecciรณn de Actividad de Voz (VAD). Esto crearรก automรกticamente nuevos segmentos de audio cada vez que hagas una pausa mientras hablas. Toca de nuevo para finalizar la sesiรณn VAD.', + brazilian_portuguese: + 'o botรฃo de gravaรงรฃo para iniciar a gravaรงรฃo com Detecรงรฃo de Atividade de Voz (VAD). Isso criarรก automaticamente novos segmentos de รกudio sempre que vocรช pausar enquanto fala. Toque novamente para encerrar a sessรฃo VAD.', + tok_pisin: + 'baten bilong rekodim bilong statim Voice Activity Detection (VAD) rekoding. Em bai wokim nupela ol hap taim yu stopim toktok. Paitim gen bilong pinisim VAD sesion.', + indonesian: + 'tombol rekam untuk memulai perekaman Voice Activity Detection (VAD). Ini akan secara otomatis membuat segmen audio baru setiap kali Anda berhenti sejenak saat berbicara. Ketuk lagi untuk mengakhiri sesi VAD.', + nepali: + 'เคญเฅเคตเคพเค‡เคธ เคเค•เฅเคŸเคฟเคญเคฟเคŸเฅ€ เคกเคฟเคŸเฅ‡เค•เฅเคถเคจ (VAD) เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจ เคฐเฅ‡เค•เคฐเฅเคก เคฌเคŸเคจ เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคฏเคธเคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฌเฅ‹เคฒเฅเคฆเคพ เคฐเฅ‹เค•เฅเคฆเคพ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคจเคฏเคพเค เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค VAD เคธเคคเฅเคฐ เคธเคฎเคพเคชเฅเคค เค—เคฐเฅเคจ เคซเฅ‡เคฐเคฟ เคŸเฅเคฏเคพเคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + }, + recordingHelpPushToTalk: { + english: 'to record a single segment, release to stop recording.', + spanish: + 'para grabar un solo segmento, suelta para detener la grabaciรณn.', + brazilian_portuguese: + 'para gravar um รบnico segmento, solte para parar a gravaรงรฃo.', + tok_pisin: + 'bilong rekodim wanpela hap, lusim bilong stopim rekoding.', + indonesian: + 'untuk merekam satu segmen, lepaskan untuk menghentikan perekaman.', + nepali: + 'เคเค‰เคŸเคพ เค–เคฃเฅเคก เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ, เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจ เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + }, + tap: { + english: 'Tap', + spanish: 'Toca', + brazilian_portuguese: 'Toque', + tok_pisin: 'Paitim', + indonesian: 'Ketuk', + nepali: 'เคŸเฅเคฏเคพเคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + }, + pressAndHold: { + english: 'Press and hold', + spanish: 'Mantรฉn presionado', + brazilian_portuguese: 'Pressione e segure', + tok_pisin: 'Presim na holim', + indonesian: 'Tekan dan tahan', + nepali: 'เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคนเฅ‹เคฒเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + }, vadAutoCalibrate: { english: 'Auto-Calibrate', spanish: 'Auto-Calibrar', diff --git a/utils/storage.ts b/utils/storage.ts index 1759c437d..52cd73afe 100644 --- a/utils/storage.ts +++ b/utils/storage.ts @@ -1,7 +1,8 @@ import AsyncStorage from '@react-native-async-storage/async-storage'; const STORAGE_KEYS = { - OFFLINE_UNDOWNLOAD_WARNING: '@offline_undownload_warning' + OFFLINE_UNDOWNLOAD_WARNING: '@offline_undownload_warning', + RECORDING_HELP_SHOWN: '@recording_help_shown' } as const; export const storage = { @@ -32,6 +33,36 @@ export const storage = { error ); } + }, + + async hasRecordingHelpBeenShown(): Promise { + try { + const value = await AsyncStorage.getItem(STORAGE_KEYS.RECORDING_HELP_SHOWN); + console.log('[storage] RECORDING_HELP_SHOWN value:', value); + return value === 'true'; + } catch (error) { + console.error('Error reading recording help shown state:', error); + return false; + } + }, + + async setRecordingHelpShown(): Promise { + try { + await AsyncStorage.setItem(STORAGE_KEYS.RECORDING_HELP_SHOWN, 'true'); + console.log('[storage] Recording help marked as shown'); + } catch (error) { + console.error('Error saving recording help shown state:', error); + } + }, + + // For testing: reset the recording help shown state + async resetRecordingHelpShown(): Promise { + try { + await AsyncStorage.removeItem(STORAGE_KEYS.RECORDING_HELP_SHOWN); + console.log('[storage] Recording help state reset'); + } catch (error) { + console.error('Error resetting recording help shown state:', error); + } } }; diff --git a/views/new/recording/components/BibleRecordingView.tsx b/views/new/recording/components/BibleRecordingView.tsx index 8ff4cd59d..47e767001 100644 --- a/views/new/recording/components/BibleRecordingView.tsx +++ b/views/new/recording/components/BibleRecordingView.tsx @@ -45,6 +45,7 @@ import { saveRecording } from '../services/recordingService'; import { AssetCard } from './AssetCard'; import { FullScreenVADOverlay } from './FullScreenVADOverlay'; import { RecordingControls } from './RecordingControls'; +import { RecordingHelpDialog } from '@/components/RecordingHelpDialog'; import { RenameAssetDrawer } from './RenameAssetDrawer'; import { SelectionControls } from './SelectionControls'; import { VADSettingsDrawer } from './VADSettingsDrawer'; @@ -2805,6 +2806,9 @@ const BibleRecordingView = ({ autoCalibrateOnOpen={autoCalibrateOnOpen} energyShared={energyShared} /> + + {/* Recording Help Dialog - shown once on first visit */} + ); }; diff --git a/views/new/recording/components/RecordingControls.tsx b/views/new/recording/components/RecordingControls.tsx index 41f8d84d1..b840d8025 100644 --- a/views/new/recording/components/RecordingControls.tsx +++ b/views/new/recording/components/RecordingControls.tsx @@ -11,9 +11,14 @@ import { WaveformVisualization } from '@/components/WaveformVisualization'; import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; +import { + Tooltip, + TooltipContent, + TooltipTrigger +} from '@/components/ui/tooltip'; import { useLocalization } from '@/hooks/useLocalization'; import { Audio } from 'expo-av'; -import { MicOffIcon, Settings, Sparkles } from 'lucide-react-native'; +import { CircleHelp, MicOffIcon, Settings, Sparkles } from 'lucide-react-native'; import React, { useEffect, useRef } from 'react'; import { View, useWindowDimensions } from 'react-native'; import type { SharedValue } from 'react-native-reanimated'; @@ -395,22 +400,51 @@ export const RecordingControls = React.memo( {isVADActive ? ( - VAD recording active + {t('vadRecordingActive')} ) : ( - + - - Recording settings - + + + + + + + + {t('recordingHelpTitle')} + + + 1. {t('tap')}{' '} + {t('recordingHelpVAD')} + + + 2. {t('pressAndHold')}{' '} + {t('recordingHelpPushToTalk')} + + + + )} diff --git a/views/new/recording/components/RecordingViewSimplified.tsx b/views/new/recording/components/RecordingViewSimplified.tsx index cebd5eac0..8be9aef87 100644 --- a/views/new/recording/components/RecordingViewSimplified.tsx +++ b/views/new/recording/components/RecordingViewSimplified.tsx @@ -1,5 +1,6 @@ import type { ArrayInsertionWheelHandle } from '@/components/ArrayInsertionWheel'; import ArrayInsertionWheel from '@/components/ArrayInsertionWheel'; +import { RecordingHelpDialog } from '@/components/RecordingHelpDialog'; import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; @@ -2165,6 +2166,9 @@ const RecordingViewSimplified = ({ autoCalibrateOnOpen={autoCalibrateOnOpen} energyShared={energyShared} /> + + {/* Recording Help Dialog - shown once on first visit */} + ); }; From f1058a48071c1c4acc5f7bfc7769594d7de64b35 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 31 Jan 2026 20:54:54 -0800 Subject: [PATCH 007/143] Changed min press-and-hold time 1s > 0.5s --- components/WalkieTalkieRecorder.tsx | 2 +- views/new/recording/components/RecordingControls.tsx | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index 2eae59c33..d35b5529b 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -100,7 +100,7 @@ const WalkieTalkieRecorder: React.FC = ({ const releaseDelayTimer = useRef | null>(null); // Constants - const MIN_RECORDING_DURATION = 1000; + const MIN_RECORDING_DURATION = 500; const ACTIVATION_TIME = 200; const RELEASE_DELAY = 0; diff --git a/views/new/recording/components/RecordingControls.tsx b/views/new/recording/components/RecordingControls.tsx index b840d8025..f4266907e 100644 --- a/views/new/recording/components/RecordingControls.tsx +++ b/views/new/recording/components/RecordingControls.tsx @@ -418,11 +418,7 @@ export const RecordingControls = React.memo( - + Date: Sat, 31 Jan 2026 21:30:44 -0800 Subject: [PATCH 008/143] adjusted haptic feedback, other tweaks --- components/WalkieTalkieRecorder.tsx | 96 ++++++++++++++--------------- services/localizations.ts | 12 ++-- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index d35b5529b..a48ffdd32 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -63,9 +63,8 @@ const WalkieTalkieRecorder: React.FC = ({ activationProgressShared, energyShared }) => { - const mediumHaptic = useHaptic('medium'); - const heavyHaptic = useHaptic('heavy'); - const successHaptic = useHaptic('success'); + // Single short haptic for all feedback + const haptic = useHaptic('medium'); const { currentUser: _currentUser } = useAuth(); const { t } = useLocalization(); const [recording, setRecording] = useState(null); @@ -102,7 +101,7 @@ const WalkieTalkieRecorder: React.FC = ({ // Constants const MIN_RECORDING_DURATION = 500; const ACTIVATION_TIME = 200; - const RELEASE_DELAY = 0; + const RELEASE_DELAY = 200; // Avoid React refs inside worklets: mutating `.current` after passing the ref // into a worklet triggers Reanimated's "Tried to modify key `current`..." warning. @@ -238,21 +237,18 @@ const WalkieTalkieRecorder: React.FC = ({ ); const startTime = performance.now(); - console.log('๐ŸŽ™๏ธ Starting recording process...'); - // โœ… CRITICAL: Clean up any existing recording first + // Clean up any existing recording first if (recording) { - console.log('โš ๏ธ Found existing recording, cleaning up first...'); try { await recording.stopAndUnloadAsync(); - } catch (e) { - console.log('โš ๏ธ Error cleaning up existing recording:', e); + } catch { + // Ignore cleanup errors } setRecording(null); } setRecordedSamples([]); - console.log('๐ŸŽค Initializing recorder...'); // Permission check removed - parent RecordingControls ensures canRecord=true // before this component is even rendered/interactive @@ -271,7 +267,6 @@ const WalkieTalkieRecorder: React.FC = ({ playsInSilentModeIOS: true }); - console.log('๐ŸŽค Creating fresh recording...'); const highQuality = Audio.RecordingOptionsPresets.HIGH_QUALITY; const options = { ...highQuality, @@ -291,14 +286,12 @@ const WalkieTalkieRecorder: React.FC = ({ // Check if we were cancelled during async setup (user released early) if (shouldCancelRecordingRef.current) { - console.log('โš ๏ธ Recording cancelled during setup - cleaning up'); await activeRecording.stopAndUnloadAsync(); shouldCancelRecordingRef.current = false; return; } - const duration = performance.now() - startTime; - console.log(`โœ… Recording ready in ${duration.toFixed(0)}ms`); + const _duration = performance.now() - startTime; setRecording(activeRecording); setRecordingDuration(0); @@ -337,7 +330,6 @@ const WalkieTalkieRecorder: React.FC = ({ // Store energy range ref for logging on stop (activeRecording as any)._energyRange = energyRange; - console.log('๐ŸŽ™๏ธ Recording started successfully!'); } catch (error) { console.error('โŒ Failed to start recording:', error); onRecordingStop(); // Clean up @@ -348,7 +340,6 @@ const WalkieTalkieRecorder: React.FC = ({ if (!recording) { // Recording object not created yet (user released during async setup) // Set cancellation flag so startRecording() knows to abort - console.log('โš ๏ธ stopRecording called before recording created - signaling cancellation'); shouldCancelRecordingRef.current = true; onRecordingStop(); return; @@ -366,22 +357,11 @@ const WalkieTalkieRecorder: React.FC = ({ await recording.stopAndUnloadAsync(); const uri = recording.getURI(); - // Log energy range for hold-to-record - const energyRange = (recording as any)._energyRange; - if (energyRange && energyRange.min !== Infinity) { - console.log( - `๐Ÿ“Š Hold-to-Record Energy Range | min: ${energyRange.min.toFixed(4)}, max: ${energyRange.max.toFixed(4)}, range: ${(energyRange.max - energyRange.min).toFixed(4)}` - ); - } - if (uri) { if (recordingDuration >= MIN_RECORDING_DURATION) { const waveformData = [...recordedSamples]; onRecordingComplete(uri, recordingDuration, waveformData); } else { - console.log( - `โญ๏ธ Recording too short (${recordingDuration}ms), discarding` - ); onRecordingDiscarded?.(); } } @@ -409,6 +389,10 @@ const WalkieTalkieRecorder: React.FC = ({ clearTimeout(activationTimer.current); activationTimer.current = null; } + if (releaseDelayTimer.current) { + clearTimeout(releaseDelayTimer.current); + releaseDelayTimer.current = null; + } // Reset refs isActivatingRef.current = false; @@ -421,13 +405,18 @@ const WalkieTalkieRecorder: React.FC = ({ // GUARD: Prevent interactions during busy state or active recording // ============================================================================ if (isBusyRef.current) { - console.log('๐Ÿ”’ Busy - ignoring press'); return; } + // If release delay timer is active (user just released), cancel it to keep recording + if (releaseDelayTimer.current) { + clearTimeout(releaseDelayTimer.current); + releaseDelayTimer.current = null; + return; // Don't start new activation, just cancel the stop + } + // If already recording (push-to-talk), ignore new presses if (isRecording && !isVADActive) { - console.log('๐Ÿ”’ Already recording - ignoring press'); return; } @@ -441,7 +430,6 @@ const WalkieTalkieRecorder: React.FC = ({ // CLEANUP: Cancel any existing activation in progress // ============================================================================ if (isActivatingRef.current) { - console.log('โš ๏ธ Canceling previous activation'); cleanupInteractionState(); // Cancel existing ripple animation cancelAnimation(rippleProgress); @@ -450,18 +438,18 @@ const WalkieTalkieRecorder: React.FC = ({ rippleOpacity.value = 0; } - console.log('๐ŸŽ™๏ธ Press in detected, starting activation timer...'); - // Record press start time for tap detection pressStartTimeRef.current = Date.now(); - void mediumHaptic(); + // Haptic feedback when first touched + void haptic(); isActivatingRef.current = true; // ============================================================================ - // START RIPPLE ANIMATION + // START RIPPLE ANIMATION (runs on UI thread via Reanimated) // ============================================================================ + // This animation is purely visual and decoupled from recording logic. // Cancel any existing animation first cancelAnimation(rippleProgress); cancelAnimation(rippleOpacity); @@ -488,25 +476,20 @@ const WalkieTalkieRecorder: React.FC = ({ activationTimer.current = setTimeout(() => { // Double-check we're still in activating state (prevents stale timer execution) if (!isActivatingRef.current) { - console.log('โš ๏ธ Activation timer fired but no longer activating - ignoring'); return; } - console.log('โœ… Activation complete, starting recording...'); isActivatingRef.current = false; // Mark that we're pending start - this bridges the gap between // calling startRecording() and isRecording prop becoming true isPendingStartRef.current = true; - void heavyHaptic(); void startRecording(); }, ACTIVATION_TIME); }; const handlePressOut = () => { - void mediumHaptic(); - const pressDuration = pressStartTimeRef.current ? Date.now() - pressStartTimeRef.current : Infinity; @@ -514,8 +497,8 @@ const WalkieTalkieRecorder: React.FC = ({ // If VAD is active, any tap stops VAD if (isVADActive) { - console.log('๐Ÿ‘† Tap detected - stopping VAD mode'); - void successHaptic(); + // Haptic feedback when VAD stops + void haptic(); // Set busy to prevent rapid re-activation isBusyRef.current = true; @@ -547,13 +530,10 @@ const WalkieTalkieRecorder: React.FC = ({ // If press duration < ACTIVATION_TIME, it's a tap - start VAD // NOTE: Don't reset ripple animation here - let it complete since VAD is starting if (pressDuration < ACTIVATION_TIME) { - console.log('๐Ÿ‘† Tap detected - starting VAD mode'); - void successHaptic(); onVADActiveChange?.(true); } else { // Edge case: released after ACTIVATION_TIME but before timer fired // Reset ripple since nothing is starting - console.log('โŒ Released before activation complete, canceling...'); cancelAnimation(rippleProgress); cancelAnimation(rippleOpacity); rippleProgress.value = withTiming(0, { duration: 150 }); @@ -563,17 +543,37 @@ const WalkieTalkieRecorder: React.FC = ({ return; } - // If recording was active OR pending start, stop it + // If recording was active OR pending start, stop it with delay // isPendingStartRef handles the race condition where user releases after // activation timer fired but before isRecording prop updated if (isRecording || isPendingStartRef.current) { - console.log('๐Ÿ›‘ Stopping recording immediately', { isRecording, isPending: isPendingStartRef.current }); + // Haptic feedback when hold-to-record stops + void haptic(); isPendingStartRef.current = false; - void stopRecording(); + + // Clear any existing release delay timer + if (releaseDelayTimer.current) { + clearTimeout(releaseDelayTimer.current); + releaseDelayTimer.current = null; + } + + // Delay stopping recording by RELEASE_DELAY + releaseDelayTimer.current = setTimeout(() => { + releaseDelayTimer.current = null; + void stopRecording(); + + // Reset ripple animation after stopping + cancelAnimation(rippleProgress); + cancelAnimation(rippleOpacity); + rippleProgress.value = withTiming(0, { duration: 200 }); + rippleOpacity.value = withTiming(0, { duration: 200 }); + }, RELEASE_DELAY); + + return; // Don't reset ripple immediately - wait for delay } // ============================================================================ - // RESET RIPPLE ANIMATION (recording stopped) + // RESET RIPPLE ANIMATION (for non-recording cases) // ============================================================================ cancelAnimation(rippleProgress); cancelAnimation(rippleOpacity); diff --git a/services/localizations.ts b/services/localizations.ts index 391a78b03..15fb06208 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -5875,12 +5875,12 @@ export const localizations = { nepali: 'VAD เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚' }, startRecording: { - english: 'Start Recording', - spanish: 'Iniciar Grabaciรณn', - brazilian_portuguese: 'Iniciar Gravaรงรฃo', - tok_pisin: 'Statim Rekodim', - indonesian: 'Mulai Merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + english: 'Record', + spanish: 'Grabar', + brazilian_portuguese: 'Gravar', + tok_pisin: 'Rekodim', + indonesian: 'Rekam', + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก' }, stopRecording: { english: 'Stop Recording', From 4f3232d78fee1be78bc92afa18543d03e41ef621 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 31 Jan 2026 21:46:03 -0800 Subject: [PATCH 009/143] lint fixes and prettier --- components/WalkieTalkieRecorder.tsx | 68 +++++++++++-------- services/localizations.ts | 9 +-- utils/storage.ts | 4 +- .../components/RecordingControls.tsx | 9 ++- 4 files changed, 52 insertions(+), 38 deletions(-) diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index a48ffdd32..a30042165 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -20,6 +20,11 @@ import { Text } from './ui/text'; const AnimatedView = Animated.View; +// Extend Recording type to include custom energy range tracking +interface RecordingWithEnergyRange extends Audio.Recording { + _energyRange?: { min: number; max: number }; +} + interface WalkieTalkieRecorderProps { onRecordingComplete: ( uri: string, @@ -76,7 +81,7 @@ const WalkieTalkieRecorder: React.FC = ({ const isPendingStartRef = useRef(false); // Cancellation flag - set when user releases during async setup const shouldCancelRecordingRef = useRef(false); - + // ============================================================================ // BUSY LOCK - Prevents race conditions during state transitions // ============================================================================ @@ -124,7 +129,7 @@ const WalkieTalkieRecorder: React.FC = ({ isVADActiveRef.current = isVADActive; isVADActiveShared.value = isVADActive; isRecordingShared.value = isRecording; - + // Clear pending start flag when recording actually starts if (isRecording) { isPendingStartRef.current = false; @@ -138,7 +143,7 @@ const WalkieTalkieRecorder: React.FC = ({ // this effect ensures the ripple animation matches the actual recording/VAD state useEffect(() => { const shouldBeActive = isVADActive || isRecording; - + if (shouldBeActive) { // If we should be active but ripple is not at 1, snap it to 1 // (This handles cases where state changed before animation completed) @@ -155,18 +160,18 @@ const WalkieTalkieRecorder: React.FC = ({ rippleProgress.value = withTiming(0, { duration: 200 }); rippleOpacity.value = withTiming(0, { duration: 200 }); } - + // Also clear busy state when becoming inactive isBusyRef.current = false; } }, [isVADActive, isRecording, rippleProgress, rippleOpacity]); - // Append a live sample for recording playback const appendLiveSample = (amplitude01: number) => { const clampedAmplitude = Math.max(0.01, Math.min(1, amplitude01)); setRecordedSamples((prev) => [...prev, clampedAmplitude]); // Update SharedValue for waveform visualization during walkie-talkie recording + // Note: SharedValues are designed to be mutated - this is intentional and correct if (energyShared) { energyShared.value = clampedAmplitude; } @@ -285,6 +290,7 @@ const WalkieTalkieRecorder: React.FC = ({ activeRecording.setProgressUpdateInterval(9); // Check if we were cancelled during async setup (user released early) + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (shouldCancelRecordingRef.current) { await activeRecording.stopAndUnloadAsync(); shouldCancelRecordingRef.current = false; @@ -329,7 +335,7 @@ const WalkieTalkieRecorder: React.FC = ({ }); // Store energy range ref for logging on stop - (activeRecording as any)._energyRange = energyRange; + (activeRecording as RecordingWithEnergyRange)._energyRange = energyRange; } catch (error) { console.error('โŒ Failed to start recording:', error); onRecordingStop(); // Clean up @@ -393,7 +399,7 @@ const WalkieTalkieRecorder: React.FC = ({ clearTimeout(releaseDelayTimer.current); releaseDelayTimer.current = null; } - + // Reset refs isActivatingRef.current = false; pressStartTimeRef.current = null; @@ -407,14 +413,14 @@ const WalkieTalkieRecorder: React.FC = ({ if (isBusyRef.current) { return; } - + // If release delay timer is active (user just released), cancel it to keep recording if (releaseDelayTimer.current) { clearTimeout(releaseDelayTimer.current); releaseDelayTimer.current = null; return; // Don't start new activation, just cancel the stop } - + // If already recording (push-to-talk), ignore new presses if (isRecording && !isVADActive) { return; @@ -432,6 +438,7 @@ const WalkieTalkieRecorder: React.FC = ({ if (isActivatingRef.current) { cleanupInteractionState(); // Cancel existing ripple animation + // Note: SharedValues are designed to be mutated - these mutations are intentional cancelAnimation(rippleProgress); cancelAnimation(rippleOpacity); rippleProgress.value = 0; @@ -453,7 +460,7 @@ const WalkieTalkieRecorder: React.FC = ({ // Cancel any existing animation first cancelAnimation(rippleProgress); cancelAnimation(rippleOpacity); - + // Initialize ripple: starts at center, 50% opacity white rippleProgress.value = 0; rippleOpacity.value = 0.5; @@ -461,13 +468,13 @@ const WalkieTalkieRecorder: React.FC = ({ // Animate ripple expanding from center over ACTIVATION_TIME rippleProgress.value = withTiming(1, { duration: ACTIVATION_TIME, - easing: Easing.linear, + easing: Easing.linear }); // Fade white overlay to reveal red underneath rippleOpacity.value = withTiming(0, { duration: ACTIVATION_TIME, - easing: Easing.linear, + easing: Easing.linear }); // ============================================================================ @@ -478,13 +485,13 @@ const WalkieTalkieRecorder: React.FC = ({ if (!isActivatingRef.current) { return; } - + isActivatingRef.current = false; - + // Mark that we're pending start - this bridges the gap between // calling startRecording() and isRecording prop becoming true isPendingStartRef.current = true; - + void startRecording(); }, ACTIVATION_TIME); }; @@ -499,18 +506,19 @@ const WalkieTalkieRecorder: React.FC = ({ if (isVADActive) { // Haptic feedback when VAD stops void haptic(); - + // Set busy to prevent rapid re-activation isBusyRef.current = true; setTimeout(() => { isBusyRef.current = false; }, 300); // Brief lock after stopping VAD - + onVADActiveChange?.(false); - + // ============================================================================ // RESET RIPPLE ANIMATION (VAD stopped) // ============================================================================ + // Note: SharedValues are designed to be mutated - these mutations are intentional cancelAnimation(rippleProgress); cancelAnimation(rippleOpacity); rippleProgress.value = withTiming(0, { duration: 200 }); @@ -534,6 +542,7 @@ const WalkieTalkieRecorder: React.FC = ({ } else { // Edge case: released after ACTIVATION_TIME but before timer fired // Reset ripple since nothing is starting + // Note: SharedValues are designed to be mutated - these mutations are intentional cancelAnimation(rippleProgress); cancelAnimation(rippleOpacity); rippleProgress.value = withTiming(0, { duration: 150 }); @@ -550,25 +559,25 @@ const WalkieTalkieRecorder: React.FC = ({ // Haptic feedback when hold-to-record stops void haptic(); isPendingStartRef.current = false; - + // Clear any existing release delay timer if (releaseDelayTimer.current) { clearTimeout(releaseDelayTimer.current); releaseDelayTimer.current = null; } - + // Delay stopping recording by RELEASE_DELAY releaseDelayTimer.current = setTimeout(() => { releaseDelayTimer.current = null; void stopRecording(); - + // Reset ripple animation after stopping cancelAnimation(rippleProgress); cancelAnimation(rippleOpacity); rippleProgress.value = withTiming(0, { duration: 200 }); rippleOpacity.value = withTiming(0, { duration: 200 }); }, RELEASE_DELAY); - + return; // Don't reset ripple immediately - wait for delay } @@ -601,7 +610,7 @@ const WalkieTalkieRecorder: React.FC = ({ // - Uses interpolateColor (optimized color transitions) // - Fixed position/size - only scale and color animate // - Reduces animated properties from 6 to 2 (scale + backgroundColor) - + // Pre-calculate ripple size (only depends on window width, not animated) // The circle must be large enough to cover the button diagonal when scale=1 const buttonWidth = windowWidth - 32; // Account for px-4 padding @@ -614,7 +623,7 @@ const WalkieTalkieRecorder: React.FC = ({ const rippleStyle = useAnimatedStyle(() => { 'worklet'; const progress = rippleProgress.value; - + // Use interpolateColor for optimized color transition // White (50% opacity) -> Destructive red (100% opacity) // Note: interpolateColor handles opacity via alpha channel @@ -623,11 +632,11 @@ const WalkieTalkieRecorder: React.FC = ({ [0, 1], ['rgba(255, 255, 255, 0.5)', 'rgba(255, 84, 112, 1)'] ); - + return { // GPU-accelerated transform instead of width/height transform: [{ scale: progress }], - backgroundColor, + backgroundColor }; }); @@ -637,7 +646,8 @@ const WalkieTalkieRecorder: React.FC = ({ } // Determine button background color class based on state - const buttonBgClass = isVADActive || isRecording ? 'bg-destructive' : 'bg-primary'; + const buttonBgClass = + isVADActive || isRecording ? 'bg-destructive' : 'bg-primary'; return ( @@ -671,8 +681,8 @@ const WalkieTalkieRecorder: React.FC = ({ width: rippleDiameter, height: rippleDiameter, borderRadius: rippleDiameter / 2, - pointerEvents: 'none', - }, + pointerEvents: 'none' + } ]} /> diff --git a/services/localizations.ts b/services/localizations.ts index 15fb06208..96f9354ce 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -5930,16 +5930,13 @@ export const localizations = { }, recordingHelpPushToTalk: { english: 'to record a single segment, release to stop recording.', - spanish: - 'para grabar un solo segmento, suelta para detener la grabaciรณn.', + spanish: 'para grabar un solo segmento, suelta para detener la grabaciรณn.', brazilian_portuguese: 'para gravar um รบnico segmento, solte para parar a gravaรงรฃo.', - tok_pisin: - 'bilong rekodim wanpela hap, lusim bilong stopim rekoding.', + tok_pisin: 'bilong rekodim wanpela hap, lusim bilong stopim rekoding.', indonesian: 'untuk merekam satu segmen, lepaskan untuk menghentikan perekaman.', - nepali: - 'เคเค‰เคŸเคพ เค–เคฃเฅเคก เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ, เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจ เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เคเค‰เคŸเคพ เค–เคฃเฅเคก เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ, เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจ เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅเฅค' }, tap: { english: 'Tap', diff --git a/utils/storage.ts b/utils/storage.ts index 52cd73afe..dd1707e4c 100644 --- a/utils/storage.ts +++ b/utils/storage.ts @@ -37,7 +37,9 @@ export const storage = { async hasRecordingHelpBeenShown(): Promise { try { - const value = await AsyncStorage.getItem(STORAGE_KEYS.RECORDING_HELP_SHOWN); + const value = await AsyncStorage.getItem( + STORAGE_KEYS.RECORDING_HELP_SHOWN + ); console.log('[storage] RECORDING_HELP_SHOWN value:', value); return value === 'true'; } catch (error) { diff --git a/views/new/recording/components/RecordingControls.tsx b/views/new/recording/components/RecordingControls.tsx index f4266907e..ca6745799 100644 --- a/views/new/recording/components/RecordingControls.tsx +++ b/views/new/recording/components/RecordingControls.tsx @@ -18,7 +18,12 @@ import { } from '@/components/ui/tooltip'; import { useLocalization } from '@/hooks/useLocalization'; import { Audio } from 'expo-av'; -import { CircleHelp, MicOffIcon, Settings, Sparkles } from 'lucide-react-native'; +import { + CircleHelp, + MicOffIcon, + Settings, + Sparkles +} from 'lucide-react-native'; import React, { useEffect, useRef } from 'react'; import { View, useWindowDimensions } from 'react-native'; import type { SharedValue } from 'react-native-reanimated'; @@ -409,7 +414,7 @@ export const RecordingControls = React.memo( variant="ghost" size="sm" onPress={onSettingsPress} - className="h-auto -ml-2 flex-row items-center gap-2" + className="-ml-2 h-auto flex-row items-center gap-2" > From 82348754b6ff862041b4e4c83fb9d5a18af5827a Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 31 Jan 2026 22:35:41 -0800 Subject: [PATCH 010/143] fixed double "recording" key in localizations --- components/WalkieTalkieRecorder.tsx | 10 +++++++++- services/localizations.ts | 8 -------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index a30042165..c6628117a 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -18,6 +18,13 @@ import Animated, { import { Icon } from './ui/icon'; import { Text } from './ui/text'; +/** + * NOTE: This component intentionally mutates Reanimated SharedValues throughout. + * React Compiler warnings about SharedValue mutations are false positives. + * SharedValues are designed to be mutated - this is their intended usage pattern. + * These mutations do not cause re-renders and are safe. + */ + const AnimatedView = Animated.View; // Extend Recording type to include custom energy range tracking @@ -173,6 +180,7 @@ const WalkieTalkieRecorder: React.FC = ({ // Update SharedValue for waveform visualization during walkie-talkie recording // Note: SharedValues are designed to be mutated - this is intentional and correct if (energyShared) { + // React Compiler warning here is a false positive - SharedValues are meant to be mutated energyShared.value = clampedAmplitude; } }; @@ -698,7 +706,7 @@ const WalkieTalkieRecorder: React.FC = ({ - {isRecording ? t('recording') : t('startRecording')} + {isRecording ? `${t('recording')}...` : t('startRecording')} )} diff --git a/services/localizations.ts b/services/localizations.ts index 96f9354ce..1055e8686 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -5890,14 +5890,6 @@ export const localizations = { indonesian: 'Hentikan Perekaman', nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจเฅเคนเฅ‹เคธเฅ' }, - recording: { - english: 'Recording...', - spanish: 'Grabando...', - brazilian_portuguese: 'Gravando...', - tok_pisin: 'Rekodim...', - indonesian: 'Merekam...', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™...' - }, vadRecordingActive: { english: 'VAD recording active', spanish: 'Grabaciรณn VAD activa', From 6eeab38f77ce5930629723e023dca61b0d4b55d2 Mon Sep 17 00:00:00 2001 From: Rafael Winter Date: Sun, 1 Feb 2026 07:18:52 -0800 Subject: [PATCH 011/143] UI Changes --- .../recording/components/RecordAssetCard.tsx | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/views/new/recording/components/RecordAssetCard.tsx b/views/new/recording/components/RecordAssetCard.tsx index 656aa4eda..3cc712af4 100644 --- a/views/new/recording/components/RecordAssetCard.tsx +++ b/views/new/recording/components/RecordAssetCard.tsx @@ -2,14 +2,15 @@ * RecordAssetCard - Individual asset display with actions * * Features: - * - Tap card to play/pause audio (except when tapping label to rename) + * - Play button to play/pause audio * - Visual progress bar during playback * - Duration display (monospace, muted) next to label * - Delete and merge actions * - Selection mode (WhatsApp-style long-press) * * Interaction: - * - Tap card โ†’ play/pause audio (or toggle selection if in selection mode) + * - Tap play button โ†’ play/pause audio + * - Tap card โ†’ toggle selection (only in selection mode) * - Tap label โ†’ rename asset (when renameable) * - Long press โ†’ enter selection mode * @@ -24,8 +25,9 @@ import { useAudio } from '@/contexts/AudioContext'; import type { Asset } from '@/hooks/db/useAssets'; import { useLocalization } from '@/hooks/useLocalization'; import { cn } from '@/utils/styleUtils'; -import { CheckCircleIcon, CircleIcon } from 'lucide-react-native'; +import { CheckCircleIcon, CircleIcon, PauseIcon, PlayIcon } from 'lucide-react-native'; import React from 'react'; +import type { GestureResponderEvent } from 'react-native'; import { StyleSheet, TouchableOpacity, View } from 'react-native'; import type { SharedValue } from 'react-native-reanimated'; import Animated, { @@ -134,14 +136,22 @@ function RecordAssetCardInternal({ }; }); - // Handle card press: play/pause in normal mode, toggle selection in selection mode + // Handle card press: only toggle selection in selection mode const handleCardPress = React.useCallback(() => { if (isSelectionMode) { onPress(); // Toggle selection - } else { - onPlay(asset.id); // Play/pause audio } - }, [isSelectionMode, onPress, onPlay, asset.id]); + }, [isSelectionMode, onPress]); + + // Handle play button press + const handlePlayPress = React.useCallback( + (e: GestureResponderEvent) => { + // Stop event propagation to prevent card press + e.stopPropagation(); + onPlay(asset.id); + }, + [onPlay, asset.id] + ); const { t } = useLocalization(); return ( @@ -177,6 +187,20 @@ function RecordAssetCardInternal({ {index + 1} + {/* Play/Pause Button */} + + + + {/* Label with rename functionality - prevents card play when tapped */} From bf13e186c6b6262acde1207129632d0d07995179 Mon Sep 17 00:00:00 2001 From: Rafael Winter Date: Mon, 2 Feb 2026 07:33:58 -0800 Subject: [PATCH 012/143] Replace Inserting Wheel with LegendList --- components/RecordingSelectionList.tsx | 219 ++++++++++++++ components/VersePill.tsx | 34 ++- views/new/RecordingView.tsx | 270 +++++++++++------- .../recording/components/RecordAssetCard.tsx | 67 +++-- .../components/RecordAssetCardSkeleton.tsx | 46 +++ 5 files changed, 515 insertions(+), 121 deletions(-) create mode 100644 components/RecordingSelectionList.tsx create mode 100644 views/new/recording/components/RecordAssetCardSkeleton.tsx diff --git a/components/RecordingSelectionList.tsx b/components/RecordingSelectionList.tsx new file mode 100644 index 000000000..db578be9a --- /dev/null +++ b/components/RecordingSelectionList.tsx @@ -0,0 +1,219 @@ +/** + * RecordingSelectionList - Simple list with click-to-select behavior + * + * Unlike ArrayInsertionWheel which selects the centered item, + * this list selects the item the user taps on. + * + * Features: + * - Click item to select it + * - Visual highlight on selected item + * - Smooth scroll to selected item + * - Supports lazy rendering with data + renderItem + */ + +import type { LegendListRef } from '@legendapp/list'; +import { LegendList } from '@legendapp/list'; +import { ArrowDownNarrowWide, Mic } from 'lucide-react-native'; +import React from 'react'; +import { TouchableOpacity, View } from 'react-native'; +import { Icon } from './ui/icon'; + +export interface RecordingSelectionListHandle { + scrollToIndex: (index: number, animated?: boolean) => void; + getSelectedIndex: () => number; +} + +interface RecordingSelectionListPropsBase { + value: number; // selected index (0..N, where N is "insert at end") + onChange?: (index: number) => void; + onLongPress?: (index: number) => void; // Long press on an item + rowHeight: number; + className?: string; + bottomInset?: number; + boundaryComponent?: React.ReactNode; + /** Extra data that triggers re-render when changed (e.g., isSelectionMode) */ + extraData?: unknown; +} + +// Lazy rendering with data + renderItem +interface RecordingSelectionListPropsLazy + extends RecordingSelectionListPropsBase { + data: T[]; + renderItem: ( + item: T, + index: number, + isSelected: boolean + ) => React.ReactElement; + /** Return true if this item supports long press (for batch selection mode) */ + canLongPress?: (item: T, index: number) => boolean; +} + +type RecordingSelectionListProps = + RecordingSelectionListPropsLazy; + +function RecordingSelectionListInternal( + props: RecordingSelectionListProps, + ref: React.Ref +) { + const { + value, + onChange, + rowHeight, + className, + bottomInset = 0, + boundaryComponent, + data, + renderItem, + extraData + } = props; + + const listRef = React.useRef(null); + const selectedIndexRef = React.useRef(value); + + // Total item count includes all data items + 1 boundary item at the end + const itemCount = data.length + 1; + + // Update ref when prop changes + React.useEffect(() => { + selectedIndexRef.current = value; + }, [value]); + + // Scroll to selected item + const scrollToIndex = React.useCallback( + (index: number, animated = true) => { + const clamped = Math.max(0, Math.min(itemCount - 1, index)); + listRef.current?.scrollToIndex({ index: clamped, animated }); + }, + [itemCount] + ); + + React.useImperativeHandle( + ref, + () => ({ + scrollToIndex: (index: number, animated = true) => + scrollToIndex(index, animated), + getSelectedIndex: () => selectedIndexRef.current + }), + [scrollToIndex] + ); + + // Handle item press - select this item + const handleItemPress = React.useCallback( + (index: number) => { + selectedIndexRef.current = index; + onChange?.(index); + }, + [onChange] + ); + + // Build list data: all items + boundary + const listData = React.useMemo(() => { + const items: { type: 'item' | 'boundary'; index: number; data?: T }[] = []; + + // Add all data items + data.forEach((item, index) => { + items.push({ type: 'item', index, data: item }); + }); + + // Add boundary at the end (represents "insert after all items") + items.push({ type: 'boundary', index: data.length }); + + return items; + }, [data]); + + // Render list item + const renderListItem = React.useCallback( + ({ item }: { item: (typeof listData)[number] }) => { + const isSelected = item.index === value; + + // Render boundary item + if (item.type === 'boundary') { + if (boundaryComponent) { + return ( + // handleItemPress(item.index)} + // activeOpacity={0.7} + // > + + {boundaryComponent} + + // + ); + } + + // Default boundary component + return ( + handleItemPress(item.index)} + activeOpacity={0.7} + > + + + + + + + + + + ); + } + + // Render data item - card handles its own press and long press + return ( + + {renderItem(item.data!, item.index, isSelected)} + + ); + }, + [ + value, + rowHeight, + boundaryComponent, + handleItemPress, + renderItem + ] + ); + + return ( + + + item.type === 'boundary' ? 'boundary' : `item-${item.index}` + } + estimatedItemSize={rowHeight} + showsVerticalScrollIndicator={true} + contentContainerStyle={{ + paddingBottom: bottomInset + }} + extraData={extraData} + /> + + ); +} + +const RecordingSelectionList = React.forwardRef( + RecordingSelectionListInternal +) as ( + props: RecordingSelectionListProps & { + ref?: React.Ref; + } +) => React.ReactElement; + +export default RecordingSelectionList; diff --git a/components/VersePill.tsx b/components/VersePill.tsx index def7081ee..18925e670 100644 --- a/components/VersePill.tsx +++ b/components/VersePill.tsx @@ -1,23 +1,33 @@ +import { cn } from '@/utils/styleUtils'; import React from 'react'; -import { View } from 'react-native'; +import { TouchableOpacity, View } from 'react-native'; import { Text } from './ui/text'; interface VersePillProps { text: string; className?: string; largeText?: boolean; + isHighlighted?: boolean; + onPress?: () => void; } const VersePillComponent = ({ text, className = '', - largeText = false + largeText = false, + isHighlighted = false, + onPress }: VersePillProps) => { - return ( + const content = ( - + ); + + if (onPress) { + return ( + + {content} + + ); + } + + return content; }; /** * Memoized VersePill component - * Only re-renders when text, className, or largeText changes + * Only re-renders when props change * * Performance: Prevents unnecessary re-renders when assets list changes * but verse pills remain the same (common scenario in BibleRecordingView) @@ -45,7 +65,9 @@ export const VersePill = React.memo( return ( prevProps.text === nextProps.text && prevProps.className === nextProps.className && - prevProps.largeText === nextProps.largeText + prevProps.largeText === nextProps.largeText && + prevProps.isHighlighted === nextProps.isHighlighted && + prevProps.onPress === nextProps.onPress ); } ); diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index 601fe36f2..468c22a04 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -1,5 +1,5 @@ -import type { ArrayInsertionWheelHandle } from '@/components/ArrayInsertionWheel'; -import ArrayInsertionWheel from '@/components/ArrayInsertionWheel'; +import type { RecordingSelectionListHandle } from '@/components/RecordingSelectionList'; +import RecordingSelectionList from '@/components/RecordingSelectionList'; import { VersePill } from '@/components/VersePill'; import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; @@ -40,6 +40,7 @@ import { InteractionManager, View } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { FullScreenVADOverlay } from './recording/components/FullScreenVADOverlay'; import { RecordAssetCard } from './recording/components/RecordAssetCard'; +import { RecordAssetCardSkeleton } from './recording/components/RecordAssetCardSkeleton'; import { RecordSelectionControls } from './recording/components/RecordSelectionControls'; import { RecordingControls } from './recording/components/RecordingControls'; import { RenameAssetDrawer } from './recording/components/RenameAssetDrawer'; @@ -49,8 +50,6 @@ import { useVADRecording } from './recording/hooks/useVADRecording'; import { saveRecording } from './recording/services/recordingService'; import { useHybridData } from './useHybridData'; -// Feature flag: true = use ArrayInsertionWheel, false = use LegendList -// const USE_INSERTION_WHEEL = true; const DEBUG_MODE = false; function debugLog(...args: unknown[]) { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition @@ -301,11 +300,11 @@ const RecordingView = () => { // Insertion wheel state const [insertionIndex, setInsertionIndex] = React.useState(0); - const wheelRef = React.useRef(null); + const listRef = React.useRef(null); // Track footer height for proper scrolling const [footerHeight, setFooterHeight] = React.useState(0); - const ROW_HEIGHT = 80; + const ROW_HEIGHT = 66; // Dynamic verse tracking for automatic progression // Initialize with _verse.from if available, otherwise null (user must click "Add verse" button) @@ -484,9 +483,6 @@ const RecordingView = () => { [sessionItems] ); - // All items (assets + pills) for the wheel - const allItems = sessionItems; - // Normalize assets // ARCHITECTURE: // - Asset: A single recording or merged group of recordings @@ -555,19 +551,19 @@ const RecordingView = () => { // Check if we're at the end of the list (for add verse button behavior) const isAtEndOfList = React.useMemo( - () => allItems.length === 0 || insertionIndex >= allItems.length, - [allItems.length, insertionIndex] + () => sessionItems.length === 0 || insertionIndex >= sessionItems.length, + [sessionItems.length, insertionIndex] ); // Get the item at the current insertion position (center of wheel) // This can be either an asset or a verse pill const highlightedItem = React.useMemo(() => { - if (allItems.length === 0) return null; - // insertionIndex can be 0 to allItems.length (inclusive) - // When at the end (insertionIndex >= allItems.length), we still want to show the last item - const idx = Math.min(insertionIndex, allItems.length - 1); - return allItems[idx] ?? null; - }, [allItems, insertionIndex]); + if (sessionItems.length === 0) return null; + // insertionIndex can be 0 to sessionItems.length (inclusive) + // When at the end (insertionIndex >= sessionItems.length), we still want to show the last item + const idx = Math.min(insertionIndex, sessionItems.length - 1); + return sessionItems[idx] ?? null; + }, [sessionItems, insertionIndex]); // Get the highlighted item as an asset (null if it's a pill) // Prefixed with _ as it may not be used directly but kept for potential future use @@ -713,7 +709,7 @@ const RecordingView = () => { setCurrentDynamicVerse(verseToAdd); // Move insertion index to the end (where the pill was added) - // This is done in the next useEffect that monitors allItems.length change + // This is done in the next useEffect that monitors sessionItems.length change // If VAD is active, update recording context to use the new pill if (isVADLocked) { @@ -726,21 +722,16 @@ const RecordingView = () => { } }, [verseToAdd, isVADLocked, addVersePill]); - // Stable item list that only updates when content actually changes - // We intentionally use assetContentKey instead of allItems to prevent re-renders - // when items array reference changes but content is identical - const itemsForWheel = React.useMemo(() => allItems, [allItems]); - // Clamp insertion index when item count changes React.useEffect(() => { - const maxIndex = allItems.length; // Can insert at 0..N (after last item) + const maxIndex = sessionItems.length; // Can insert at 0..N (after last item) if (insertionIndex > maxIndex) { setInsertionIndex(maxIndex); } - }, [allItems.length, insertionIndex]); + }, [sessionItems.length, insertionIndex]); // Track item count to detect new insertions - const previousItemCountRef = React.useRef(allItems.length); + const previousItemCountRef = React.useRef(sessionItems.length); // Track if the last recording was in the middle (not at end) // Used to determine if we should move insertionIndex to the new item @@ -751,7 +742,7 @@ const RecordingView = () => { // Auto-scroll behavior differs between list and wheel React.useEffect(() => { - const currentCount = allItems.length; + const currentCount = sessionItems.length; const previousCount = previousItemCountRef.current; // Only scroll if a new item was added (count increased) @@ -782,7 +773,7 @@ const RecordingView = () => { // Scroll to the end const timeoutId = setTimeout(() => { try { - wheelRef.current?.scrollToInsertionIndex(currentCount, true); + listRef.current?.scrollToIndex(currentCount, true); } catch (error) { console.error('Failed to scroll after pill added:', error); } @@ -800,7 +791,7 @@ const RecordingView = () => { // Scroll to the new item const timeoutId = setTimeout(() => { try { - wheelRef.current?.scrollToInsertionIndex(newIndex, true); + listRef.current?.scrollToIndex(newIndex, true); } catch (error) { console.error('Failed to scroll:', error); } @@ -817,7 +808,7 @@ const RecordingView = () => { // Scroll to the end const timeoutId = setTimeout(() => { try { - wheelRef.current?.scrollToInsertionIndex(currentCount, true); + listRef.current?.scrollToIndex(currentCount, true); } catch (error) { console.error('Failed to scroll:', error); } @@ -828,7 +819,7 @@ const RecordingView = () => { } previousItemCountRef.current = currentCount; - }, [allItems.length, insertionIndex]); + }, [sessionItems.length, insertionIndex]); // ============================================================================ // AUDIO PLAYBACK @@ -1173,7 +1164,7 @@ const RecordingView = () => { return; } - if (itemsForWheel.length === 0) { + if (sessionItems.length === 0) { console.warn('โš ๏ธ No items to play'); return; } @@ -1186,8 +1177,8 @@ const RecordingView = () => { let assetsPlayed = 0; - // Iterate directly through itemsForWheel starting from insertionIndex - for (let wheelIndex = insertionIndex; wheelIndex < itemsForWheel.length; wheelIndex++) { + // Iterate directly through sessionItems starting from insertionIndex + for (let wheelIndex = insertionIndex; wheelIndex < sessionItems.length; wheelIndex++) { // Check if cancelled // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!isPlayAllRunningRef.current) { @@ -1196,7 +1187,7 @@ const RecordingView = () => { return; } - const item = itemsForWheel[wheelIndex]; + const item = sessionItems[wheelIndex]; // Skip if no item or if it's a pill if (!item || isPill(item)) { @@ -1217,9 +1208,9 @@ const RecordingView = () => { // HIGHLIGHT THIS ASSET setCurrentlyPlayingAssetId(asset.id); - // Scroll to this position in the wheel (wheelIndex is the direct position) - if (wheelRef.current) { - wheelRef.current.scrollItemToTop(wheelIndex - 1, true); + // Scroll to this position in the list + if (listRef.current) { + listRef.current.scrollToIndex(wheelIndex - 1, true); } assetsPlayed++; @@ -1279,7 +1270,7 @@ const RecordingView = () => { setIsPlayAllRunning(false); currentPlayAllSoundRef.current = null; } - }, [getAssetAudioUris, insertionIndex, itemsForWheel]); + }, [getAssetAudioUris, insertionIndex, sessionItems]); // ============================================================================ // RECORDING HANDLERS @@ -1297,12 +1288,12 @@ const RecordingView = () => { */ const getInsertionContext = React.useCallback( (currentIndex: number = insertionIndex) => { - const isAtEnd = allItems.length === 0 || currentIndex >= allItems.length; + const isAtEnd = sessionItems.length === 0 || currentIndex >= sessionItems.length; console.log( '๐Ÿ” getInsertionContext | currentIndex:', currentIndex, - '| allItems.length:', - allItems.length, + '| sessionItems.length:', + sessionItems.length, '| isAtEnd:', isAtEnd ); @@ -1310,7 +1301,7 @@ const RecordingView = () => { if (isAtEnd) { // At end: calculate order_index based on last item, not appendOrderIndexRef // appendOrderIndexRef is only used as a cache and gets updated after recording - const lastItem = allItems[allItems.length - 1]; + const lastItem = sessionItems[sessionItems.length - 1]; const orderIndex = lastItem ? lastItem.order_index + 1 : appendOrderIndexRef.current; // Fallback for empty list @@ -1328,7 +1319,7 @@ const RecordingView = () => { return { orderIndex, verse, isAtEnd: true }; } else { // In middle: use selected item's context - const selectedItem = allItems[currentIndex]; + const selectedItem = sessionItems[currentIndex]; const orderIndex = selectedItem ? selectedItem.order_index + 1 : currentIndex + 1; @@ -1337,7 +1328,7 @@ const RecordingView = () => { return { orderIndex, verse, isAtEnd: false }; } }, - [allItems, insertionIndex] + [sessionItems, insertionIndex] ); // Store insertion index in ref to prevent stale closure issues @@ -1371,8 +1362,8 @@ const RecordingView = () => { currentRecordingVerseRef.current = verse; const selectedItem = contextIsAtEnd - ? allItems[allItems.length - 1] - : allItems[insertionIndexRef.current]; + ? sessionItems[sessionItems.length - 1] + : sessionItems[insertionIndexRef.current]; const itemName = selectedItem ? isPill(selectedItem) ? `pill-${selectedItem.verse?.from ?? 'null'}` @@ -1394,7 +1385,7 @@ const RecordingView = () => { } }, [ isVADLocked, - allItems, + sessionItems, currentDynamicVerse, assets.length, getInsertionContext @@ -1407,7 +1398,7 @@ const RecordingView = () => { const currentInsertionIndex = insertionIndexRef.current; console.log( - `๐ŸŽฌ Recording START | insertionIndex: ${currentInsertionIndex} | allItems.length: ${allItems.length}` + `๐ŸŽฌ Recording START | insertionIndex: ${currentInsertionIndex} | sessionItems.length: ${sessionItems.length}` ); // Get insertion context (order_index and verse) based on current position @@ -1441,8 +1432,8 @@ const RecordingView = () => { setIsRecording(true); const selectedItem = isAtEnd - ? allItems[allItems.length - 1] - : allItems[currentInsertionIndex]; + ? sessionItems[sessionItems.length - 1] + : sessionItems[currentInsertionIndex]; const itemName = selectedItem ? isPill(selectedItem) ? `pill-${selectedItem.verse?.from ?? 'null'}` @@ -1452,7 +1443,7 @@ const RecordingView = () => { console.log( `๐ŸŽฏ Recording ${isAtEnd ? 'at END' : 'in MIDDLE'} | index: ${currentInsertionIndex} | item: "${itemName}" | order_index: ${orderIndex} | verse: ${verse ? `${verse.from}-${verse.to}` : 'null'}` ); - }, [isRecording, allItems, getInsertionContext]); + }, [isRecording, sessionItems, getInsertionContext]); const handleRecordingStop = React.useCallback(() => { debugLog('๐Ÿ›‘ Manual recording stop'); @@ -2396,27 +2387,45 @@ const RecordingView = () => { // Create a memoized factory for asset callbacks // This prevents creating new inline functions in wheelChildren useMemo const createAssetCallbacks = React.useCallback( - (assetId: string) => ({ + (assetId: string, index: number) => ({ onPress: () => { if (isSelectionMode) { stableToggleSelect(assetId); } else { - void stableHandlePlayAsset(assetId); + // Toggle highlight: if clicking on already highlighted card, move to end + if (insertionIndex === index) { + setInsertionIndex(sessionItems.length); + } else { + setInsertionIndex(index); + } } }, onLongPress: () => { - stableEnterSelection(assetId); + // Long press enters selection mode and selects this asset + if (!isSelectionMode) { + stableEnterSelection(assetId); + } }, onPlay: () => { void stableHandlePlayAsset(assetId); } }), - [ - isSelectionMode, - stableToggleSelect, - stableHandlePlayAsset, - stableEnterSelection - ] + [isSelectionMode, stableToggleSelect, stableEnterSelection, stableHandlePlayAsset, insertionIndex, sessionItems.length] + ); + + // Create a memoized factory for pill callbacks + const createPillCallbacks = React.useCallback( + (index: number) => ({ + onPress: () => { + // Toggle highlight: if clicking on already highlighted pill, move to end + if (insertionIndex === index) { + setInsertionIndex(sessionItems.length); + } else { + setInsertionIndex(index); + } + } + }), + [insertionIndex, sessionItems.length] ); // Create a Map of callbacks per asset (only recreates when dependencies change) @@ -2431,33 +2440,57 @@ const RecordingView = () => { } >(); - itemsForWheel.forEach((item) => { + sessionItems.forEach((item, index) => { if (isAsset(item)) { - map.set(item.id, createAssetCallbacks(item.id)); + map.set(item.id, createAssetCallbacks(item.id, index)); + } + }); + + return map; + }, [sessionItems, createAssetCallbacks]); + + // Create a Map of callbacks per pill (only recreates when dependencies change) + const pillCallbacksMap = React.useMemo(() => { + const map = new Map< + string, + { + onPress: () => void; + } + >(); + + sessionItems.forEach((item, index) => { + if (isPill(item)) { + map.set(item.id, createPillCallbacks(index)); } }); return map; - }, [itemsForWheel, createAssetCallbacks]); + }, [sessionItems, createPillCallbacks]); - // Lazy renderItem for ArrayInsertionWheel - // OPTIMIZED: Only renders items when they become visible (virtualizaรงรฃo) + // Lazy renderItem for RecordingSelectionList + // OPTIMIZED: Only renders items when they become visible (virtualization) // No audioContext.position/duration dependencies - progress now uses SharedValues! // This is much more efficient than pre-creating all children - const renderWheelItem = React.useCallback( - (item: ListItem, index: number) => { + // Third parameter 'isListSelected' indicates if this item is the current insertion point + const renderListItem = React.useCallback( + (item: ListItem, index: number, _isListSelected: boolean) => { // Render verse pill items differently from asset items if (isPill(item)) { const pillText = item.verse ? (formatVerseRange(item.verse) ?? 'No Label') : 'No Label'; + const isHighlighted = insertionIndex === index; + + // Get stable callbacks from Map (avoids creating new functions) + const callbacks = pillCallbacksMap.get(item.id); + return ( - - - + text={pillText} + isHighlighted={isHighlighted} + onPress={callbacks?.onPress} + /> ); } @@ -2469,18 +2502,19 @@ const RecordingView = () => { isPlayAllRunning && currentlyPlayingAssetId === item.id; const isThisAssetPlaying = isThisAssetPlayingIndividually || isThisAssetPlayingInPlayAll; - const isSelected = selectedAssetIds.has(item.id); + // isInBatchSelection = selected for batch operations (delete, merge) + const isInBatchSelection = selectedAssetIds.has(item.id); // Check if next item is an asset (not a pill) and not from cloud - const nextItem = itemsForWheel[index + 1]; + const nextItem = sessionItems[index + 1]; const canMergeDown = - index < itemsForWheel.length - 1 && + index < sessionItems.length - 1 && nextItem && isAsset(nextItem) && nextItem.source !== 'cloud'; - // Duration from lazy-loaded metadata - const duration = item.duration; + // Duration from lazy-loaded metadata (get from map, not from item which may be stale) + const duration = assetDurations.get(item.id) ?? item.duration; // Get stable callbacks from Map (avoids creating new functions) const callbacks = assetCallbacksMap.get(item.id); @@ -2491,12 +2525,15 @@ const RecordingView = () => { return ; } + const isHighlighted = insertionIndex === index; + return ( { currentlyPlayingAssetId, selectedAssetIds, isSelectionMode, - itemsForWheel, + insertionIndex, + sessionItems, assetCallbacksMap, + pillCallbacksMap, + assetDurations, stableHandleDeleteLocalAsset, stableHandleMergeDownLocal, stableHandleRenameAsset ] ); + // List callbacks (memoized to prevent unnecessary re-renders) + const handleListIndexChange = React.useCallback( + (newIndex: number) => { + const item = sessionItems[newIndex]; + const itemDesc = item + ? isPill(item) + ? `pill-${item.verse?.from ?? 'null'}` + : item.name + : 'end'; + + // In selection mode, clicking on an asset toggles its selection instead of changing insertion index + if (isSelectionMode && item && isAsset(item)) { + console.log(`๐Ÿ“‹ List onChange (selection mode): toggling ${item.name}`); + stableToggleSelect(item.id); + return; + } + + console.log( + `๐Ÿ“‹ List onChange: ${insertionIndex} โ†’ ${newIndex} | ${itemDesc} ${item?.order_index}` + ); + setInsertionIndex(newIndex); + }, + [sessionItems, insertionIndex, isSelectionMode, stableToggleSelect] + ); + + const handleListLongPress = React.useCallback( + (index: number) => { + // Enter batch selection mode when long pressing an asset + const item = sessionItems[index]; + if (item && isAsset(item)) { + stableEnterSelection(item.id); + } + }, + [sessionItems, stableEnterSelection] + ); + + const canListItemLongPress = React.useCallback( + (item: ListItem) => isAsset(item), + [] + ); + // SESSION-ONLY MODE: No loading/error states needed // The list starts empty and only shows assets recorded in this session @@ -2573,6 +2654,10 @@ const RecordingView = () => { const boundaryComponent = useMemo( () => ( + <> + + + { {addButtonComponent} + ), [addButtonComponent] ); @@ -2694,27 +2780,19 @@ const RecordingView = () => { {/* Scrollable list area - full height with padding for controls */} - - ref={wheelRef} + + ref={listRef} value={insertionIndex} - onChange={(newIndex) => { - const item = itemsForWheel[newIndex]; - const itemDesc = item - ? isPill(item) - ? `pill-${item.verse?.from ?? 'null'}` - : item.name - : 'end'; - console.log( - `๐ŸŽก Wheel onChange: ${insertionIndex} โ†’ ${newIndex} | ${itemDesc} ${item?.order_index}` - ); - setInsertionIndex(newIndex); - }} + onChange={handleListIndexChange} + onLongPress={handleListLongPress} + canLongPress={canListItemLongPress} rowHeight={ROW_HEIGHT} className="h-full flex-1" bottomInset={footerHeight} boundaryComponent={boundaryComponent} - data={itemsForWheel} - renderItem={renderWheelItem} + data={sessionItems} + renderItem={renderListItem} + extraData={{ isSelectionMode, selectedAssetIds }} /> diff --git a/views/new/recording/components/RecordAssetCard.tsx b/views/new/recording/components/RecordAssetCard.tsx index 3cc712af4..41b0c7383 100644 --- a/views/new/recording/components/RecordAssetCard.tsx +++ b/views/new/recording/components/RecordAssetCard.tsx @@ -45,7 +45,8 @@ interface AssetCardProps { order_index?: number | null; }; index: number; - isSelected: boolean; + isSelected: boolean; // Batch selection (for merge/delete operations) + isHighlighted: boolean; // Visual highlight (recording insertion point) isSelectionMode: boolean; isPlaying: boolean; // progress removed - now calculated from SharedValues for 0 re-renders! @@ -55,7 +56,7 @@ interface AssetCardProps { // If provided, this overrides the default global progress calculation customProgress?: SharedValue; onPress: () => void; - onLongPress: () => void; + onLongPress?: () => void; onPlay: (assetId: string) => void; onRename?: (assetId: string, currentName: string | null) => void; // Note: These callbacks are still passed but no longer used (batch operations only) @@ -77,6 +78,7 @@ function RecordAssetCardInternal({ asset, index, isSelected, + isHighlighted, isSelectionMode, isPlaying, duration, @@ -136,34 +138,54 @@ function RecordAssetCardInternal({ }; }); - // Handle card press: only toggle selection in selection mode - const handleCardPress = React.useCallback(() => { - if (isSelectionMode) { - onPress(); // Toggle selection - } - }, [isSelectionMode, onPress]); - // Handle play button press const handlePlayPress = React.useCallback( (e: GestureResponderEvent) => { - // Stop event propagation to prevent card press + // Stop event propagation to prevent list selection e.stopPropagation(); onPlay(asset.id); }, [onPlay, asset.id] ); + // Handle selection toggle in batch selection mode + const handleSelectionToggle = React.useCallback( + (e: GestureResponderEvent) => { + e.stopPropagation(); + onPress(); // Toggle batch selection or highlight + }, + [onPress] + ); + + // Handle card press + const handleCardPress = React.useCallback(() => { + onPress(); + }, [onPress]); + + // Handle card long press + const handleCardLongPress = React.useCallback(() => { + onLongPress?.(); + }, [onLongPress]); + const { t } = useLocalization(); return ( + {/* Progress bar overlay - positioned absolutely behind content (Reanimated on native thread) */} {isPlaying && ( {asset.name || t('unnamedAsset')} @@ -228,7 +250,7 @@ function RecordAssetCardInternal({ )} - + {asset.created_at && new Date(asset.created_at).toLocaleString()} @@ -244,15 +266,21 @@ function RecordAssetCardInternal({ {/* Selection checkbox - only show for local assets in selection mode */} {isSelectionMode && isLocal && ( - + - + )} + ); } @@ -272,6 +300,7 @@ export const RecordAssetCard = React.memo(RecordAssetCardInternal, (prev, next) prev.asset.source === next.asset.source && prev.index === next.index && prev.isSelected === next.isSelected && + prev.isHighlighted === next.isHighlighted && prev.isSelectionMode === next.isSelectionMode && prev.isPlaying === next.isPlaying && // prev.progress removed - uses SharedValues now! diff --git a/views/new/recording/components/RecordAssetCardSkeleton.tsx b/views/new/recording/components/RecordAssetCardSkeleton.tsx new file mode 100644 index 000000000..f39b16254 --- /dev/null +++ b/views/new/recording/components/RecordAssetCardSkeleton.tsx @@ -0,0 +1,46 @@ +import { Icon } from '@/components/ui/icon'; +import { Text } from '@/components/ui/text'; +import { cn } from '@/utils/styleUtils'; +import { PlusIcon } from 'lucide-react-native'; +import React from 'react'; +import { View } from 'react-native'; + +function RecordAssetCardSkeletonInternal() { + return ( + + + {/* Nรบmero vazio - mantรฉm o tamanho */} + + {/* Quadro em branco */} + + + {/* Botรฃo com รญcone "+" */} + + {/* */} + + + + + + New Recording + + + + + Will be inserted here + + + + + + + + + ); +} + +export const RecordAssetCardSkeleton = React.memo(RecordAssetCardSkeletonInternal); From a61021463e5de35bba325cd9e00cd37401b05180 Mon Sep 17 00:00:00 2001 From: Rafael Winter Date: Wed, 4 Feb 2026 05:40:40 -0800 Subject: [PATCH 013/143] Update Record Button --- views/new/BibleAssetsView.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index 42f103369..2c06177e9 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -105,8 +105,10 @@ import { toCompilableQuery } from '@powersync/drizzle-driver'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { and, asc, eq, gte, lte } from 'drizzle-orm'; import { ScrollView as GHScrollView } from 'react-native-gesture-handler'; +import type { + ReorderableListReorderEvent +} from 'react-native-reorderable-list'; import ReorderableList, { - ReorderableListReorderEvent, reorderItems, useReorderableDrag } from 'react-native-reorderable-list'; @@ -747,6 +749,7 @@ export default function BibleAssetsView() { orderIndex: number; metadata: AssetMetadata | null; verseName: string; // e.g., "1:5" or "1:5-7" + name?: string; } | null>(null); const { membership } = useUserPermissions( @@ -977,7 +980,8 @@ export default function BibleAssetsView() { assetId, orderIndex, metadata, - verseName + verseName, + name: asset.name ?? undefined as string | undefined }); }, [selectedForRecording?.type, selectedForRecording?.assetId] @@ -3812,8 +3816,8 @@ export default function BibleAssetsView() { {selectedForRecording?.verseName - ? `${bookChapterLabelRef.current}:${selectedForRecording.verseName}` - : t('noLabelSelected')} + ? `${bookChapterLabelRef.current}:${selectedForRecording.verseName} ${selectedForRecording.name ? `${("- After "+selectedForRecording.name).slice(0, 20)}` : ''}` + : selectedForRecording?.name ? `${("After "+selectedForRecording.name).slice(0, 20)}` : `${t('noLabelSelected')}`} {/* {selectedForRecording?.verseName ? `${t('doRecord')} ${bookChapterLabelRef.current}:${selectedForRecording.verseName}` : t('doRecord')} */} From 12e668c77a8b4f233c32a95fbf9d40e4135e3f74 Mon Sep 17 00:00:00 2001 From: Rafael Winter Date: Thu, 5 Feb 2026 19:21:04 -0800 Subject: [PATCH 014/143] Adding function to selected between add or replace audio --- components/ButtonNewAssetAction.tsx | 133 ++++++++++++++++++ components/RecordingSelectionList.tsx | 45 ++++-- services/localizations.ts | 8 ++ views/new/BibleAssetsView.tsx | 4 +- views/new/RecordingView.tsx | 122 ++++++++++++---- .../recording/components/RecordAssetCard.tsx | 123 ++++++++++++---- 6 files changed, 372 insertions(+), 63 deletions(-) create mode 100644 components/ButtonNewAssetAction.tsx diff --git a/components/ButtonNewAssetAction.tsx b/components/ButtonNewAssetAction.tsx new file mode 100644 index 000000000..8bdb74176 --- /dev/null +++ b/components/ButtonNewAssetAction.tsx @@ -0,0 +1,133 @@ +import { cn, useThemeColor } from '@/utils/styleUtils'; +import { PlusIcon, Repeat2 } from 'lucide-react-native'; +import React, { useMemo } from 'react'; +import { Pressable, View } from 'react-native'; +import { Icon } from './ui/icon'; +import { Text } from './ui/text'; + +interface ButtonNewAssetActionProps { + type: 'new' | 'replace'; + onPress: () => void; + direction?: 'reverse'; + showText?: boolean; + selected?: boolean; + className?: string; +} + +const ButtonNewAssetActionComponent = ({ + type, + onPress, + direction, + showText = false, + selected = false, + className +}: ButtonNewAssetActionProps) => { + const primaryColor = useThemeColor('primary'); + const destructiveColor = useThemeColor('destructive'); + const mutedColor = useThemeColor('muted'); + + const buttonConfig = useMemo(() => { + const isNew = type === 'new'; + const baseColor = isNew ? primaryColor : destructiveColor; + + // If not selected, use muted color or a semi-transparent version + const backgroundColor = selected + ? baseColor + : (mutedColor || `${baseColor}40`); + + // Red border when replace is selected + const borderColor = selected && type === 'replace' ? destructiveColor : undefined; + + return { + backgroundColor, + borderColor, + icon: isNew ? PlusIcon : Repeat2, + text: isNew ? 'Add_new' : 'Replace', + iconColor: selected + ? (isNew ? 'text-primary-foreground' : 'text-destructive-foreground') + : 'text-muted-foreground' + }; + }, [type, primaryColor, destructiveColor, mutedColor, selected]); + + const iconElement = ( + + ); + + const textElement = showText && ( + + {buttonConfig.text} + + ); + + return ( + + + {direction === 'reverse' ? ( + <> + {textElement} + {iconElement} + + ) : ( + <> + {iconElement} + {textElement} + + )} + + + ); +}; + +/** + * Action button for adding or replacing assets + * + * @param type - Defines the action type: "new" (add) or "replace" (replace) + * @param onPress - Function executed when clicking the button + * @param direction - (Optional) If "reverse", displays text + icon; otherwise, icon + text + * @param showText - (Optional) If true, displays the text alongside the icon + * @param selected - (Optional) If true, shows normal color; if false, shows lighter/muted color. Defaults to true + * @param className - (Optional) Additional CSS classes + * + * @example + * ```tsx + * // Add button with icon only + * console.log('Add')} /> + * + * // Replace button with text + * console.log('Replace')} + * showText + * /> + * + * // Button with text and icon reversed, not selected + * console.log('Add')} + * showText + * direction="reverse" + * selected={false} + * /> + * ``` + */ +export const ButtonNewAssetAction = React.memo(ButtonNewAssetActionComponent); + +ButtonNewAssetAction.displayName = 'ButtonNewAssetAction'; diff --git a/components/RecordingSelectionList.tsx b/components/RecordingSelectionList.tsx index db578be9a..1ed417ad5 100644 --- a/components/RecordingSelectionList.tsx +++ b/components/RecordingSelectionList.tsx @@ -26,13 +26,14 @@ export interface RecordingSelectionListHandle { interface RecordingSelectionListPropsBase { value: number; // selected index (0..N, where N is "insert at end") onChange?: (index: number) => void; - onLongPress?: (index: number) => void; // Long press on an item - rowHeight: number; + rowHeight: number; // Default/base height for items className?: string; bottomInset?: number; boundaryComponent?: React.ReactNode; /** Extra data that triggers re-render when changed (e.g., isSelectionMode) */ extraData?: unknown; + /** Optional function to calculate height for each item dynamically */ + getItemHeight?: (item: unknown, index: number, isSelected: boolean) => number; } // Lazy rendering with data + renderItem @@ -44,8 +45,6 @@ interface RecordingSelectionListPropsLazy index: number, isSelected: boolean ) => React.ReactElement; - /** Return true if this item supports long press (for batch selection mode) */ - canLongPress?: (item: T, index: number) => boolean; } type RecordingSelectionListProps = @@ -64,7 +63,8 @@ function RecordingSelectionListInternal( boundaryComponent, data, renderItem, - extraData + extraData, + getItemHeight } = props; const listRef = React.useRef(null); @@ -121,11 +121,38 @@ function RecordingSelectionListInternal( return items; }, [data]); + // Optimize LegendList by providing item types (items with same type have similar heights) + const getItemType = React.useCallback( + (item: { type: 'item' | 'boundary'; index: number; data?: T }) => { + if (item.type === 'boundary') return 'boundary'; + + // If getItemHeight is provided, calculate the height and categorize + if (getItemHeight && item.data) { + const isSelected = item.index === value; + const height = getItemHeight(item.data, item.index, isSelected); + // Categorize by height ranges for better list performance + if (height <= 66) return 'small'; + if (height <= 132) return 'medium'; + return 'large'; + } + + return 'default'; + }, + [getItemHeight, value] + ); + // Render list item const renderListItem = React.useCallback( ({ item }: { item: (typeof listData)[number] }) => { const isSelected = item.index === value; + // Calculate height for this item + const itemHeight = item.type === 'boundary' + ? rowHeight + : getItemHeight + ? getItemHeight(item.data!, item.index, isSelected) + : rowHeight; + // Render boundary item if (item.type === 'boundary') { if (boundaryComponent) { @@ -135,7 +162,7 @@ function RecordingSelectionListInternal( // activeOpacity={0.7} // > {boundaryComponent} @@ -151,7 +178,7 @@ function RecordingSelectionListInternal( activeOpacity={0.7} > @@ -172,7 +199,7 @@ function RecordingSelectionListInternal( // Render data item - card handles its own press and long press return ( {renderItem(item.data!, item.index, isSelected)} @@ -182,6 +209,7 @@ function RecordingSelectionListInternal( [ value, rowHeight, + getItemHeight, boundaryComponent, handleItemPress, renderItem @@ -198,6 +226,7 @@ function RecordingSelectionListInternal( item.type === 'boundary' ? 'boundary' : `item-${item.index}` } estimatedItemSize={rowHeight} + getItemType={getItemType} showsVerticalScrollIndicator={true} contentContainerStyle={{ paddingBottom: bottomInset diff --git a/services/localizations.ts b/services/localizations.ts index d4bd8f786..2bfa65c05 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -4108,6 +4108,14 @@ export const localizations = { indonesian: 'Rekam ke', nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' }, + after: { + english: 'After', + spanish: 'Despuรฉs de', + brazilian_portuguese: 'Depois de', + tok_pisin: 'Despela', + indonesian: 'Setelah', + nepali: 'เคฌเคพเคฆเคฎเคพ' + }, noLabelSelected: { english: 'No label selected', spanish: 'Sin etiqueta seleccionada', diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index 2c06177e9..c93ce183b 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -3816,8 +3816,8 @@ export default function BibleAssetsView() { {selectedForRecording?.verseName - ? `${bookChapterLabelRef.current}:${selectedForRecording.verseName} ${selectedForRecording.name ? `${("- After "+selectedForRecording.name).slice(0, 20)}` : ''}` - : selectedForRecording?.name ? `${("After "+selectedForRecording.name).slice(0, 20)}` : `${t('noLabelSelected')}`} + ? `${bookChapterLabelRef.current}:${selectedForRecording.verseName} ${selectedForRecording.name ? `- ${(t('after')+" "+selectedForRecording.name).slice(0, 20)}` : ''}` + : selectedForRecording?.name ? `${(t('after')+" "+selectedForRecording.name).slice(0, 20)}` : `${t('noLabelSelected')}`} {/* {selectedForRecording?.verseName ? `${t('doRecord')} ${bookChapterLabelRef.current}:${selectedForRecording.verseName}` : t('doRecord')} */} diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index 468c22a04..e262d706a 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -1,3 +1,4 @@ +import { RecordingHelpDialog } from '@/components/RecordingHelpDialog'; import type { RecordingSelectionListHandle } from '@/components/RecordingSelectionList'; import RecordingSelectionList from '@/components/RecordingSelectionList'; import { VersePill } from '@/components/VersePill'; @@ -178,7 +179,8 @@ const RecordingView = () => { // Recording state const [isRecording, setIsRecording] = React.useState(false); - const [isVADLocked, setIsVADLocked] = React.useState(false); + const [isVADActive, setIsVADActive] = React.useState(false); + const [isReplacing, setIsReplacing] = React.useState(false); // VAD settings - persisted in local store for consistent UX // These settings are automatically saved to AsyncStorage and restored on app restart @@ -305,6 +307,10 @@ const RecordingView = () => { // Track footer height for proper scrolling const [footerHeight, setFooterHeight] = React.useState(0); const ROW_HEIGHT = 66; + const ROW_HEIGHT_INSERTION = 132; + const PILL_HEIGHT = 56; + const PILL_HEIGHT_INSERTION = 122; + // Dynamic verse tracking for automatic progression // Initialize with _verse.from if available, otherwise null (user must click "Add verse" button) @@ -712,7 +718,7 @@ const RecordingView = () => { // This is done in the next useEffect that monitors sessionItems.length change // If VAD is active, update recording context to use the new pill - if (isVADLocked) { + if (isVADActive) { const newVerse = { from: verseToAdd, to: verseToAdd }; currentRecordingVerseRef.current = newVerse; vadCounterRef.current = newOrderIndex + 1; @@ -720,7 +726,7 @@ const RecordingView = () => { `๐ŸŽฏ VAD: Updated to verse ${verseToAdd} | order_index: ${newOrderIndex + 1}` ); } - }, [verseToAdd, isVADLocked, addVersePill]); + }, [verseToAdd, isVADActive, addVersePill]); // Clamp insertion index when item count changes React.useEffect(() => { @@ -1160,6 +1166,9 @@ const RecordingView = () => { } setCurrentlyPlayingAssetId(null); + // Reset SharedValues when stopping + audioContext.positionShared.value = 0; + audioContext.durationShared.value = 0; debugLog('โธ๏ธ Stopped play all'); return; } @@ -1184,6 +1193,9 @@ const RecordingView = () => { if (!isPlayAllRunningRef.current) { debugLog('โธ๏ธ Play all cancelled'); setCurrentlyPlayingAssetId(null); + // Reset SharedValues when cancelled + audioContext.positionShared.value = 0; + audioContext.durationShared.value = 0; return; } @@ -1224,6 +1236,9 @@ const RecordingView = () => { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!isPlayAllRunningRef.current) { setCurrentlyPlayingAssetId(null); + // Reset SharedValues when cancelled + audioContext.positionShared.value = 0; + audioContext.durationShared.value = 0; return; } @@ -1236,7 +1251,16 @@ const RecordingView = () => { sound.setOnPlaybackStatusUpdate((status) => { if (!status.isLoaded) return; + // Update SharedValues for progress bar animation (60fps on UI thread) + if (status.isPlaying) { + audioContext.positionShared.value = status.positionMillis; + audioContext.durationShared.value = status.durationMillis ?? 0; + } + if (status.didJustFinish) { + // Reset SharedValues when segment finishes + audioContext.positionShared.value = 0; + audioContext.durationShared.value = 0; currentPlayAllSoundRef.current = null; void sound.unloadAsync().then(() => { resolve(); @@ -1260,17 +1284,23 @@ const RecordingView = () => { // Done playing all debugLog('โœ… Finished playing all assets'); setCurrentlyPlayingAssetId(null); + // Reset SharedValues when finished + audioContext.positionShared.value = 0; + audioContext.durationShared.value = 0; isPlayAllRunningRef.current = false; setIsPlayAllRunning(false); currentPlayAllSoundRef.current = null; } catch (error) { console.error('โŒ Failed to play all assets:', error); setCurrentlyPlayingAssetId(null); + // Reset SharedValues on error + audioContext.positionShared.value = 0; + audioContext.durationShared.value = 0; isPlayAllRunningRef.current = false; setIsPlayAllRunning(false); currentPlayAllSoundRef.current = null; } - }, [getAssetAudioUris, insertionIndex, sessionItems]); + }, [audioContext, getAssetAudioUris, insertionIndex, sessionItems]); // ============================================================================ // RECORDING HANDLERS @@ -1347,7 +1377,7 @@ const RecordingView = () => { // Initialize VAD counter and verse when VAD mode activates React.useEffect(() => { - if (isVADLocked && vadCounterRef.current === null) { + if (isVADActive && vadCounterRef.current === null) { // Capture current position when VAD starts vadInsertionIndexRef.current = insertionIndexRef.current; @@ -1373,7 +1403,7 @@ const RecordingView = () => { debugLog( `๐ŸŽฏ VAD initialized ${contextIsAtEnd ? 'at END' : 'in MIDDLE'} | index: ${insertionIndexRef.current} | item: "${itemName}" | order_index: ${orderIndex} | verse: ${verse ? `${verse.from}-${verse.to}` : 'null'}` ); - } else if (!isVADLocked) { + } else if (!isVADActive) { vadCounterRef.current = null; vadInsertionIndexRef.current = null; console.log( @@ -1384,7 +1414,7 @@ const RecordingView = () => { vadIsAtEndRef.current = false; } }, [ - isVADLocked, + isVADActive, sessionItems, currentDynamicVerse, assets.length, @@ -1652,7 +1682,7 @@ const RecordingView = () => { } = useVADRecording({ threshold: vadThreshold, silenceDuration: vadSilenceDuration, - isVADActive: isVADLocked, + isVADActive: isVADActive, onSegmentStart: handleVADSegmentStart, onSegmentComplete: handleVADSegmentComplete, isManualRecording: isRecording @@ -1660,13 +1690,13 @@ const RecordingView = () => { // Invalidate queries when VAD mode ends React.useEffect(() => { - if (!isVADLocked) { + if (!isVADActive) { void queryClient.invalidateQueries({ queryKey: ['assets', 'by-quest', currentQuestId], exact: false }); } - }, [isVADLocked, currentQuestId, queryClient]); + }, [isVADActive, currentQuestId, queryClient]); // ============================================================================ // LAZY LOAD SEGMENT COUNTS @@ -2379,6 +2409,10 @@ const RecordingView = () => { const stableHandleRenameAsset = React.useCallback(handleRenameAsset, [ handleRenameAsset ]); + + const stableHandleActionTypeChange = React.useCallback((isReplacingMode: boolean) => { + setIsReplacing(isReplacingMode); + }, []); // ============================================================================ // OPTIMIZED CALLBACKS MAP - Prevents creating new functions in wheelChildren @@ -2485,12 +2519,17 @@ const RecordingView = () => { const callbacks = pillCallbacksMap.get(item.id); return ( - + <> + + {isHighlighted && !isReplacing && + + } + ); } @@ -2528,6 +2567,7 @@ const RecordingView = () => { const isHighlighted = insertionIndex === index; return ( + <> { onDelete={stableHandleDeleteLocalAsset} onMerge={stableHandleMergeDownLocal} onRename={stableHandleRenameAsset} - /> + onActionTypeChange={stableHandleActionTypeChange} + /> + {isHighlighted && !isReplacing && + + } + ); }, [ @@ -2563,7 +2608,9 @@ const RecordingView = () => { assetDurations, stableHandleDeleteLocalAsset, stableHandleMergeDownLocal, - stableHandleRenameAsset + stableHandleRenameAsset, + isReplacing, + stableHandleActionTypeChange ] ); @@ -2612,7 +2659,7 @@ const RecordingView = () => { // The list starts empty and only shows assets recorded in this session // Show full-screen overlay when VAD is locked and display mode is fullscreen - const showFullScreenOverlay = isVADLocked && vadDisplayMode === 'fullscreen'; + const showFullScreenOverlay = isVADActive && vadDisplayMode === 'fullscreen'; const addButtonComponent = useMemo(() => { // Apply same conditions as floating button (line 3050) @@ -2655,9 +2702,10 @@ const RecordingView = () => { const boundaryComponent = useMemo( () => ( <> + {!insertionIndex && !isReplacing && ( - + )} { ), - [addButtonComponent] + [addButtonComponent, insertionIndex, isReplacing] + ); + + // Calculate dynamic height for each item based on type and highlight state + const getItemHeight = React.useCallback( + (item: ListItem, index: number, _isSelected: boolean) => { + const isHighlighted = insertionIndex === index; + + if (isPill(item)) { + // Pill: use PILL_HEIGHT or PILL_HEIGHT_INSERTION if highlighted (and skeleton visible) + return isHighlighted && !isReplacing ? PILL_HEIGHT_INSERTION : PILL_HEIGHT; + } + + // Asset card: use ROW_HEIGHT or ROW_HEIGHT_INSERTION if highlighted (and skeleton visible) + return isHighlighted && !isReplacing ? ROW_HEIGHT_INSERTION : ROW_HEIGHT; + }, + [insertionIndex, isReplacing] ); return ( @@ -2702,7 +2766,7 @@ const RecordingView = () => { isRecordingShared={isRecordingShared} onCancel={() => { // Cancel VAD mode - setIsVADLocked(false); + setIsVADActive(false); }} /> )} @@ -2760,10 +2824,10 @@ const RecordingView = () => { {/* {(isRecording || isVADRecording)? ( */} - {isVADLocked ? ( + {isVADActive ? ( {highlightedItemVerse ? `${t('recording')}: ${formatVerseRange(highlightedItemVerse)}` @@ -2784,9 +2848,8 @@ const RecordingView = () => { ref={listRef} value={insertionIndex} onChange={handleListIndexChange} - onLongPress={handleListLongPress} - canLongPress={canListItemLongPress} rowHeight={ROW_HEIGHT} + getItemHeight={getItemHeight} className="h-full flex-1" bottomInset={footerHeight} boundaryComponent={boundaryComponent} @@ -2819,8 +2882,8 @@ const RecordingView = () => { onRecordingComplete={handleRecordingComplete} onRecordingDiscarded={handleRecordingDiscarded} onLayout={setFooterHeight} - isVADLocked={isVADLocked} - onVADLockChange={setIsVADLocked} + isVADActive={isVADActive} + onVADActiveChange={setIsVADActive} onSettingsPress={() => setShowVADSettings(true)} onAutoCalibratePress={() => { setAutoCalibrateOnOpen(true); @@ -2864,12 +2927,13 @@ const RecordingView = () => { onThresholdChange={setVadThreshold} silenceDuration={vadSilenceDuration} onSilenceDurationChange={setVadSilenceDuration} - isVADLocked={isVADLocked} + isVADActive={isVADActive} displayMode={vadDisplayMode} onDisplayModeChange={setVadDisplayMode} autoCalibrateOnOpen={autoCalibrateOnOpen} energyShared={energyShared} /> + ); }; diff --git a/views/new/recording/components/RecordAssetCard.tsx b/views/new/recording/components/RecordAssetCard.tsx index 41b0c7383..f89a13383 100644 --- a/views/new/recording/components/RecordAssetCard.tsx +++ b/views/new/recording/components/RecordAssetCard.tsx @@ -19,6 +19,7 @@ * - Memoized to prevent unnecessary re-renders */ +import { ButtonNewAssetAction } from '@/components/ButtonNewAssetAction'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; import { useAudio } from '@/contexts/AudioContext'; @@ -59,6 +60,7 @@ interface AssetCardProps { onLongPress?: () => void; onPlay: (assetId: string) => void; onRename?: (assetId: string, currentName: string | null) => void; + onActionTypeChange?: (isReplacing: boolean) => void; // Notifies when action type changes // Note: These callbacks are still passed but no longer used (batch operations only) onDelete?: (assetId: string) => void; onMerge?: (index: number) => void; @@ -74,6 +76,38 @@ function formatDuration(ms: number): string { return `${minutes}:${seconds.toString().padStart(2, '0')}`; } +// Component to manage mutually exclusive button selection +function AssetActionButtons({ + selectedType, + onSelectionChange +}: { + selectedType: 'new' | 'replace'; + onSelectionChange: (type: 'new' | 'replace') => void; +}) { + const handleNewPress = React.useCallback(() => { + onSelectionChange('new'); + }, [onSelectionChange]); + + const handleReplacePress = React.useCallback(() => { + onSelectionChange('replace'); + }, [onSelectionChange]); + + return ( + + + + + ); +} + function RecordAssetCardInternal({ asset, index, @@ -87,10 +121,38 @@ function RecordAssetCardInternal({ onPress, onLongPress, onPlay, - onRename + onRename, + onActionTypeChange }: AssetCardProps) { const audioContext = useAudio(); + // State for action button selection (always one selected, default is 'new') + const [actionType, setActionType] = React.useState<'new' | 'replace'>('new'); + + // Reset action type to 'new' when card is no longer highlighted + React.useEffect(() => { + if (!isHighlighted) { + setActionType('new'); + } + }, [isHighlighted]); + + // Notify parent when action type changes + React.useEffect(() => { + onActionTypeChange?.(actionType === 'replace'); + }, [actionType, onActionTypeChange]); + + // Theme colors based on action type (memoized for performance) + const themeColors = React.useMemo(() => { + const isReplace = actionType === 'replace'; + return { + playButtonBg: isReplace ? 'bg-destructive/20' : 'bg-primary/20', + playButtonActive: isReplace ? 'active:bg-destructive/40' : 'active:bg-primary/40', + progressBar: isReplace ? 'bg-destructive/20' : 'bg-primary/20', + segmentBadge: isReplace ? 'bg-destructive/20' : 'bg-primary/20', + textColor: isReplace ? 'text-red-500' : 'text-primary' + }; + }, [actionType]); + // CRITICAL: Only local-only assets can be renamed/edited/deleted (synced assets are immutable) const isLocal = asset.source === 'local'; // Renameable = local and not currently saving @@ -180,7 +242,7 @@ function RecordAssetCardInternal({ className={cn( 'relative overflow-hidden rounded-lg border p-3', isHighlighted && !isSelectionMode - ? 'border-primary bg-card' + ? (actionType === 'replace' ? 'border-destructive bg-destructive/10' : 'border-primary bg-card') : isSelected ? 'border-primary bg-primary/10' : 'border-border bg-card' @@ -193,7 +255,7 @@ function RecordAssetCardInternal({ pointerEvents="none" > @@ -212,14 +274,17 @@ function RecordAssetCardInternal({ {/* Play/Pause Button */} @@ -242,7 +307,7 @@ function RecordAssetCardInternal({ {segmentCount && segmentCount > 1 && ( - + {segmentCount} @@ -250,35 +315,44 @@ function RecordAssetCardInternal({ )} - + {/* {asset.created_at && new Date(asset.created_at).toLocaleString()} - - - + */} {duration !== undefined && duration > 0 && ( {formatDuration(duration)} - )} + )} + + + {/* Selection checkbox - only show for local assets in selection mode */} - {isSelectionMode && isLocal && ( - - + - - )} + /> + + ) : isHighlighted ? ( + + ) : null + ) } @@ -314,6 +388,7 @@ export const RecordAssetCard = React.memo(RecordAssetCardInternal, (prev, next) prev.onLongPress === next.onLongPress && prev.onPlay === next.onPlay && prev.onRename === next.onRename && + prev.onActionTypeChange === next.onActionTypeChange && prev.onDelete === next.onDelete && prev.onMerge === next.onMerge && prev.onEdit === next.onEdit From 067e7900d35aac3ee7dd377f3f1f0d25df1a7aa5 Mon Sep 17 00:00:00 2001 From: Rafael Winter Date: Thu, 5 Feb 2026 19:31:18 -0800 Subject: [PATCH 015/143] Fix play all assets when no card is selected --- views/new/RecordingView.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index e262d706a..c496f32c6 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -1182,12 +1182,16 @@ const RecordingView = () => { isPlayAllRunningRef.current = true; setIsPlayAllRunning(true); - debugLog(`๐ŸŽต Starting play all from wheel position ${insertionIndex}`); + // If no item is selected (at end of list), start from the beginning + // Otherwise, start from the selected item + const startIndex = insertionIndex >= sessionItems.length ? 0 : insertionIndex; + + debugLog(`๐ŸŽต Starting play all from position ${startIndex} (insertionIndex: ${insertionIndex})`); let assetsPlayed = 0; - // Iterate directly through sessionItems starting from insertionIndex - for (let wheelIndex = insertionIndex; wheelIndex < sessionItems.length; wheelIndex++) { + // Iterate directly through sessionItems starting from startIndex + for (let wheelIndex = startIndex; wheelIndex < sessionItems.length; wheelIndex++) { // Check if cancelled // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!isPlayAllRunningRef.current) { From 04d76cee861339b8f18b64f66bcc3d5396897338 Mon Sep 17 00:00:00 2001 From: Rafael Winter Date: Fri, 6 Feb 2026 07:59:31 -0800 Subject: [PATCH 016/143] Hide buttons when recording --- views/new/RecordingView.tsx | 133 ++++++++++++++---- .../recording/components/RecordAssetCard.tsx | 7 +- 2 files changed, 109 insertions(+), 31 deletions(-) diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index c496f32c6..589c95211 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -28,11 +28,10 @@ import { useQueryClient } from '@tanstack/react-query'; import { and, asc, eq } from 'drizzle-orm'; import { Audio } from 'expo-av'; import { - ArrowDownNarrowWide, ArrowLeft, ChevronLeft, + Ellipsis, ListVideo, - Mic, PauseIcon, Plus } from 'lucide-react-native'; @@ -212,6 +211,8 @@ const RecordingView = () => { from: number; to: number; } | null>(null); + // Track asset to replace (when replace mode is active) + const assetToReplaceRef = React.useRef(null); const vadCounterRef = React.useRef(null); const dbWriteQueueRef = React.useRef>(Promise.resolve()); @@ -743,6 +744,10 @@ const RecordingView = () => { // Used to determine if we should move insertionIndex to the new item const wasRecordingInMiddleRef = React.useRef(false); + // Track if the last recording was a replace operation + // When replacing, we don't move insertionIndex since we're staying on the same position + const wasReplaceRef = React.useRef(false); + // Track if a pill was just added (to distinguish from asset recording) const wasPillAddedRef = React.useRef(false); @@ -754,20 +759,17 @@ const RecordingView = () => { // Only scroll if a new item was added (count increased) if (currentCount > previousCount && currentCount > 0) { console.log( - `๐Ÿ“œ Item added | prevCount: ${previousCount} โ†’ ${currentCount} | insertionIndex: ${insertionIndex} | wasInMiddle: ${wasRecordingInMiddleRef.current} | wasPillAdded: ${wasPillAddedRef.current}` - ); - - console.log( - '[recording in the middle]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', - wasRecordingInMiddleRef.current + `๐Ÿ“œ Item added | prevCount: ${previousCount} โ†’ ${currentCount} | insertionIndex: ${insertionIndex} | wasInMiddle: ${wasRecordingInMiddleRef.current} | wasPillAdded: ${wasPillAddedRef.current} | wasReplace: ${wasReplaceRef.current}` ); const wasInMiddle = wasRecordingInMiddleRef.current; const wasPillAdded = wasPillAddedRef.current; + const wasReplace = wasReplaceRef.current; // Reset the flags wasRecordingInMiddleRef.current = false; wasPillAddedRef.current = false; + wasReplaceRef.current = false; if (wasPillAdded) { // A pill was added - move to the end @@ -786,6 +788,22 @@ const RecordingView = () => { timeoutIdsRef.current.delete(timeoutId); }, 100); timeoutIdsRef.current.add(timeoutId); + } else if (wasReplace) { + // REPLACE MODE: Stay on the same position - new asset replaced the old one + console.log( + `๐Ÿ“ Replace mode - staying at position: ${insertionIndex}` + ); + // Don't change insertionIndex - we're staying on the newly replaced asset + // Scroll to current position to ensure visibility + const timeoutId = setTimeout(() => { + try { + listRef.current?.scrollToIndex(insertionIndex, true); + } catch (error) { + console.error('Failed to scroll after replace:', error); + } + timeoutIdsRef.current.delete(timeoutId); + }, 100); + timeoutIdsRef.current.add(timeoutId); } else if (wasInMiddle) { // Recorded in the middle - move to the new asset const newIndex = insertionIndex + 1; @@ -1398,6 +1416,17 @@ const RecordingView = () => { const selectedItem = contextIsAtEnd ? sessionItems[sessionItems.length - 1] : sessionItems[insertionIndexRef.current]; + + // REPLACE MODE: Capture the asset to replace when VAD starts (only first segment will delete it) + const highlightedItem = sessionItems[insertionIndexRef.current]; + console.log(`๐Ÿ” VAD REPLACE DEBUG | isReplacing: ${isReplacing} | contextIsAtEnd: ${contextIsAtEnd} | highlightedItem: ${highlightedItem ? (isPill(highlightedItem) ? 'PILL' : `ASSET:${highlightedItem.name}`) : 'null'}`); + + if (isReplacing && highlightedItem && !isPill(highlightedItem)) { + assetToReplaceRef.current = highlightedItem.id; + console.log(`๐Ÿ”„ VAD REPLACE MODE: Will replace asset "${highlightedItem.name}" (${highlightedItem.id.slice(0, 8)})`); + } + // Note: Don't reset assetToReplaceRef here if not replacing - it might have been set by manual recording + const itemName = selectedItem ? isPill(selectedItem) ? `pill-${selectedItem.verse?.from ?? 'null'}` @@ -1422,17 +1451,19 @@ const RecordingView = () => { sessionItems, currentDynamicVerse, assets.length, - getInsertionContext + getInsertionContext, + isReplacing ]); // Manual recording handlers const handleRecordingStart = React.useCallback(() => { + console.log('๐Ÿš€ handleRecordingStart CALLED! isRecording:', isRecording); if (isRecording) return; const currentInsertionIndex = insertionIndexRef.current; console.log( - `๐ŸŽฌ Recording START | insertionIndex: ${currentInsertionIndex} | sessionItems.length: ${sessionItems.length}` + `๐ŸŽฌ Recording START | insertionIndex: ${currentInsertionIndex} | sessionItems.length: ${sessionItems.length} | isReplacing: ${isReplacing}` ); // Get insertion context (order_index and verse) based on current position @@ -1447,6 +1478,22 @@ const RecordingView = () => { // Track if we're recording in the middle (for auto-scroll behavior) wasRecordingInMiddleRef.current = !isAtEnd; + // REPLACE MODE: Capture the asset to replace (only if highlighted item is an asset) + // Use insertionIndex directly to get the highlighted item + const highlightedItem = sessionItems[currentInsertionIndex]; + + console.log(`๐Ÿ” REPLACE DEBUG | isReplacing: ${isReplacing} | isAtEnd: ${isAtEnd} | currentInsertionIndex: ${currentInsertionIndex} | highlightedItem: ${highlightedItem ? (isPill(highlightedItem) ? 'PILL' : `ASSET:${highlightedItem.name}`) : 'null'}`); + + if (isReplacing && highlightedItem && !isPill(highlightedItem)) { + assetToReplaceRef.current = highlightedItem.id; + console.log(`๐Ÿ”„ REPLACE MODE: Will replace asset "${highlightedItem.name}" (${highlightedItem.id.slice(0, 8)})`); + } else { + assetToReplaceRef.current = null; + if (isReplacing) { + console.log(`โš ๏ธ REPLACE MODE FAILED: ${!highlightedItem ? 'No highlighted item' : isPill(highlightedItem) ? 'Item is a pill' : 'Unknown reason'}`); + } + } + // Update appendOrderIndexRef to point to next position after this recording // This serves as a fallback for empty lists or initial state if (isAtEnd) { @@ -1465,19 +1512,16 @@ const RecordingView = () => { setIsRecording(true); - const selectedItem = isAtEnd - ? sessionItems[sessionItems.length - 1] - : sessionItems[currentInsertionIndex]; - const itemName = selectedItem - ? isPill(selectedItem) - ? `pill-${selectedItem.verse?.from ?? 'null'}` - : selectedItem.name + const itemName = highlightedItem + ? isPill(highlightedItem) + ? `pill-${highlightedItem.verse?.from ?? 'null'}` + : highlightedItem.name : 'none'; console.log( `๐ŸŽฏ Recording ${isAtEnd ? 'at END' : 'in MIDDLE'} | index: ${currentInsertionIndex} | item: "${itemName}" | order_index: ${orderIndex} | verse: ${verse ? `${verse.from}-${verse.to}` : 'null'}` ); - }, [isRecording, sessionItems, getInsertionContext]); + }, [isRecording, sessionItems, getInsertionContext, isReplacing]); const handleRecordingStop = React.useCallback(() => { debugLog('๐Ÿ›‘ Manual recording stop'); @@ -1491,6 +1535,31 @@ const RecordingView = () => { const handleRecordingComplete = React.useCallback( async (uri: string, _duration: number, _waveformData: number[]) => { + // REPLACE MODE: Delete the asset being replaced (only once, on first recording) + console.log(`๐Ÿ” handleRecordingComplete | assetToReplaceRef.current: ${assetToReplaceRef.current?.slice(0, 8) ?? 'null'}`); + if (assetToReplaceRef.current) { + const assetIdToReplace = assetToReplaceRef.current; + assetToReplaceRef.current = null; // Clear immediately to prevent duplicate deletions + setIsReplacing(false); // Reset replace mode after first recording + wasReplaceRef.current = true; // Mark as replace so auto-scroll doesn't move position + + console.log(`๐Ÿ”„ REPLACE: Deleting asset ${assetIdToReplace.slice(0, 8)} before saving new recording`); + + try { + await audioSegmentService.deleteAudioSegment(assetIdToReplace); + // Remove from session assets list + setSessionItems((prev) => prev.filter((a) => a.id !== assetIdToReplace)); + await queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + console.log(`โœ… REPLACE: Asset deleted successfully`); + } catch (e) { + console.error('โŒ REPLACE: Failed to delete asset', e); + wasReplaceRef.current = false; // Reset on error + } + } + // Recalculate order_index based on current list state // This ensures each consecutive recording gets a unique incremented order_index const currentContext = getInsertionContext(insertionIndexRef.current); @@ -2530,8 +2599,8 @@ const RecordingView = () => { isHighlighted={isHighlighted} onPress={callbacks?.onPress} /> - {isHighlighted && !isReplacing && - + {isHighlighted && + } ); @@ -2580,6 +2649,7 @@ const RecordingView = () => { isHighlighted={isHighlighted} isSelectionMode={isSelectionMode} isPlaying={isThisAssetPlaying} + hideButtons={isRecording || isVADActive} duration={duration} canMergeDown={canMergeDown} segmentCount={item.segmentCount} @@ -2614,7 +2684,9 @@ const RecordingView = () => { stableHandleMergeDownLocal, stableHandleRenameAsset, isReplacing, - stableHandleActionTypeChange + stableHandleActionTypeChange, + isRecording, + isVADActive ] ); @@ -2706,10 +2778,13 @@ const RecordingView = () => { const boundaryComponent = useMemo( () => ( <> - {!insertionIndex && !isReplacing && ( - - - )} + { + (sessionItems.length === 0 || insertionIndex >= sessionItems.length) && ( + + + + ) + } { > {/* Language-agnostic visual: mic + circle-plus = "add recording here" */} - - + {/* + /> */} {addButtonComponent} diff --git a/views/new/recording/components/RecordAssetCard.tsx b/views/new/recording/components/RecordAssetCard.tsx index f89a13383..851438751 100644 --- a/views/new/recording/components/RecordAssetCard.tsx +++ b/views/new/recording/components/RecordAssetCard.tsx @@ -50,6 +50,7 @@ interface AssetCardProps { isHighlighted: boolean; // Visual highlight (recording insertion point) isSelectionMode: boolean; isPlaying: boolean; + hideButtons?: boolean; // Hide action buttons // progress removed - now calculated from SharedValues for 0 re-renders! duration?: number; // Duration in milliseconds segmentCount?: number; // Number of audio segments in this asset @@ -115,6 +116,7 @@ function RecordAssetCardInternal({ isHighlighted, isSelectionMode, isPlaying, + hideButtons, duration, segmentCount, customProgress, @@ -242,7 +244,7 @@ function RecordAssetCardInternal({ className={cn( 'relative overflow-hidden rounded-lg border p-3', isHighlighted && !isSelectionMode - ? (actionType === 'replace' ? 'border-destructive bg-destructive/10' : 'border-primary bg-card') + ? (actionType === 'replace' ? 'border-destructive border-dashed bg-destructive/10' : 'border-primary bg-card') : isSelected ? 'border-primary bg-primary/10' : 'border-border bg-card' @@ -346,7 +348,7 @@ function RecordAssetCardInternal({ className={isSelected ? 'text-primary' : 'text-muted-foreground'} /> - ) : isHighlighted ? ( + ) : isHighlighted && !hideButtons ? ( Date: Sat, 7 Feb 2026 10:39:32 -0800 Subject: [PATCH 017/143] Just implementing UI first --- components/WaveformVisualizer.tsx | 20 +- services/localizations.ts | 16 + store/localStore.ts | 2 +- views/new/BibleAssetsView.tsx | 4 +- .../components/BibleRecordingView.tsx | 80 +++- .../components/RecordingViewSimplified.tsx | 60 ++- .../components/SelectionControls.tsx | 53 ++- .../recording/components/TrimSegmentModal.tsx | 415 ++++++++++++++++++ 8 files changed, 623 insertions(+), 27 deletions(-) create mode 100644 views/new/recording/components/TrimSegmentModal.tsx diff --git a/components/WaveformVisualizer.tsx b/components/WaveformVisualizer.tsx index d09f417da..ab282d712 100644 --- a/components/WaveformVisualizer.tsx +++ b/components/WaveformVisualizer.tsx @@ -10,6 +10,8 @@ interface WaveformVisualizerProps { height?: number; color?: string; backgroundColor?: string; + borderColor?: string; + borderWidth?: number; barCount?: number; // When provided, render at most this many bars (last N โ†’ scrolling) } @@ -20,6 +22,8 @@ const WaveformVisualizer: React.FC = ({ height = 60, color = colors.primary, backgroundColor = colors.inputBackground, + borderColor, + borderWidth, barCount }) => { const displayedData = React.useMemo(() => { @@ -31,8 +35,22 @@ const WaveformVisualizer: React.FC = ({ const barWidth = width / Math.max(1, displayedData.length); const maxHeight = height - 4; // Leave some padding + const resolvedBorderColor = borderColor ?? colors.inputBorder; + const resolvedBorderWidth = borderWidth ?? styles.container.borderWidth ?? 0; + return ( - + {displayedData.map((amplitude, index) => { const barHeight = Math.max(2, amplitude * maxHeight); diff --git a/services/localizations.ts b/services/localizations.ts index 1055e8686..d3a174292 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -1563,6 +1563,22 @@ export const localizations = { indonesian: 'Gabungkan', nepali: 'เคฎเคฐเฅเคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' }, + trim: { + english: 'Trim', + spanish: 'Recortar', + brazilian_portuguese: 'Cortar', + tok_pisin: 'Katim', + indonesian: 'Pangkas', + nepali: 'เคŸเฅเคฐเคฟเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + }, + trimSegment: { + english: 'Trim Segment', + spanish: 'Recortar segmento', + brazilian_portuguese: 'Cortar segmento', + tok_pisin: 'Katim segment', + indonesian: 'Pangkas segmen', + nepali: 'เค–เคฃเฅเคก เคŸเฅเคฐเคฟเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + }, failedToMergeAssets: { english: 'Failed to merge assets. Please try again.', spanish: 'Error al combinar los recursos. Por favor, intรฉntalo de nuevo.', diff --git a/store/localStore.ts b/store/localStore.ts index 8fc92b4e8..18ba4c5df 100644 --- a/store/localStore.ts +++ b/store/localStore.ts @@ -557,7 +557,7 @@ export const useLocalStore = create()( 'currentProjectId', 'currentQuestId', 'currentAssetId', - 'navigationStack' + //'navigationStack' //removing this allows the app to remember the last view ].includes(key) ) ) diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index 2cd78dd32..863045190 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -109,7 +109,7 @@ import { ScrollView as GHScrollView } from 'react-native-gesture-handler'; import Sortable from 'react-native-sortables'; import { BibleAssetListItem } from './BibleAssetListItem'; import BibleRecordingView from './recording/components/BibleRecordingView'; -import { BibleSelectionControls } from './recording/components/BibleSelectionControls'; +import { SelectionControls } from './recording/components/SelectionControls'; import { RenameAssetDrawer } from './recording/components/RenameAssetDrawer'; import { useSelectionMode } from './recording/hooks/useSelectionMode'; // import RecordingViewSimplified from './recording/components/RecordingViewSimplified'; @@ -3708,7 +3708,7 @@ export default function BibleAssetsView() { className="px-2" > {isSelectionMode ? ( - (null); + // Rename drawer state const [showRenameDrawer, setShowRenameDrawer] = React.useState(false); const [renameAssetId, setRenameAssetId] = React.useState(null); @@ -365,6 +371,10 @@ const BibleRecordingView = ({ Map >(new Map()); + const [assetWaveformData, setAssetWaveformData] = React.useState< + Map + >(new Map()); + // SESSION-ONLY ITEMS: Assets and verse pills created during this recording session // When user exits and returns, the list starts with just the initial verse pill // Assets are still saved to database, but we don't load existing ones @@ -1574,6 +1584,12 @@ const BibleRecordingView = ({ verse: verseToUse }); + setAssetWaveformData((prev) => { + const next = new Map(prev); + next.set(newAssetId, _waveformData); + return next; + }); + // Track which verse was recorded (for order_index normalization on return) // If no verse is assigned, use 999 (UNASSIGNED_VERSE_BASE) const verseToTrack = verseToUse?.from ?? 999; @@ -2251,6 +2267,40 @@ const BibleRecordingView = ({ ); }, [assets, selectedAssetIds, cancelSelection, queryClient, currentQuestId]); + const handleOpenTrimModal = React.useCallback(() => { + if (selectedAssetIds.size < 1) return; + const selectedIds = Array.from(selectedAssetIds); + const firstSelectedId = selectedIds[0]; + if (!firstSelectedId) return; + if (selectedIds.length > 1) { + console.warn( + 'Trim modal opened with multiple selected assets; using first selection.' + ); + } + setTrimTargetAssetId(firstSelectedId); + setIsTrimModalOpen(true); + }, [selectedAssetIds]); + + const handleCloseTrimModal = React.useCallback(() => { + setIsTrimModalOpen(false); + setTrimTargetAssetId(null); + }, []); + + const trimTargetAsset = React.useMemo(() => { + if (!trimTargetAssetId) return null; + return assets.find((asset) => asset.id === trimTargetAssetId) ?? null; + }, [assets, trimTargetAssetId]); + + const trimWaveformData = React.useMemo(() => { + if (!trimTargetAssetId) return undefined; + return assetWaveformData.get(trimTargetAssetId); + }, [assetWaveformData, trimTargetAssetId]); + + const canTrimSelected = React.useMemo( + () => !!trimWaveformData && trimWaveformData.length > 0, + [trimWaveformData] + ); + // ============================================================================ // SELECT ALL / DESELECT ALL // ============================================================================ @@ -2741,6 +2791,7 @@ const BibleRecordingView = ({ selectedCount={selectedAssetIds.size} onCancel={cancelSelection} onMerge={handleBatchMergeSelected} + onTrim={canTrimSelected ? handleOpenTrimModal : undefined} onDelete={handleBatchDeleteSelected} allowSelectAll={true} allSelected={allSelected} @@ -2771,6 +2822,13 @@ const BibleRecordingView = ({ )} + + {/* Rename drawer */} (null); + // Rename drawer state const [showRenameDrawer, setShowRenameDrawer] = React.useState(false); const [renameAssetId, setRenameAssetId] = React.useState(null); @@ -224,6 +230,10 @@ const RecordingViewSimplified = ({ Map >(new Map()); + const [assetWaveformData, setAssetWaveformData] = React.useState< + Map + >(new Map()); + // Load assets from database // Use initialAssets if provided to avoid redundant query and instant render const { @@ -1061,7 +1071,7 @@ const RecordingViewSimplified = ({ if (!targetLanguoidId) { throw new Error('Target languoid not found for project'); } - await saveRecording({ + const newAssetId = await saveRecording({ questId: currentQuestId, projectId: currentProjectId, targetLanguoidId: targetLanguoidId, @@ -1070,6 +1080,12 @@ const RecordingViewSimplified = ({ audioUri: localUri, assetName: assetName // Pass the reserved name }); + + setAssetWaveformData((prev) => { + const next = new Map(prev); + next.set(newAssetId, _waveformData); + return next; + }); // Release the reserved name after successful save pendingAssetNamesRef.current.delete(assetName); debugLog( @@ -1708,6 +1724,40 @@ const RecordingViewSimplified = ({ ); }, [assets, selectedAssetIds, cancelSelection, queryClient, currentQuestId]); + const handleOpenTrimModal = React.useCallback(() => { + if (selectedAssetIds.size < 1) return; + const selectedIds = Array.from(selectedAssetIds); + const firstSelectedId = selectedIds[0]; + if (!firstSelectedId) return; + if (selectedIds.length > 1) { + console.warn( + 'Trim modal opened with multiple selected assets; using first selection.' + ); + } + setTrimTargetAssetId(firstSelectedId); + setIsTrimModalOpen(true); + }, [selectedAssetIds]); + + const handleCloseTrimModal = React.useCallback(() => { + setIsTrimModalOpen(false); + setTrimTargetAssetId(null); + }, []); + + const trimTargetAsset = React.useMemo(() => { + if (!trimTargetAssetId) return null; + return assets.find((asset) => asset.id === trimTargetAssetId) ?? null; + }, [assets, trimTargetAssetId]); + + const trimWaveformData = React.useMemo(() => { + if (!trimTargetAssetId) return undefined; + return assetWaveformData.get(trimTargetAssetId); + }, [assetWaveformData, trimTargetAssetId]); + + const canTrimSelected = React.useMemo( + () => !!trimWaveformData && trimWaveformData.length > 0, + [trimWaveformData] + ); + // ============================================================================ // RENAME ASSET // ============================================================================ @@ -2103,6 +2153,7 @@ const RecordingViewSimplified = ({ selectedCount={selectedAssetIds.size} onCancel={cancelSelection} onMerge={handleBatchMergeSelected} + onTrim={canTrimSelected ? handleOpenTrimModal : undefined} onDelete={handleBatchDeleteSelected} /> @@ -2131,6 +2182,13 @@ const RecordingViewSimplified = ({ )} + + {/* Rename drawer */} void; onMerge: () => void; onDelete: () => void; + onTrim?: () => void; + onAssignVerse?: () => void; allowSelectAll?: boolean; allSelected?: boolean; onSelectAll?: () => void; @@ -31,11 +41,15 @@ export const SelectionControls = React.memo(function SelectionControls({ onCancel, onMerge, onDelete, + onTrim, + onAssignVerse, allowSelectAll = false, allSelected = false, onSelectAll }: SelectionControlsProps) { const { t } = useLocalization(); + const shouldShowTrim = selectedCount === 1 && !!onTrim; + const shouldShowMerge = selectedCount >= 2; return ( ({selectedCount}) @@ -46,16 +60,33 @@ export const SelectionControls = React.memo(function SelectionControls({ )} - + {onAssignVerse && ( + + )} + {shouldShowTrim ? ( + + ) : shouldShowMerge ? ( + + ) : null} + + + + + + + ); +} From 8f2fe770d69419ee254ab7e5c8a0815d7de8a14a Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 7 Feb 2026 11:53:58 -0800 Subject: [PATCH 018/143] Fixed merge related issues + trimming plays audio --- package-lock.json | 4 +- utils/audioWaveform.ts | 192 ++++++++++++++ views/new/BibleAssetsView.tsx | 30 ++- .../components/BibleRecordingView.tsx | 65 ++--- .../components/BibleSelectionControls.tsx | 35 ++- .../components/RecordingViewSimplified.tsx | 65 ++--- .../recording/components/TrimSegmentModal.tsx | 183 +++++++++++++- views/new/recording/hooks/useTrimModal.ts | 235 ++++++++++++++++++ 8 files changed, 704 insertions(+), 105 deletions(-) create mode 100644 utils/audioWaveform.ts create mode 100644 views/new/recording/hooks/useTrimModal.ts diff --git a/package-lock.json b/package-lock.json index f51d59cab..2a9acbee5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "langquest", - "version": "2.0.11", + "version": "2.0.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "langquest", - "version": "2.0.11", + "version": "2.0.12", "hasInstallScript": true, "dependencies": { "@azure/core-asynciterator-polyfill": "^1.0.2", diff --git a/utils/audioWaveform.ts b/utils/audioWaveform.ts new file mode 100644 index 000000000..44e23c677 --- /dev/null +++ b/utils/audioWaveform.ts @@ -0,0 +1,192 @@ +/** + * Extract waveform amplitude data from a WAV audio file. + * + * Reads the raw PCM samples, divides them into `barCount` windows, + * computes the RMS amplitude of each window, and returns normalised + * values in the 0โ€“1 range. + */ + +import { readFile } from '@/utils/fileUtils'; + +// --------------------------------------------------------------------------- +// WAV parser helpers +// --------------------------------------------------------------------------- + +interface WavInfo { + numChannels: number; + sampleRate: number; + bitsPerSample: number; + /** Byte offset where audio sample data starts */ + dataOffset: number; + /** Length in bytes of the audio sample data */ + dataLength: number; +} + +function parseWavHeader(buffer: ArrayBuffer): WavInfo { + const view = new DataView(buffer); + + // Verify RIFF header + const riff = + String.fromCharCode(view.getUint8(0)) + + String.fromCharCode(view.getUint8(1)) + + String.fromCharCode(view.getUint8(2)) + + String.fromCharCode(view.getUint8(3)); + if (riff !== 'RIFF') { + throw new Error('Not a valid WAV file (missing RIFF header)'); + } + + const wave = + String.fromCharCode(view.getUint8(8)) + + String.fromCharCode(view.getUint8(9)) + + String.fromCharCode(view.getUint8(10)) + + String.fromCharCode(view.getUint8(11)); + if (wave !== 'WAVE') { + throw new Error('Not a valid WAV file (missing WAVE identifier)'); + } + + let numChannels = 1; + let sampleRate = 44100; + let bitsPerSample = 16; + let dataOffset = 0; + let dataLength = 0; + + // Walk through chunks + let offset = 12; + while (offset < buffer.byteLength - 8) { + const chunkId = + String.fromCharCode(view.getUint8(offset)) + + String.fromCharCode(view.getUint8(offset + 1)) + + String.fromCharCode(view.getUint8(offset + 2)) + + String.fromCharCode(view.getUint8(offset + 3)); + const chunkSize = view.getUint32(offset + 4, true); // little-endian + + if (chunkId === 'fmt ') { + numChannels = view.getUint16(offset + 10, true); + sampleRate = view.getUint32(offset + 12, true); + bitsPerSample = view.getUint16(offset + 22, true); + } else if (chunkId === 'data') { + dataOffset = offset + 8; + dataLength = chunkSize; + break; // found what we need + } + + // Advance to next chunk (chunk header is 8 bytes + chunkSize, padded to even) + offset += 8 + chunkSize + (chunkSize % 2); + } + + if (dataOffset === 0 || dataLength === 0) { + throw new Error('WAV file missing data chunk'); + } + + return { numChannels, sampleRate, bitsPerSample, dataOffset, dataLength }; +} + +// --------------------------------------------------------------------------- +// Public API +// --------------------------------------------------------------------------- + +/** + * Extract waveform data from a local audio file URI. + * + * @param uri Local file URI (file:// or OPFS path) + * @param barCount Number of amplitude bars to return (default 128) + * @returns Array of normalised amplitudes (0โ€“1), length === barCount + */ +export async function extractWaveformFromFile( + uri: string, + barCount = 128 +): Promise { + // Read the raw bytes + const buffer = await readFile(uri); + + return extractWaveformFromBuffer(buffer, barCount); +} + +/** + * Extract waveform data from a WAV ArrayBuffer. + */ +export function extractWaveformFromBuffer( + buffer: ArrayBuffer, + barCount = 128 +): number[] { + const { numChannels, bitsPerSample, dataOffset, dataLength } = + parseWavHeader(buffer); + + const bytesPerSample = bitsPerSample / 8; + const bytesPerFrame = bytesPerSample * numChannels; + const totalFrames = Math.floor(dataLength / bytesPerFrame); + + if (totalFrames === 0) { + return new Array(barCount).fill(0); + } + + const view = new DataView(buffer); + const framesPerBar = Math.max(1, Math.floor(totalFrames / barCount)); + const amplitudes: number[] = []; + + for (let bar = 0; bar < barCount; bar++) { + const startFrame = Math.floor((bar / barCount) * totalFrames); + const endFrame = Math.min( + totalFrames, + Math.floor(((bar + 1) / barCount) * totalFrames) + ); + const frameCount = endFrame - startFrame; + + if (frameCount === 0) { + amplitudes.push(0); + continue; + } + + let sumSquares = 0; + + for (let f = startFrame; f < endFrame; f++) { + const frameOffset = dataOffset + f * bytesPerFrame; + + // Average across channels + let frameSample = 0; + for (let ch = 0; ch < numChannels; ch++) { + const sampleOffset = frameOffset + ch * bytesPerSample; + + // Bounds check + if (sampleOffset + bytesPerSample > buffer.byteLength) break; + + let sample: number; + if (bitsPerSample === 16) { + sample = view.getInt16(sampleOffset, true) / 32768; + } else if (bitsPerSample === 8) { + // 8-bit WAV is unsigned (0โ€“255), centre is 128 + sample = (view.getUint8(sampleOffset) - 128) / 128; + } else if (bitsPerSample === 24) { + // 24-bit signed, little-endian + const lo = view.getUint8(sampleOffset); + const mid = view.getUint8(sampleOffset + 1); + const hi = view.getInt8(sampleOffset + 2); // signed for sign extension + sample = ((hi << 16) | (mid << 8) | lo) / 8388608; + } else if (bitsPerSample === 32) { + sample = view.getFloat32(sampleOffset, true); + } else { + // Fallback โ€“ treat as 16-bit + sample = view.getInt16(sampleOffset, true) / 32768; + } + + frameSample += sample; + } + + frameSample /= numChannels; + sumSquares += frameSample * frameSample; + } + + const rms = Math.sqrt(sumSquares / frameCount); + amplitudes.push(rms); + } + + // Normalise so the peak bar is 1.0 + const maxAmplitude = Math.max(...amplitudes); + if (maxAmplitude > 0) { + for (let i = 0; i < amplitudes.length; i++) { + amplitudes[i] = amplitudes[i]! / maxAmplitude; + } + } + + return amplitudes; +} diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index b87fbf614..0cde6b314 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -113,8 +113,11 @@ import ReorderableList, { useReorderableDrag } from 'react-native-reorderable-list'; import { BibleAssetListItem } from './BibleAssetListItem'; +import { BibleSelectionControls } from './recording/components/BibleSelectionControls'; import { RenameAssetDrawer } from './recording/components/RenameAssetDrawer'; +import { TrimSegmentModal } from './recording/components/TrimSegmentModal'; import { useSelectionMode } from './recording/hooks/useSelectionMode'; +import { useTrimModal } from './recording/hooks/useTrimModal'; // import RecordingViewSimplified from './recording/components/RecordingViewSimplified'; type Asset = typeof asset.$inferSelect; @@ -3176,6 +3179,21 @@ export default function BibleAssetsView() { // Update ref so renderItem can use it handlePlayAssetRef.current = handlePlayAsset; + // Trim modal (shared hook โ€“ loads waveform from file on demand) + const { + isTrimModalOpen, + handleOpenTrimModal, + handleCloseTrimModal, + trimTargetAsset, + trimWaveformData, + trimAudioUri, + canTrimSelected + } = useTrimModal({ + selectedAssetIds, + assets, + getAssetAudioUris + }); + // Handle publish button press with useMutation const { mutate: publishQuest, isPending: isPublishing } = useMutation({ mutationFn: async () => { @@ -3794,11 +3812,12 @@ export default function BibleAssetsView() { className="px-2" > {isSelectionMode ? ( - setShowVerseAssignerDrawer(true)} /> ) : ( @@ -3938,6 +3957,15 @@ export default function BibleAssetsView() { )} + {/* Trim Segment Modal */} + + {/* Private Access Gate Modal for Membership Requests */} {isPrivateProject && showPrivateAccessModal && ( (null); + // (trim state managed by useTrimModal hook below) // Rename drawer state const [showRenameDrawer, setShowRenameDrawer] = React.useState(false); @@ -372,9 +370,7 @@ const BibleRecordingView = ({ Map >(new Map()); - const [assetWaveformData, setAssetWaveformData] = React.useState< - Map - >(new Map()); + // (waveform data managed by useTrimModal hook below) // SESSION-ONLY ITEMS: Assets and verse pills created during this recording session // When user exits and returns, the list starts with just the initial verse pill @@ -1585,11 +1581,7 @@ const BibleRecordingView = ({ verse: verseToUse }); - setAssetWaveformData((prev) => { - const next = new Map(prev); - next.set(newAssetId, _waveformData); - return next; - }); + setTrimWaveformData(newAssetId, _waveformData); // Track which verse was recorded (for order_index normalization on return) // If no verse is assigned, use 999 (UNASSIGNED_VERSE_BASE) @@ -2268,39 +2260,21 @@ const BibleRecordingView = ({ ); }, [assets, selectedAssetIds, cancelSelection, queryClient, currentQuestId]); - const handleOpenTrimModal = React.useCallback(() => { - if (selectedAssetIds.size < 1) return; - const selectedIds = Array.from(selectedAssetIds); - const firstSelectedId = selectedIds[0]; - if (!firstSelectedId) return; - if (selectedIds.length > 1) { - console.warn( - 'Trim modal opened with multiple selected assets; using first selection.' - ); - } - setTrimTargetAssetId(firstSelectedId); - setIsTrimModalOpen(true); - }, [selectedAssetIds]); - - const handleCloseTrimModal = React.useCallback(() => { - setIsTrimModalOpen(false); - setTrimTargetAssetId(null); - }, []); - - const trimTargetAsset = React.useMemo(() => { - if (!trimTargetAssetId) return null; - return assets.find((asset) => asset.id === trimTargetAssetId) ?? null; - }, [assets, trimTargetAssetId]); - - const trimWaveformData = React.useMemo(() => { - if (!trimTargetAssetId) return undefined; - return assetWaveformData.get(trimTargetAssetId); - }, [assetWaveformData, trimTargetAssetId]); - - const canTrimSelected = React.useMemo( - () => !!trimWaveformData && trimWaveformData.length > 0, - [trimWaveformData] - ); + // Trim modal (shared hook โ€“ waveform data is injected via setWaveformData + // after each recording completes) + const { + isTrimModalOpen, + handleOpenTrimModal, + handleCloseTrimModal, + trimTargetAsset, + trimWaveformData, + trimAudioUri, + canTrimSelected, + setWaveformData: setTrimWaveformData + } = useTrimModal({ + selectedAssetIds, + assets + }); // ============================================================================ // SELECT ALL / DESELECT ALL @@ -2827,6 +2801,7 @@ const BibleRecordingView = ({ isOpen={isTrimModalOpen} segmentName={trimTargetAsset?.name ?? null} waveformData={trimWaveformData} + audioUri={trimAudioUri} onClose={handleCloseTrimModal} /> diff --git a/views/new/recording/components/BibleSelectionControls.tsx b/views/new/recording/components/BibleSelectionControls.tsx index f94b909bc..310e52645 100644 --- a/views/new/recording/components/BibleSelectionControls.tsx +++ b/views/new/recording/components/BibleSelectionControls.tsx @@ -12,7 +12,7 @@ import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; import { useLocalization } from '@/hooks/useLocalization'; -import { Bookmark, Merge, Trash2, X } from 'lucide-react-native'; +import { Bookmark, Merge, Scissors, Trash2, X } from 'lucide-react-native'; import React from 'react'; import { View } from 'react-native'; @@ -21,6 +21,7 @@ interface BibleSelectionControlsProps { onCancel: () => void; onMerge: () => void; onDelete: () => void; + onTrim?: () => void; onAssignVerse?: () => void; } @@ -29,9 +30,12 @@ export const BibleSelectionControls = React.memo(function SelectionControls({ onCancel, onMerge, onDelete, + onTrim, onAssignVerse }: BibleSelectionControlsProps) { const { t } = useLocalization(); + const shouldShowTrim = selectedCount === 1 && !!onTrim; + const shouldShowMerge = selectedCount >= 2; return ( ({selectedCount}) @@ -44,16 +48,25 @@ export const BibleSelectionControls = React.memo(function SelectionControls({ > - + {shouldShowTrim ? ( + + ) : shouldShowMerge ? ( + + ) : null} + + )} + From 5e597f80c54d603fc35055d31350ebae06504c64 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 7 Feb 2026 20:30:01 -0800 Subject: [PATCH 022/143] allow dragging trim point after jumping --- .../recording/components/TrimSegmentModal.tsx | 130 ++++++++++++------ 1 file changed, 90 insertions(+), 40 deletions(-) diff --git a/views/new/recording/components/TrimSegmentModal.tsx b/views/new/recording/components/TrimSegmentModal.tsx index 2c87b532d..7e7b902dd 100644 --- a/views/new/recording/components/TrimSegmentModal.tsx +++ b/views/new/recording/components/TrimSegmentModal.tsx @@ -52,6 +52,7 @@ export function TrimSegmentModal({ const selectionEndRef = React.useRef(selectionEnd); const leftDragStartRef = React.useRef(selectionStart); const rightDragStartRef = React.useRef(selectionEnd); + const activeHandleRef = React.useRef<'start' | 'end'>('start'); // Audio playback state const soundRef = React.useRef(null); @@ -391,6 +392,9 @@ export function TrimSegmentModal({ const [rightPanHandlers, setRightPanHandlers] = React.useState< ReturnType['panHandlers'] | undefined >(undefined); + const [waveformPanHandlers, setWaveformPanHandlers] = React.useState< + ReturnType['panHandlers'] | undefined + >(undefined); React.useEffect(() => { const leftResponder = PanResponder.create({ @@ -484,46 +488,94 @@ export function TrimSegmentModal({ return positions; }, [clipDurations, hasAudioSequence, totalDuration, waveformWidth]); - const handleWaveformTap = React.useCallback( - (locationX: number) => { - if (waveformWidth <= 0) return; - hasUserInteractedRef.current = true; // Mark that user has interacted - const clampedX = clamp(locationX, 0, waveformWidth); - const fraction = clampedX / waveformWidth; - const distanceToStart = Math.abs(fraction - selectionStart); - const distanceToEnd = Math.abs(fraction - selectionEnd); + React.useEffect(() => { + const responder = PanResponder.create({ + onStartShouldSetPanResponder: () => true, + onMoveShouldSetPanResponder: () => true, + onPanResponderGrant: (event) => { + if (waveformWidth <= 0) return; + setIsDragging(true); + hasUserInteractedRef.current = true; + if (soundRef.current) { + void soundRef.current.stopAsync().catch(() => { + // Ignore errors + }); + } - if (distanceToStart <= distanceToEnd) { - const nextStart = clamp( - fraction, - trimBounds.minStartFraction, - Math.min( - trimBounds.maxStartFraction, - selectionEnd - minSelectionFraction - ) + const locationX = event.nativeEvent.locationX; + const clampedX = clamp(locationX, 0, waveformWidth); + const fraction = clampedX / waveformWidth; + const distanceToStart = Math.abs( + fraction - selectionStartRef.current ); - setSelectionStart(nextStart); - } else { - const nextEnd = clamp( - fraction, - Math.max( - trimBounds.minEndFraction, - selectionStart + minSelectionFraction - ), - trimBounds.maxEndFraction + const distanceToEnd = Math.abs( + fraction - selectionEndRef.current ); - setSelectionEnd(nextEnd); + + if (distanceToStart <= distanceToEnd) { + const nextStart = clamp( + fraction, + trimBounds.minStartFraction, + Math.min( + trimBounds.maxStartFraction, + selectionEndRef.current - minSelectionFraction + ) + ); + activeHandleRef.current = 'start'; + setSelectionStart(nextStart); + selectionStartRef.current = nextStart; + leftDragStartRef.current = nextStart; + } else { + const nextEnd = clamp( + fraction, + Math.max( + trimBounds.minEndFraction, + selectionStartRef.current + minSelectionFraction + ), + trimBounds.maxEndFraction + ); + activeHandleRef.current = 'end'; + setSelectionEnd(nextEnd); + selectionEndRef.current = nextEnd; + rightDragStartRef.current = nextEnd; + } + }, + onPanResponderMove: (_, gesture) => { + if (waveformWidth <= 0) return; + const delta = gesture.dx / waveformWidth; + if (activeHandleRef.current === 'start') { + const nextStart = clamp( + leftDragStartRef.current + delta, + trimBounds.minStartFraction, + Math.min( + trimBounds.maxStartFraction, + selectionEndRef.current - minSelectionFraction + ) + ); + setSelectionStart(nextStart); + selectionStartRef.current = nextStart; + } else { + const nextEnd = clamp( + rightDragStartRef.current + delta, + Math.max( + trimBounds.minEndFraction, + selectionStartRef.current + minSelectionFraction + ), + trimBounds.maxEndFraction + ); + setSelectionEnd(nextEnd); + selectionEndRef.current = nextEnd; + } + }, + onPanResponderRelease: () => { + setIsDragging(false); + }, + onPanResponderTerminate: () => { + setIsDragging(false); } - }, - [ - clamp, - minSelectionFraction, - selectionEnd, - selectionStart, - trimBounds, - waveformWidth - ] - ); + }); + setWaveformPanHandlers(responder.panHandlers); + }, [clamp, minSelectionFraction, trimBounds, waveformWidth]); // Auto-trim: detect silence thresholds and set trim points automatically const handleAutoTrim = React.useCallback(() => { @@ -695,7 +747,7 @@ export function TrimSegmentModal({ /> ))} - - handleWaveformTap(event.nativeEvent.locationX) - } + {...waveformPanHandlers} /> Date: Mon, 9 Feb 2026 15:16:49 -0600 Subject: [PATCH 023/143] upgrade expo 54 + reanimated + posthog --- package-lock.json | 2739 ++++++++++++++++++++++----------------------- package.json | 97 +- 2 files changed, 1365 insertions(+), 1471 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef1c12a56..cbae4a47d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,18 @@ { "name": "langquest", - "version": "2.0.12", + "version": "2.0.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "langquest", - "version": "2.0.12", + "version": "2.0.13", "hasInstallScript": true, "dependencies": { "@azure/core-asynciterator-polyfill": "^1.0.2", "@blazejkustra/react-native-alert": "^1.0.0", "@expo-google-fonts/noto-sans": "^0.4.2", - "@expo/vector-icons": "^14.0.2", + "@expo/vector-icons": "^15.0.3", "@gorhom/bottom-sheet": "^5.2.8", "@hookform/resolvers": "^5.0.1", "@legendapp/list": "^2.0.12", @@ -24,9 +24,9 @@ "@powersync/tanstack-react-query": "^0.1.6", "@powersync/web": "^1.27.1", "@quidone/react-native-wheel-picker": "^1.6.1", - "@react-native-async-storage/async-storage": "2.1.2", + "@react-native-async-storage/async-storage": "2.2.0", "@react-native-community/netinfo": "11.4.1", - "@react-native-community/slider": "^5.1.1", + "@react-native-community/slider": "5.0.1", "@react-native-documents/picker": "^10.1.5", "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/native": "^7.1.6", @@ -52,59 +52,60 @@ "bidirectional-map": "^1.1.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "eslint-config-expo": "~9.2.0", + "eslint-config-expo": "~10.0.0", "eslint-plugin-drizzle": "^0.2.3", - "expo": "^53.0.20", - "expo-application": "~6.1.5", - "expo-av": "~15.1.7", - "expo-build-properties": "~0.14.8", + "expo": "^54.0.33", + "expo-application": "~7.0.8", + "expo-av": "~16.0.8", + "expo-build-properties": "~1.0.10", "expo-clipboard": "^8.0.7", - "expo-constants": "~17.1.7", - "expo-dev-client": "~5.2.4", - "expo-device": "~7.1.4", + "expo-constants": "~18.0.13", + "expo-dev-client": "~6.0.20", + "expo-device": "~8.0.10", "expo-drizzle-studio-plugin": "^0.2.0", - "expo-file-system": "~18.1.11", + "expo-file-system": "~19.0.21", + "expo-font": "~14.0.11", "expo-haptics": "^15.0.7", - "expo-image": "~2.4.1", - "expo-json-utils": "^0.14.0", - "expo-linear-gradient": "~14.1.5", - "expo-linking": "~7.1.7", - "expo-localization": "~16.1.6", - "expo-manifests": "~0.16.6", - "expo-router": "~5.1.4", + "expo-image": "~3.0.11", + "expo-linear-gradient": "~15.0.8", + "expo-linking": "~8.0.11", + "expo-localization": "~17.0.8", + "expo-manifests": "~1.0.10", + "expo-router": "~6.0.23", "expo-sharing": "^14.0.7", - "expo-splash-screen": "~0.30.10", - "expo-status-bar": "~2.2.3", - "expo-system-ui": "~5.0.10", - "expo-updates": "~0.28.17", + "expo-splash-screen": "~31.0.13", + "expo-sqlite": "~16.0.10", + "expo-status-bar": "~3.0.9", + "expo-system-ui": "~6.0.9", + "expo-updates": "~29.0.16", "js-logger": "^1.6.1", "lucide-react-native": "^0.510.0", "moti": "^0.30.0", "nativewind": "^4.2.1", - "posthog-js": "^1.265.1", - "posthog-react-native": "^4.3.0", - "posthog-react-native-session-replay": "^1.1.1", - "react": "19.0.0", + "posthog-js": "^1.344.0", + "posthog-react-native": "^4.31.0", + "posthog-react-native-session-replay": "^1.2.4", + "react": "19.1.0", "react-compiler-runtime": "^19.0.0-beta-af1b7da-20250417", - "react-dom": "19.0.0", + "react-dom": "19.1.0", "react-hook-form": "^7.54.2", - "react-native": "0.79.5", + "react-native": "0.81.5", "react-native-audio-concat": "^0.9.0", "react-native-element-dropdown": "2.12.2", - "react-native-gesture-handler": "~2.24.0", - "react-native-keyboard-controller": "^1.19.5", + "react-native-gesture-handler": "~2.28.0", + "react-native-keyboard-controller": "1.18.5", "react-native-onboarding": "^1.0.6", - "react-native-pager-view": "^7.0.0", - "react-native-reanimated": "~4.1.0", + "react-native-pager-view": "6.9.1", + "react-native-reanimated": "^4.2.1", "react-native-reorderable-list": "^0.18.0", - "react-native-safe-area-context": "5.4.0", - "react-native-screens": "~4.11.1", + "react-native-safe-area-context": "~5.6.0", + "react-native-screens": "~4.16.0", "react-native-sortables": "^1.9.4", - "react-native-svg": "^15.11.2", + "react-native-svg": "15.12.1", "react-native-url-polyfill": "^2.0.0", "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", - "react-native-worklets": "0.5.1", + "react-native-worklets": "^0.7.2", "tailwind-merge": "^3.3.0", "tailwindcss-animate": "^1.0.7", "testflight-dev-deploy": "^0.0.8", @@ -120,14 +121,12 @@ "@libsql/client": "^0.14.0", "@modelcontextprotocol/sdk": "^1.0.4", "@react-native-community/cli": "latest", - "@react-native/debugger-frontend": "^0.83.1", - "@react-native/dev-middleware": "^0.83.1", "@total-typescript/ts-reset": "^0.6.1", "@types/bidirectional-map": "^1.0.4", "@types/default-gateway": "^7.2.2", "@types/jest": "^29.5.12", "@types/node": "^22.18.9", - "@types/react": "~19.0.10", + "@types/react": "~19.1.10", "@types/react-test-renderer": "^19.0.0", "babel-plugin-inline-import": "^3.0.0", "babel-preset-expo": "^54.0.6", @@ -143,7 +142,7 @@ "eslint-plugin-react-hooks": "^7.0.1", "expo-atlas": "^0.4.0", "jest": "^29.2.1", - "jest-expo": "~53.0.9", + "jest-expo": "~54.0.17", "jiti": "^2.6.1", "knip": "^5.64.2", "metro-react-native-babel-transformer": "^0.77.0", @@ -157,7 +156,7 @@ "tailwindcss": "^3.4.17", "ts-node": "^10.9.2", "tsx": "^4.19.2", - "typescript": "~5.8.3", + "typescript": "~5.9.2", "typescript-eslint": "^8.20.0" } }, @@ -3729,30 +3728,30 @@ "license": "MIT AND OFL-1.1" }, "node_modules/@expo/cli": { - "version": "0.24.24", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.24.24.tgz", - "integrity": "sha512-XybHfF2QNPJNnHoUKHcG796iEkX5126UuTAs6MSpZuvZRRQRj/sGCLX+driCOVHbDOpcCOusMuHrhxHbtTApyg==", + "version": "54.0.23", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.23.tgz", + "integrity": "sha512-km0h72SFfQCmVycH/JtPFTVy69w6Lx1cHNDmfLfQqgKFYeeHTjx7LVDP4POHCtNxFP2UeRazrygJhlh4zz498g==", "license": "MIT", "dependencies": { "@0no-co/graphql.web": "^1.0.8", - "@babel/runtime": "^7.20.0", "@expo/code-signing-certificates": "^0.0.6", - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/devcert": "^1.1.2", - "@expo/env": "~1.0.7", - "@expo/image-utils": "^0.7.6", - "@expo/json-file": "^9.1.5", - "@expo/metro-config": "~0.20.18", - "@expo/osascript": "^2.2.5", - "@expo/package-manager": "^1.8.6", - "@expo/plist": "^0.3.5", - "@expo/prebuild-config": "^9.0.12", - "@expo/schema-utils": "^0.1.0", + "@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/osascript": "^2.3.8", + "@expo/package-manager": "^1.9.10", + "@expo/plist": "^0.4.8", + "@expo/prebuild-config": "^54.0.8", + "@expo/schema-utils": "^0.1.8", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", "@expo/xcpretty": "^4.3.0", - "@react-native/dev-middleware": "0.79.6", + "@react-native/dev-middleware": "0.81.5", "@urql/core": "^5.0.6", "@urql/exchange-retry": "^1.3.0", "accepts": "^1.3.8", @@ -3766,9 +3765,10 @@ "connect": "^3.7.0", "debug": "^4.3.4", "env-editor": "^0.4.1", + "expo-server": "^1.0.5", "freeport-async": "^2.0.0", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", "lan-network": "^0.1.6", "minimatch": "^9.0.0", "node-forge": "^1.3.3", @@ -3791,7 +3791,7 @@ "source-map-support": "~0.5.21", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", - "tar": "^7.4.3", + "tar": "^7.5.2", "terminal-link": "^2.1.1", "undici": "^6.18.2", "wrap-ansi": "^7.0.0", @@ -3799,29 +3799,42 @@ }, "bin": { "expo-internal": "build/bin/cli" + }, + "peerDependencies": { + "expo": "*", + "expo-router": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "expo-router": { + "optional": true + }, + "react-native": { + "optional": true + } } }, "node_modules/@expo/cli/node_modules/@react-native/debugger-frontend": { - "version": "0.79.6", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.79.6.tgz", - "integrity": "sha512-lIK/KkaH7ueM22bLO0YNaQwZbT/oeqhaghOvmZacaNVbJR1Cdh/XAqjT8FgCS+7PUnbxA8B55NYNKGZG3O2pYw==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", + "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", "license": "BSD-3-Clause", "engines": { - "node": ">=18" + "node": ">= 20.19.4" } }, "node_modules/@expo/cli/node_modules/@react-native/dev-middleware": { - "version": "0.79.6", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.79.6.tgz", - "integrity": "sha512-BK3GZBa9c7XSNR27EDRtxrgyyA3/mf1j3/y+mPk7Ac0Myu85YNrXnC9g3mL5Ytwo0g58TKrAIgs1fF2Q5Mn6mQ==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", + "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.79.6", + "@react-native/debugger-frontend": "0.81.5", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", - "debug": "^2.2.0", + "debug": "^4.4.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "open": "^7.0.3", @@ -3829,16 +3842,7 @@ "ws": "^6.2.3" }, "engines": { - "node": ">=18" - } - }, - "node_modules/@expo/cli/node_modules/@react-native/dev-middleware/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": ">= 20.19.4" } }, "node_modules/@expo/cli/node_modules/@react-native/dev-middleware/node_modules/ws": { @@ -3917,21 +3921,32 @@ } }, "node_modules/@expo/cli/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "license": "ISC", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "minimatch": "^10.1.2", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/cli/node_modules/glob/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3996,12 +4011,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/cli/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/@expo/cli/node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", @@ -4075,9 +4084,9 @@ } }, "node_modules/@expo/cli/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4120,40 +4129,40 @@ } }, "node_modules/@expo/config": { - "version": "11.0.13", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-11.0.13.tgz", - "integrity": "sha512-TnGb4u/zUZetpav9sx/3fWK71oCPaOjZHoVED9NaEncktAd0Eonhq5NUghiJmkUGt3gGSjRAEBXiBbbY9/B1LA==", + "version": "12.0.13", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", + "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~10.1.2", - "@expo/config-types": "^53.0.5", - "@expo/json-file": "^9.1.5", + "@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.4.2", + "glob": "^13.0.0", "require-from-string": "^2.0.2", "resolve-from": "^5.0.0", "resolve-workspace-root": "^2.0.0", "semver": "^7.6.0", "slugify": "^1.3.4", - "sucrase": "3.35.0" + "sucrase": "~3.35.1" } }, "node_modules/@expo/config-plugins": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-10.1.2.tgz", - "integrity": "sha512-IMYCxBOcnuFStuK0Ay+FzEIBKrwW8OVUMc65+v0+i7YFIIe8aL342l7T4F8lR4oCfhXn7d6M5QPgXvjtc/gAcw==", + "version": "54.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", + "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", "license": "MIT", "dependencies": { - "@expo/config-types": "^53.0.5", - "@expo/json-file": "~9.1.5", - "@expo/plist": "^0.3.5", + "@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.3.5", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", "slash": "^3.0.0", @@ -4162,55 +4171,42 @@ "xml2js": "0.6.0" } }, - "node_modules/@expo/config-plugins/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@expo/config-plugins/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "license": "ISC", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "minimatch": "^10.1.2", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/config-plugins/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/config-plugins/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4220,9 +4216,9 @@ } }, "node_modules/@expo/config-types": { - "version": "53.0.5", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-53.0.5.tgz", - "integrity": "sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g==", + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", + "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", "license": "MIT" }, "node_modules/@expo/config/node_modules/@babel/code-frame": { @@ -4234,55 +4230,42 @@ "@babel/highlight": "^7.10.4" } }, - "node_modules/@expo/config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@expo/config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "license": "ISC", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "minimatch": "^10.1.2", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/config/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4310,10 +4293,31 @@ "ms": "^2.1.1" } }, + "node_modules/@expo/devtools": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-0.1.8.tgz", + "integrity": "sha512-SVLxbuanDjJPgc0sy3EfXUMLb/tXzp6XIHkhtPVmTWJAp+FOr6+5SeiCfJrCzZFet0Ifyke2vX3sFcKwEvCXwQ==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, "node_modules/@expo/env": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-1.0.7.tgz", - "integrity": "sha512-qSTEnwvuYJ3umapO9XJtrb1fAqiPlmUUg78N0IZXXGwQRt+bkp0OBls+Y5Mxw/Owj8waAM0Z3huKKskRADR5ow==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.8.tgz", + "integrity": "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==", "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -4336,18 +4340,17 @@ } }, "node_modules/@expo/fingerprint": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.13.4.tgz", - "integrity": "sha512-MYfPYBTMfrrNr07DALuLhG6EaLVNVrY/PXjEzsjWdWE4ZFn0yqI0IdHNkJG7t1gePT8iztHc7qnsx+oo/rDo6w==", + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.15.4.tgz", + "integrity": "sha512-eYlxcrGdR2/j2M6pEDXo9zU9KXXF1vhP+V+Tl+lyY+bU8lnzrN6c637mz6Ye3em2ANy8hhUR03Raf8VsT9Ogng==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", "arg": "^5.0.2", "chalk": "^4.1.2", "debug": "^4.3.4", - "find-up": "^5.0.0", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", "ignore": "^5.3.1", "minimatch": "^9.0.0", "p-limit": "^3.1.0", @@ -4368,21 +4371,32 @@ } }, "node_modules/@expo/fingerprint/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "license": "ISC", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "minimatch": "^10.1.2", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4404,9 +4418,9 @@ } }, "node_modules/@expo/fingerprint/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4416,9 +4430,9 @@ } }, "node_modules/@expo/image-utils": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.7.6.tgz", - "integrity": "sha512-GKnMqC79+mo/1AFrmAcUcGfbsXXTRqOMNS1umebuevl3aaw+ztsYEFEiuNhHZW7PQ3Xs3URNT513ZxKhznDscw==", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.8.tgz", + "integrity": "sha512-HHHaG4J4nKjTtVa1GG9PCh763xlETScfEyNxxOvfTRr8IKPJckjTyqSLEtdJoFNJ1vqiABEjW7tqGhqGibZLeA==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -4427,15 +4441,16 @@ "jimp-compact": "0.16.1", "parse-png": "^2.1.0", "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0", "semver": "^7.6.0", "temp-dir": "~2.0.0", "unique-string": "~2.0.0" } }, "node_modules/@expo/image-utils/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4445,9 +4460,9 @@ } }, "node_modules/@expo/json-file": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.1.5.tgz", - "integrity": "sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.8.tgz", + "integrity": "sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "~7.10.4", @@ -4463,31 +4478,63 @@ "@babel/highlight": "^7.10.4" } }, + "node_modules/@expo/metro": { + "version": "54.2.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", + "integrity": "sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==", + "license": "MIT", + "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" + } + }, "node_modules/@expo/metro-config": { - "version": "0.20.18", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.20.18.tgz", - "integrity": "sha512-qPYq3Cq61KQO1CppqtmxA1NGKpzFOmdiL7WxwLhEVnz73LPSgneW7dV/3RZwVFkjThzjA41qB4a9pxDqtpepPg==", + "version": "54.0.14", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.14.tgz", + "integrity": "sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==", "license": "MIT", "dependencies": { + "@babel/code-frame": "^7.20.0", "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "@expo/config": "~11.0.13", - "@expo/env": "~1.0.7", - "@expo/json-file": "~9.1.5", + "@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.25.0", "chalk": "^4.1.0", "debug": "^4.3.2", "dotenv": "~16.4.5", "dotenv-expand": "~11.0.6", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", + "hermes-parser": "^0.29.1", "jsc-safe-url": "^0.2.4", - "lightningcss": "~1.27.0", + "lightningcss": "^1.30.1", "minimatch": "^9.0.0", "postcss": "~8.4.32", "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "expo": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } } }, "node_modules/@expo/metro-config/node_modules/brace-expansion": { @@ -4499,37 +4546,286 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@expo/metro-config/node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", + "node_modules/@expo/metro-config/node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/metro-config/node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@expo/metro-config/node_modules/glob": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "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" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@expo/metro-config/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12" + "node": ">= 12.0.0" }, "funding": { - "url": "https://dotenvx.com" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@expo/metro-config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "node_modules/@expo/metro-config/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/@expo/metro-config/node_modules/minimatch": { @@ -4548,12 +4844,26 @@ } }, "node_modules/@expo/metro-runtime": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-5.0.5.tgz", - "integrity": "sha512-P8UFTi+YsmiD1BmdTdiIQITzDMcZgronsA3RTQ4QKJjHM3bas11oGzLQOnFaIZnlEV8Rrr3m1m+RHxvnpL+t/A==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-6.1.2.tgz", + "integrity": "sha512-nvM+Qv45QH7pmYvP8JB1G8JpScrWND3KrMA6ZKe62cwwNiX/BjHU28Ear0v/4bQWXlOY0mv6B8CDIm8JxXde9g==", "license": "MIT", + "dependencies": { + "anser": "^1.4.9", + "pretty-format": "^29.7.0", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0" + }, "peerDependencies": { + "expo": "*", + "react": "*", + "react-dom": "*", "react-native": "*" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, "node_modules/@expo/npm-proofread": { @@ -4604,25 +4914,6 @@ "resolve-workspace-root": "^2.0.0" } }, - "node_modules/@expo/package-manager/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@expo/package-manager/node_modules/@expo/json-file": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.8.tgz", - "integrity": "sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.3" - } - }, "node_modules/@expo/package-manager/node_modules/ansi-regex": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", @@ -4805,9 +5096,9 @@ } }, "node_modules/@expo/plist": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.3.5.tgz", - "integrity": "sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", + "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", "license": "MIT", "dependencies": { "@xmldom/xmldom": "^0.8.8", @@ -4816,27 +5107,30 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "9.0.12", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-9.0.12.tgz", - "integrity": "sha512-AKH5Scf+gEMgGxZZaimrJI2wlUJlRoqzDNn7/rkhZa5gUTnO4l6slKak2YdaH+nXlOWCNfAQWa76NnpQIfmv6Q==", + "version": "54.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-54.0.8.tgz", + "integrity": "sha512-EA7N4dloty2t5Rde+HP0IEE+nkAQiu4A/+QGZGT9mFnZ5KKjPPkqSyYcRvP5bhQE10D+tvz6X0ngZpulbMdbsg==", "license": "MIT", "dependencies": { - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/config-types": "^53.0.5", - "@expo/image-utils": "^0.7.6", - "@expo/json-file": "^9.1.5", - "@react-native/normalize-colors": "0.79.6", + "@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.3.1", "resolve-from": "^5.0.0", "semver": "^7.6.0", "xml2js": "0.6.0" + }, + "peerDependencies": { + "expo": "*" } }, "node_modules/@expo/prebuild-config/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4889,12 +5183,12 @@ "license": "MIT" }, "node_modules/@expo/vector-icons": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-14.1.0.tgz", - "integrity": "sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.0.3.tgz", + "integrity": "sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==", "license": "MIT", "peerDependencies": { - "expo-font": "*", + "expo-font": ">=14.0.4", "react": "*", "react-native": "*" } @@ -5507,7 +5801,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, "license": "MIT", "engines": { "node": "20 || >=22" @@ -5517,7 +5810,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "dev": true, "license": "MIT", "dependencies": { "@isaacs/balanced-match": "^4.0.1" @@ -5530,6 +5822,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", @@ -5547,6 +5840,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -5559,6 +5853,7 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -5571,12 +5866,14 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -5594,6 +5891,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -5609,6 +5907,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", @@ -6977,16 +7276,6 @@ "win32" ] }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@pkgr/core": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", @@ -7000,18 +7289,18 @@ } }, "node_modules/@posthog/core": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.19.0.tgz", - "integrity": "sha512-OMcdu5cJcvkle2hw0rpe+1mTOFRlerTHTtZKZFvB8z0hgzbN1WeaGZfGFY5wOq42LVTSxwdUgK1MYERyzG1Epw==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.21.0.tgz", + "integrity": "sha512-0a2JUIX1vhduP2El/6/J8s5AeYAurIoufQGFgMiGnJE5ajd63o9LFocu2vFYYBnIOmy75y4ADNeW8zSl1keEQQ==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.6" } }, "node_modules/@posthog/types": { - "version": "1.338.0", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.338.0.tgz", - "integrity": "sha512-OruyKCjjovPUnag0p9CEQ0QeSOKhsd1ztDOcr6mISBeKG7bE+Dg8pR1sBHZKiCdkEurB1RcufvSQyNBTddWLMA==", + "version": "1.344.0", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.344.0.tgz", + "integrity": "sha512-mZiBdZD7hIbjbUSSN0oiaURrtsu8CJI6wkT7tqDhZ6wmM9baFKCkffy7LVjW1GFdN+bv7+PUKmICMoMXGJrZ8w==", "license": "MIT" }, "node_modules/@powersync/attachments": { @@ -8159,9 +8448,9 @@ "license": "MIT" }, "node_modules/@react-native-async-storage/async-storage": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.1.2.tgz", - "integrity": "sha512-dvlNq4AlGWC+ehtH12p65+17V0Dx7IecOWl6WanF2ja38O1Dcjjvn7jVzkUHJ5oWkQBlyASurTPlTHgKXyYiow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", + "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", "license": "MIT", "dependencies": { "merge-options": "^3.0.4" @@ -8434,9 +8723,9 @@ } }, "node_modules/@react-native-community/slider": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.2.tgz", - "integrity": "sha512-UV/MjCyCtSjS5BQDrrGIMmCXm309xEG6XbR0Dj65kzTraJSVDxSjQS2uBUXgX+5SZUOCzCxzv3OufOZBdtQY4w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.0.1.tgz", + "integrity": "sha512-K3JRWkIW4wQ79YJ6+BPZzp1SamoikxfPRw7Yw4B4PElEQmqZFrmH9M5LxvIo460/3QSrZF/wCgi3qizJt7g/iw==", "license": "MIT" }, "node_modules/@react-native-documents/picker": { @@ -8450,19 +8739,18 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.79.5.tgz", - "integrity": "sha512-N4Kt1cKxO5zgM/BLiyzuuDNquZPiIgfktEQ6TqJ/4nKA8zr4e8KJgU6Tb2eleihDO4E24HmkvGc73naybKRz/w==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.5.tgz", + "integrity": "sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-plugin-codegen": { "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.5.tgz", "integrity": "sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", @@ -8476,7 +8764,6 @@ "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.5.tgz", "integrity": "sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -8536,7 +8823,6 @@ "version": "0.14.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8546,7 +8832,6 @@ "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -8565,53 +8850,56 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.79.5.tgz", - "integrity": "sha512-ApLO1ARS8JnQglqS3JAHk0jrvB+zNW3dvNJyXPZPoygBpZVbf8sjvqeBiaEYpn8ETbFWddebC4HoQelDndnrrA==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.5.tgz", + "integrity": "sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.79.5", - "chalk": "^4.0.0", - "debug": "^2.2.0", + "@react-native/dev-middleware": "0.81.5", + "debug": "^4.4.0", "invariant": "^2.2.4", - "metro": "^0.82.0", - "metro-config": "^0.82.0", - "metro-core": "^0.82.0", + "metro": "^0.83.1", + "metro-config": "^0.83.1", + "metro-core": "^0.83.1", "semver": "^7.1.3" }, "engines": { - "node": ">=18" + "node": ">= 20.19.4" }, "peerDependencies": { - "@react-native-community/cli": "*" + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" }, "peerDependenciesMeta": { "@react-native-community/cli": { "optional": true + }, + "@react-native/metro-config": { + "optional": true } } }, "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.79.5.tgz", - "integrity": "sha512-WQ49TRpCwhgUYo5/n+6GGykXmnumpOkl4Lr2l2o2buWU9qPOwoiBqJAtmWEXsAug4ciw3eLiVfthn5ufs0VB0A==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", + "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", "license": "BSD-3-Clause", "engines": { - "node": ">=18" + "node": ">= 20.19.4" } }, "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.79.5.tgz", - "integrity": "sha512-U7r9M/SEktOCP/0uS6jXMHmYjj4ESfYCkNAenBjFjjsRWekiHE+U/vRMeO+fG9gq4UCcBAUISClkQCowlftYBw==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", + "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.79.5", + "@react-native/debugger-frontend": "0.81.5", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", - "debug": "^2.2.0", + "debug": "^4.4.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "open": "^7.0.3", @@ -8619,24 +8907,9 @@ "ws": "^6.2.3" }, "engines": { - "node": ">=18" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": ">= 20.19.4" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/@react-native/community-cli-plugin/node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -8654,9 +8927,9 @@ } }, "node_modules/@react-native/community-cli-plugin/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8674,131 +8947,44 @@ "async-limiter": "~1.0.0" } }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", - "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.6", - "fb-dotslash": "0.5.8" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/dev-middleware": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", - "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.83.1", - "@react-native/debugger-shell": "0.83.1", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^7.5.10" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@react-native/gradle-plugin": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.79.5.tgz", - "integrity": "sha512-K3QhfFNKiWKF3HsCZCEoWwJPSMcPJQaeqOmzFP4RL8L3nkpgUwn74PfSCcKHxooVpS6bMvJFQOz7ggUZtNVT+A==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.5.tgz", + "integrity": "sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 20.19.4" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.79.5.tgz", - "integrity": "sha512-a2wsFlIhvd9ZqCD5KPRsbCQmbZi6KxhRN++jrqG0FUTEV5vY7MvjjUqDILwJd2ZBZsf7uiDuClCcKqA+EEdbvw==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.5.tgz", + "integrity": "sha512-fB7M1CMOCIUudTRuj7kzxIBTVw2KXnsgbQ6+4cbqSxo8NmRRhA0Ul4ZUzZj3rFd3VznTL4Brmocv1oiN0bWZ8w==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 20.19.4" } }, "node_modules/@react-native/normalize-colors": { - "version": "0.79.6", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.79.6.tgz", - "integrity": "sha512-0v2/ruY7eeKun4BeKu+GcfO+SHBdl0LJn4ZFzTzjHdWES0Cn+ONqKljYaIv8p9MV2Hx/kcdEvbY4lWI34jC/mQ==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.5.tgz", + "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", "license": "MIT" }, "node_modules/@react-native/virtualized-lists": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.79.5.tgz", - "integrity": "sha512-EUPM2rfGNO4cbI3olAbhPkIt3q7MapwCwAJBzUfWlZ/pu0PRNOnMQ1IvaXTf3TpeozXV52K1OdprLEI/kI5eUA==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.81.5.tgz", + "integrity": "sha512-UVXgV/db25OPIvwZySeToXD/9sKKhOdkcWmmf4Jh8iBZuyfML+/5CasaZ1E7Lqg6g3uqVQq75NqIwkYmORJMPw==", "license": "MIT", "dependencies": { "invariant": "^2.2.4", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18" + "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.0.0", + "@types/react": "^19.1.0", "react": "*", "react-native": "*" }, @@ -10043,9 +10229,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.0.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.14.tgz", - "integrity": "sha512-ixLZ7zG7j1fM0DijL9hDArwhwcCb4vqmePgwtV0GfnkHRSCUEv4LvzarcTdhoqgyMznUx/EhoTUv31CKZzkQlw==", + "version": "19.1.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.17.tgz", + "integrity": "sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==", "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -10373,6 +10559,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, "node_modules/@unrs/resolver-binding-android-arm-eabi": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", @@ -11234,8 +11426,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/babel-core": { "version": "7.0.0-bridge.0", @@ -11385,14 +11576,12 @@ "version": "0.21.2", "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", - "dev": true, "license": "MIT" }, "node_modules/babel-plugin-syntax-hermes-parser": { "version": "0.29.1", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", - "dev": true, "license": "MIT", "dependencies": { "hermes-parser": "0.29.1" @@ -11444,7 +11633,6 @@ "version": "54.0.10", "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.10.tgz", "integrity": "sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", @@ -11488,7 +11676,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.26.0" @@ -12005,39 +12192,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "license": "MIT", - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "license": "MIT", - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -13646,6 +13800,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, "license": "MIT" }, "node_modules/ee-first": { @@ -14099,15 +14254,15 @@ } }, "node_modules/eslint-config-expo": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-9.2.0.tgz", - "integrity": "sha512-TQgmSx+2mRM7qUS0hB5kTDrHcSC35rA1UzOSgK5YRLmSkSMlKLmXkUrhwOpnyo9D/nHdf4ERRAySRYxgA6dlrw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-10.0.0.tgz", + "integrity": "sha512-/XC/DvniUWTzU7Ypb/cLDhDD4DXqEio4lug1ObD/oQ9Hcx3OVOR8Mkp4u6U4iGoZSJyIQmIk3WVHe/P1NYUXKw==", "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "^8.18.2", "@typescript-eslint/parser": "^8.18.2", "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-expo": "^0.1.4", + "eslint-plugin-expo": "^1.0.0", "eslint-plugin-import": "^2.30.0", "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", @@ -14549,9 +14704,9 @@ } }, "node_modules/eslint-plugin-expo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-0.1.4.tgz", - "integrity": "sha512-YA7yiMacQbLJySuyJA0Eb5V65obqp6fVOWtw1JdYDRWC5MeToPrnNvhGDpk01Bv3Vm4ownuzUfvi89MXi1d6cg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-1.0.0.tgz", + "integrity": "sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==", "license": "MIT", "dependencies": { "@typescript-eslint/types": "^8.29.1", @@ -15051,27 +15206,31 @@ } }, "node_modules/expo": { - "version": "53.0.26", - "resolved": "https://registry.npmjs.org/expo/-/expo-53.0.26.tgz", - "integrity": "sha512-zap+YY+w1kjwy9ucmtqfeyaL9qhHIpxCBnsTkiLsN8SFyR6TjPV0p8V4Tp/exg3pnc3CkjcMS8Lp/tSg8xeSJA==", + "version": "54.0.33", + "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", + "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "0.24.24", - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/fingerprint": "0.13.4", - "@expo/metro-config": "0.20.18", - "@expo/vector-icons": "^14.0.0", - "babel-preset-expo": "~13.2.5", - "expo-asset": "~11.1.7", - "expo-constants": "~17.1.8", - "expo-file-system": "~18.1.11", - "expo-font": "~13.3.2", - "expo-keep-awake": "~14.1.4", - "expo-modules-autolinking": "2.1.14", - "expo-modules-core": "2.5.0", - "react-native-edge-to-edge": "1.6.0", + "@expo/cli": "54.0.23", + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/devtools": "0.1.8", + "@expo/fingerprint": "0.15.4", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "54.0.14", + "@expo/vector-icons": "^15.0.3", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~54.0.10", + "expo-asset": "~12.0.12", + "expo-constants": "~18.0.13", + "expo-file-system": "~19.0.21", + "expo-font": "~14.0.11", + "expo-keep-awake": "~15.0.8", + "expo-modules-autolinking": "3.0.24", + "expo-modules-core": "3.0.29", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", "whatwg-url-without-unicode": "8.0.0-3" }, "bin": { @@ -15099,22 +15258,22 @@ } }, "node_modules/expo-application": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-6.1.5.tgz", - "integrity": "sha512-ToImFmzw8luY043pWFJhh2ZMm4IwxXoHXxNoGdlhD4Ym6+CCmkAvCglg0FK8dMLzAb+/XabmOE7Rbm8KZb6NZg==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz", + "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-asset": { - "version": "11.1.7", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.1.7.tgz", - "integrity": "sha512-b5P8GpjUh08fRCf6m5XPVAh7ra42cQrHBIMgH2UXP+xsj4Wufl6pLy6jRF5w6U7DranUMbsXm8TOyq4EHy7ADg==", + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", + "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.7.6", - "expo-constants": "~17.1.7" + "@expo/image-utils": "^0.8.8", + "expo-constants": "~18.0.12" }, "peerDependencies": { "expo": "*", @@ -15298,9 +15457,9 @@ "license": "MIT" }, "node_modules/expo-av": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-15.1.7.tgz", - "integrity": "sha512-NC+JR+65sxXfQN1mOHp3QBaXTL2J+BzNwVO27XgUEc5s9NaoBTdHWElYXrfxvik6xwytZ+a7abrqfNNgsbQzsA==", + "version": "16.0.8", + "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-16.0.8.tgz", + "integrity": "sha512-cmVPftGR/ca7XBgs7R6ky36lF3OC0/MM/lpgX/yXqfv0jASTsh7AYX9JxHCwFmF+Z6JEB1vne9FDx4GiLcGreQ==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15315,9 +15474,9 @@ } }, "node_modules/expo-build-properties": { - "version": "0.14.8", - "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-0.14.8.tgz", - "integrity": "sha512-GTFNZc5HaCS9RmCi6HspCe2+isleuOWt2jh7UEKHTDQ9tdvzkIoWc7U6bQO9lH3Mefk4/BcCUZD/utl7b1wdqw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-1.0.10.tgz", + "integrity": "sha512-mFCZbrbrv0AP5RB151tAoRzwRJelqM7bCJzCkxpu+owOyH+p/rFC/q7H5q8B9EpVWj8etaIuszR+gKwohpmu1Q==", "license": "MIT", "dependencies": { "ajv": "^8.11.0", @@ -15373,13 +15532,13 @@ } }, "node_modules/expo-constants": { - "version": "17.1.8", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.1.8.tgz", - "integrity": "sha512-sOCeMN/BWLA7hBP6lMwoEQzFNgTopk6YY03sBAmwT216IHyL54TjNseg8CRU1IQQ/+qinJ2fYWCl7blx2TiNcA==", + "version": "18.0.13", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", + "integrity": "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==", "license": "MIT", "dependencies": { - "@expo/config": "~11.0.13", - "@expo/env": "~1.0.7" + "@expo/config": "~12.0.13", + "@expo/env": "~2.0.8" }, "peerDependencies": { "expo": "*", @@ -15387,31 +15546,30 @@ } }, "node_modules/expo-dev-client": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-5.2.4.tgz", - "integrity": "sha512-s/N/nK5LPo0QZJpV4aPijxyrzV4O49S3dN8D2fljqrX2WwFZzWwFO6dX1elPbTmddxumdcpczsdUPY+Ms8g43g==", + "version": "6.0.20", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-6.0.20.tgz", + "integrity": "sha512-5XjoVlj1OxakNxy55j/AUaGPrDOlQlB6XdHLLWAw61w5ffSpUDHDnuZzKzs9xY1eIaogOqTOQaAzZ2ddBkdXLA==", "license": "MIT", "dependencies": { - "expo-dev-launcher": "5.1.16", - "expo-dev-menu": "6.1.14", - "expo-dev-menu-interface": "1.10.0", - "expo-manifests": "~0.16.6", - "expo-updates-interface": "~1.1.0" + "expo-dev-launcher": "6.0.20", + "expo-dev-menu": "7.0.18", + "expo-dev-menu-interface": "2.0.0", + "expo-manifests": "~1.0.10", + "expo-updates-interface": "~2.0.0" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-dev-launcher": { - "version": "5.1.16", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-5.1.16.tgz", - "integrity": "sha512-tbCske9pvbozaEblyxoyo/97D6od9Ma4yAuyUnXtRET1CKAPKYS+c4fiZ+I3B4qtpZwN3JNFUjG3oateN0y6Hg==", + "version": "6.0.20", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-6.0.20.tgz", + "integrity": "sha512-a04zHEeT9sB0L5EB38fz7sNnUKJ2Ar1pXpcyl60Ki8bXPNCs9rjY7NuYrDkP/irM8+1DklMBqHpyHiLyJ/R+EA==", "license": "MIT", "dependencies": { - "ajv": "8.11.0", - "expo-dev-menu": "6.1.14", - "expo-manifests": "~0.16.6", - "resolve-from": "^5.0.0" + "ajv": "^8.11.0", + "expo-dev-menu": "7.0.18", + "expo-manifests": "~1.0.10" }, "peerDependencies": { "expo": "*" @@ -15440,30 +15598,30 @@ "license": "MIT" }, "node_modules/expo-dev-menu": { - "version": "6.1.14", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-6.1.14.tgz", - "integrity": "sha512-yonNMg2GHJZtuisVowdl1iQjZfYP85r1D1IO+ar9D9zlrBPBJhq2XEju52jd1rDmDkmDuEhBSbPNhzIcsBNiPg==", + "version": "7.0.18", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-7.0.18.tgz", + "integrity": "sha512-4kTdlHrnZCAWCT6tZRQHSSjZ7vECFisL4T+nsG/GJDo/jcHNaOVGV5qPV9wzlTxyMk3YOPggRw4+g7Ownrg5eA==", "license": "MIT", "dependencies": { - "expo-dev-menu-interface": "1.10.0" + "expo-dev-menu-interface": "2.0.0" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-dev-menu-interface": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-1.10.0.tgz", - "integrity": "sha512-NxtM/qot5Rh2cY333iOE87dDg1S8CibW+Wu4WdLua3UMjy81pXYzAGCZGNOeY7k9GpNFqDPNDXWyBSlk9r2pBg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-2.0.0.tgz", + "integrity": "sha512-BvAMPt6x+vyXpThsyjjOYyjwfjREV4OOpQkZ0tNl+nGpsPfcY9mc6DRACoWnH9KpLzyIt3BOgh3cuy/h/OxQjw==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-device": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-7.1.4.tgz", - "integrity": "sha512-HS04IiE1Fy0FRjBLurr9e5A6yj3kbmQB+2jCZvbSGpsjBnCLdSk/LCii4f5VFhPIBWJLyYuN5QqJyEAw6BcS4Q==", + "version": "8.0.10", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-8.0.10.tgz", + "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", "license": "MIT", "dependencies": { "ua-parser-js": "^0.7.33" @@ -15483,15 +15641,15 @@ } }, "node_modules/expo-eas-client": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-0.14.4.tgz", - "integrity": "sha512-TSL1BbBFIuXchJmPgbPnB7cGpOOuSGJcQ/L7gij/+zPjExwvKm5ckA5dlSulwoFhH8zQt4vb7bfISPSAWQVWBw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-1.0.8.tgz", + "integrity": "sha512-5or11NJhSeDoHHI6zyvQDW2cz/yFyE+1Cz8NTs5NK8JzC7J0JrkUgptWtxyfB6Xs/21YRNifd3qgbBN3hfKVgA==", "license": "MIT" }, "node_modules/expo-file-system": { - "version": "18.1.11", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.1.11.tgz", - "integrity": "sha512-HJw/m0nVOKeqeRjPjGdvm+zBi5/NxcdPf8M8P3G2JFvH5Z8vBWqVDic2O58jnT1OFEy0XXzoH9UqFu7cHg9DTQ==", + "version": "19.0.21", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", + "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15503,7 +15661,6 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", "license": "MIT", - "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -15523,9 +15680,9 @@ } }, "node_modules/expo-image": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-2.4.1.tgz", - "integrity": "sha512-yHp0Cy4ylOYyLR21CcH6i70DeRyLRPc0yAIPFPn4BT/BpkJNaX5QMXDppcHa58t4WI3Bb8QRJRLuAQaeCtDF8A==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-3.0.11.tgz", + "integrity": "sha512-4TudfUCLgYgENv+f48omnU8tjS2S0Pd9EaON5/s1ZUBRwZ7K8acEr4NfvLPSaeXvxW24iLAiyQ7sV7BXQH3RoA==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15539,16 +15696,10 @@ } } }, - "node_modules/expo-json-utils": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.14.0.tgz", - "integrity": "sha512-xjGfK9dL0B1wLnOqNkX0jM9p48Y0I5xEPzHude28LY67UmamUyAACkqhZGaPClyPNfdzczk7Ej6WaRMT3HfXvw==", - "license": "MIT" - }, "node_modules/expo-keep-awake": { - "version": "14.1.4", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.1.4.tgz", - "integrity": "sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==", + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.8.tgz", + "integrity": "sha512-YK9M1VrnoH1vLJiQzChZgzDvVimVoriibiDIFLbQMpjYBnvyfUeHJcin/Gx1a+XgupNXy92EQJLgI/9ZuXajYQ==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15556,9 +15707,9 @@ } }, "node_modules/expo-linear-gradient": { - "version": "14.1.5", - "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-14.1.5.tgz", - "integrity": "sha512-BSN3MkSGLZoHMduEnAgfhoj3xqcDWaoICgIr4cIYEx1GcHfKMhzA/O4mpZJ/WC27BP1rnAqoKfbclk1eA70ndQ==", + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-15.0.8.tgz", + "integrity": "sha512-V2d8Wjn0VzhPHO+rrSBtcl+Fo+jUUccdlmQ6OoL9/XQB7Qk3d9lYrqKDJyccwDxmQT10JdST3Tmf2K52NLc3kw==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15567,12 +15718,12 @@ } }, "node_modules/expo-linking": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-7.1.7.tgz", - "integrity": "sha512-ZJaH1RIch2G/M3hx2QJdlrKbYFUTOjVVW4g39hfxrE5bPX9xhZUYXqxqQtzMNl1ylAevw9JkgEfWbBWddbZ3UA==", + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.11.tgz", + "integrity": "sha512-+VSaNL5om3kOp/SSKO5qe6cFgfSIWnnQDSbA7XLs3ECkYzXRquk5unxNS3pg7eK5kNUmQ4kgLI7MhTggAEUBLA==", "license": "MIT", "dependencies": { - "expo-constants": "~17.1.7", + "expo-constants": "~18.0.12", "invariant": "^2.2.4" }, "peerDependencies": { @@ -15581,9 +15732,9 @@ } }, "node_modules/expo-localization": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-16.1.6.tgz", - "integrity": "sha512-v4HwNzs8QvyKHwl40MvETNEKr77v1o9/eVC8WCBY++DIlBAvonHyJe2R9CfqpZbC4Tlpl7XV+07nLXc8O5PQsA==", + "version": "17.0.8", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-17.0.8.tgz", + "integrity": "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==", "license": "MIT", "dependencies": { "rtl-detect": "^1.0.2" @@ -15594,12 +15745,12 @@ } }, "node_modules/expo-manifests": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.16.6.tgz", - "integrity": "sha512-1A+do6/mLUWF9xd3uCrlXr9QFDbjbfqAYmUy8UDLOjof1lMrOhyeC4Yi6WexA/A8dhZEpIxSMCKfn7G4aHAh4w==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-1.0.10.tgz", + "integrity": "sha512-oxDUnURPcL4ZsOBY6X1DGWGuoZgVAFzp6PISWV7lPP2J0r8u1/ucuChBgpK7u1eLGFp6sDIPwXyEUCkI386XSQ==", "license": "MIT", "dependencies": { - "@expo/config": "~11.0.12", + "@expo/config": "~12.0.11", "expo-json-utils": "~0.15.0" }, "peerDependencies": { @@ -16235,16 +16386,14 @@ } }, "node_modules/expo-modules-autolinking": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.1.14.tgz", - "integrity": "sha512-nT5ERXwc+0ZT/pozDoJjYZyUQu5RnXMk9jDGm5lg+PiKvsrCTSA/2/eftJGMxLkTjVI2MXp5WjSz3JRjbA7UXA==", + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.24.tgz", + "integrity": "sha512-TP+6HTwhL7orDvsz2VzauyQlXJcAWyU3ANsZ7JGL4DQu8XaZv/A41ZchbtAYLfozNA2Ya1Hzmhx65hXryBMjaQ==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", "commander": "^7.2.0", - "find-up": "^5.0.0", - "glob": "^10.4.2", "require-from-string": "^2.0.2", "resolve-from": "^5.0.0" }, @@ -16252,15 +16401,6 @@ "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, - "node_modules/expo-modules-autolinking/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/expo-modules-autolinking/node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -16270,109 +16410,90 @@ "node": ">= 10" } }, - "node_modules/expo-modules-autolinking/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-modules-autolinking/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/expo-modules-core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-2.5.0.tgz", - "integrity": "sha512-aIbQxZE2vdCKsolQUl6Q9Farlf8tjh/ROR4hfN1qT7QBGPl1XrJGnaOKkcgYaGrlzCPg/7IBe0Np67GzKMZKKQ==", + "version": "3.0.29", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.29.tgz", + "integrity": "sha512-LzipcjGqk8gvkrOUf7O2mejNWugPkf3lmd9GkqL9WuNyeN2fRwU0Dn77e3ZUKI3k6sI+DNwjkq4Nu9fNN9WS7Q==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, "node_modules/expo-router": { - "version": "5.1.11", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-5.1.11.tgz", - "integrity": "sha512-6YQGqQM2rviVSiU6++hrJDPMByHZ7Oiux4XmgoSaGdaHku5QOn9911f2puEUZh2H9ALKBipw5v3ZkrECBd6Zbw==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-6.0.23.tgz", + "integrity": "sha512-qCxVAiCrCyu0npky6azEZ6dJDMt77OmCzEbpF6RbUTlfkaCA417LvY14SBkk0xyGruSxy/7pvJOI6tuThaUVCA==", "license": "MIT", "dependencies": { - "@expo/metro-runtime": "5.0.5", - "@expo/schema-utils": "^0.1.0", - "@expo/server": "^0.6.3", + "@expo/metro-runtime": "^6.1.2", + "@expo/schema-utils": "^0.1.8", "@radix-ui/react-slot": "1.2.0", - "@react-navigation/bottom-tabs": "^7.3.10", - "@react-navigation/native": "^7.1.6", - "@react-navigation/native-stack": "^7.3.10", + "@radix-ui/react-tabs": "^1.1.12", + "@react-navigation/bottom-tabs": "^7.4.0", + "@react-navigation/native": "^7.1.8", + "@react-navigation/native-stack": "^7.3.16", "client-only": "^0.0.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "expo-server": "^1.0.5", + "fast-deep-equal": "^3.1.3", "invariant": "^2.2.4", + "nanoid": "^3.3.8", + "query-string": "^7.1.3", "react-fast-compare": "^3.2.2", "react-native-is-edge-to-edge": "^1.1.6", "semver": "~7.6.3", "server-only": "^0.0.1", - "shallowequal": "^1.1.0" + "sf-symbols-typescript": "^2.1.0", + "shallowequal": "^1.1.0", + "use-latest-callback": "^0.2.1", + "vaul": "^1.1.2" }, "peerDependencies": { - "@react-navigation/drawer": "^7.3.9", + "@expo/metro-runtime": "^6.1.2", + "@react-navigation/drawer": "^7.5.0", + "@testing-library/react-native": ">= 12.0.0", "expo": "*", - "expo-constants": "*", - "expo-linking": "*", + "expo-constants": "^18.0.13", + "expo-linking": "^8.0.11", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-gesture-handler": "*", "react-native-reanimated": "*", - "react-native-safe-area-context": "*", + "react-native-safe-area-context": ">= 5.4.0", "react-native-screens": "*", + "react-native-web": "*", "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" }, "peerDependenciesMeta": { "@react-navigation/drawer": { "optional": true }, - "@testing-library/jest-native": { + "@testing-library/react-native": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-gesture-handler": { "optional": true }, "react-native-reanimated": { "optional": true }, + "react-native-web": { + "optional": true + }, "react-server-dom-webpack": { "optional": true } } }, - "node_modules/expo-router/node_modules/@expo/server": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.6.3.tgz", - "integrity": "sha512-Ea7NJn9Xk1fe4YeJ86rObHSv/bm3u/6WiQPXEqXJ2GrfYpVab2Swoh9/PnSM3KjR64JAgKjArDn1HiPjITCfHA==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "debug": "^4.3.4", - "source-map-support": "~0.5.21", - "undici": "^6.18.2 || ^7.0.0" - } - }, "node_modules/expo-router/node_modules/@radix-ui/react-slot": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", @@ -16403,6 +16524,15 @@ "node": ">=10" } }, + "node_modules/expo-server": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-1.0.5.tgz", + "integrity": "sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==", + "license": "MIT", + "engines": { + "node": ">=20.16.0" + } + }, "node_modules/expo-sharing": { "version": "14.0.8", "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-14.0.8.tgz", @@ -16413,12 +16543,12 @@ } }, "node_modules/expo-splash-screen": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.30.10.tgz", - "integrity": "sha512-Tt9va/sLENQDQYeOQ6cdLdGvTZ644KR3YG9aRlnpcs2/beYjOX1LHT510EGzVN9ljUTg+1ebEo5GGt2arYtPjw==", + "version": "31.0.13", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-31.0.13.tgz", + "integrity": "sha512-1epJLC1cDlwwj089R2h8cxaU5uk4ONVAC+vzGiTZH4YARQhL4Stlz1MbR6yAS173GMosvkE6CAeihR7oIbCkDA==", "license": "MIT", "dependencies": { - "@expo/prebuild-config": "^9.0.10" + "@expo/prebuild-config": "^54.0.8" }, "peerDependencies": { "expo": "*" @@ -16426,318 +16556,132 @@ }, "node_modules/expo-sqlite": { "version": "16.0.10", - "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-16.0.10.tgz", - "integrity": "sha512-tUOKxE9TpfneRG3eOfbNfhN9236SJ7IiUnP8gCqU7umd9DtgDGB/5PhYVVfl+U7KskgolgNoB9v9OZ9iwXN8Eg==", - "license": "MIT", - "peer": true, - "dependencies": { - "await-lock": "^2.2.2" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-status-bar": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-2.2.3.tgz", - "integrity": "sha512-+c8R3AESBoduunxTJ8353SqKAKpxL6DvcD8VKBuh81zzJyUUbfB4CVjr1GufSJEKsMzNPXZU+HJwXx7Xh7lx8Q==", - "license": "MIT", - "dependencies": { - "react-native-edge-to-edge": "1.6.0", - "react-native-is-edge-to-edge": "^1.1.6" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-structured-headers": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-4.1.0.tgz", - "integrity": "sha512-2X+aUNzC/qaw7/WyUhrVHNDB0uQ5rE12XA2H/rJXaAiYQSuOeU90ladaN0IJYV9I2XlhYrjXLktLXWbO7zgbag==", - "license": "MIT" - }, - "node_modules/expo-system-ui": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-5.0.11.tgz", - "integrity": "sha512-PG5VdaG5cwBe1Rj02mJdnsihKl9Iw/w/a6+qh2mH3f2K/IvQ+Hf7aG2kavSADtkGNCNj7CEIg7Rn4DQz/SE5rQ==", - "license": "MIT", - "dependencies": { - "@react-native/normalize-colors": "0.79.6", - "debug": "^4.3.2" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native-web": { - "optional": true - } - } - }, - "node_modules/expo-updates": { - "version": "0.28.18", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.28.18.tgz", - "integrity": "sha512-qbxRF8w/xPNiEWmZHDxK4XJ0ns4A9VpQg66jNeAEc8mrX9f7TG3TyLyLtydAP0F4aTNrBcSxah8K5VA90vcPig==", - "license": "MIT", - "dependencies": { - "@expo/code-signing-certificates": "^0.0.6", - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/spawn-async": "^1.7.2", - "arg": "4.1.0", - "chalk": "^4.1.2", - "expo-eas-client": "~0.14.4", - "expo-manifests": "~0.16.6", - "expo-structured-headers": "~4.1.0", - "expo-updates-interface": "~1.1.0", - "glob": "^10.4.2", - "ignore": "^5.3.1", - "resolve-from": "^5.0.0" - }, - "bin": { - "expo-updates": "bin/cli.js" - }, - "peerDependencies": { - "expo": "*", - "react": "*" - } - }, - "node_modules/expo-updates-interface": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-1.1.0.tgz", - "integrity": "sha512-DeB+fRe0hUDPZhpJ4X4bFMAItatFBUPjw/TVSbJsaf3Exeami+2qbbJhWkcTMoYHOB73nOIcaYcWXYJnCJXO0w==", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-updates/node_modules/arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", - "license": "MIT" - }, - "node_modules/expo-updates/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/expo-updates/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-updates/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.79.6", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.6.tgz", - "integrity": "sha512-CS5OrgcMPixOyUJ/Sk/HSsKsKgyKT5P7y3CojimOQzWqRZBmoQfxdST4ugj7n1H+ebM2IKqbgovApFbqXsoX0g==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.79.6" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/expo/node_modules/@react-native/babel-preset": { - "version": "0.79.6", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.79.6.tgz", - "integrity": "sha512-H+FRO+r2Ql6b5IwfE0E7D52JhkxjeGSBSUpCXAI5zQ60zSBJ54Hwh2bBJOohXWl4J+C7gKYSAd2JHMUETu+c/A==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.4", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.25.4", - "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-react-display-name": "^7.24.7", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.25.2", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.79.6", - "babel-plugin-syntax-hermes-parser": "0.25.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">=18" + "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-16.0.10.tgz", + "integrity": "sha512-tUOKxE9TpfneRG3eOfbNfhN9236SJ7IiUnP8gCqU7umd9DtgDGB/5PhYVVfl+U7KskgolgNoB9v9OZ9iwXN8Eg==", + "license": "MIT", + "dependencies": { + "await-lock": "^2.2.2" }, "peerDependencies": { - "@babel/core": "*" + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/expo/node_modules/@react-native/codegen": { - "version": "0.79.6", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.79.6.tgz", - "integrity": "sha512-iRBX8Lgbqypwnfba7s6opeUwVyaR23mowh9ILw7EcT2oLz3RqMmjJdrbVpWhGSMGq2qkPfqAH7bhO8C7O+xfjQ==", + "node_modules/expo-status-bar": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-3.0.9.tgz", + "integrity": "sha512-xyYyVg6V1/SSOZWh4Ni3U129XHCnFHBTcUo0dhWtFDrZbNp/duw5AGsQfb2sVeU0gxWHXSY1+5F0jnKYC7WuOw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/parser": "^7.25.3", - "glob": "^7.1.1", - "hermes-parser": "0.25.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">=18" + "react-native-is-edge-to-edge": "^1.2.1" }, "peerDependencies": { - "@babel/core": "*" + "react": "*", + "react-native": "*" } }, - "node_modules/expo/node_modules/babel-plugin-react-native-web": { - "version": "0.19.13", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", - "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", + "node_modules/expo-structured-headers": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-5.0.0.tgz", + "integrity": "sha512-RmrBtnSphk5REmZGV+lcdgdpxyzio5rJw8CXviHE6qH5pKQQ83fhMEcigvrkBdsn2Efw2EODp4Yxl1/fqMvOZw==", "license": "MIT" }, - "node_modules/expo/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz", - "integrity": "sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.25.1" - } - }, - "node_modules/expo/node_modules/babel-preset-expo": { - "version": "13.2.5", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-13.2.5.tgz", - "integrity": "sha512-YjVkP1bOLO2OgR2fyCedruYMPR7GFbAtCvvWITBW1UAp6e3ACYZtN6uoqkXgXP6PHQkb6M7qf2vZreBPEZK38A==", + "node_modules/expo-system-ui": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-6.0.9.tgz", + "integrity": "sha512-eQTYGzw1V4RYiYHL9xDLYID3Wsec2aZS+ypEssmF64D38aDrqbDgz1a2MSlHLQp2jHXSs3FvojhZ9FVela1Zcg==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.79.6", - "babel-plugin-react-native-web": "~0.19.13", - "babel-plugin-syntax-hermes-parser": "^0.25.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "debug": "^4.3.4", - "react-refresh": "^0.14.2", - "resolve-from": "^5.0.0" + "@react-native/normalize-colors": "0.81.5", + "debug": "^4.3.2" }, "peerDependencies": { - "babel-plugin-react-compiler": "^19.0.0-beta-e993439-20250405" + "expo": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "babel-plugin-react-compiler": { + "react-native-web": { "optional": true } } }, - "node_modules/expo/node_modules/expo-font": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.3.2.tgz", - "integrity": "sha512-wUlMdpqURmQ/CNKK/+BIHkDA5nGjMqNlYmW0pJFXY/KE/OG80Qcavdu2sHsL4efAIiNGvYdBS10WztuQYU4X0A==", + "node_modules/expo-updates": { + "version": "29.0.16", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-29.0.16.tgz", + "integrity": "sha512-E9/fxRz/Eurtc7hxeI/6ZPyHH3To9Xoccm1kXoICZTRojmuTo+dx0Xv53UHyHn4G5zGMezyaKF2Qtj3AKcT93w==", "license": "MIT", "dependencies": { - "fontfaceobserver": "^2.1.0" + "@expo/code-signing-certificates": "^0.0.6", + "@expo/plist": "^0.4.8", + "@expo/spawn-async": "^1.7.2", + "arg": "4.1.0", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "expo-eas-client": "~1.0.8", + "expo-manifests": "~1.0.10", + "expo-structured-headers": "~5.0.0", + "expo-updates-interface": "~2.0.0", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-updates": "bin/cli.js" }, "peerDependencies": { "expo": "*", - "react": "*" + "react": "*", + "react-native": "*" } }, - "node_modules/expo/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "node_modules/expo-updates-interface": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-2.0.0.tgz", + "integrity": "sha512-pTzAIufEZdVPKql6iMi5ylVSPqV1qbEopz9G6TSECQmnNde2nwq42PxdFBaUEd8IZJ/fdJLQnOT3m6+XJ5s7jg==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-updates/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", "license": "MIT" }, - "node_modules/expo/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "license": "MIT", + "node_modules/expo-updates/node_modules/glob": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "license": "BlueOak-1.0.0", "dependencies": { - "hermes-estree": "0.25.1" + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-updates/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/expo/node_modules/react-refresh": { @@ -17089,19 +17033,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fb-dotslash": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", - "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "bin": { - "dotslash": "bin/dotslash" - }, - "engines": { - "node": ">=20" - } - }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -17522,6 +17453,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", @@ -17538,6 +17470,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "license": "ISC", "engines": { "node": ">=14" @@ -17894,6 +17827,18 @@ "node": ">=10.13.0" } }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -18552,6 +18497,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -19037,21 +18983,6 @@ "node": ">= 0.4" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -19289,25 +19220,24 @@ } }, "node_modules/jest-expo": { - "version": "53.0.14", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-53.0.14.tgz", - "integrity": "sha512-BwE5ZTjkhTvO+ejJBBJNlwar2YiahWjbcwhSPQ3oYV5UyvVdTrpKvZ+KjFv/7N5OaC3cOhv4/Ve4cTgS6m6vcw==", + "version": "54.0.17", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-54.0.17.tgz", + "integrity": "sha512-LyIhrsP4xvHEEcR1R024u/LBj3uPpAgB+UljgV+YXWkEHjprnr0KpE4tROsMNYCVTM1pPlAnPuoBmn5gnAN9KA==", "dev": true, "license": "MIT", "dependencies": { - "@expo/config": "~11.0.13", - "@expo/json-file": "^9.1.5", + "@expo/config": "~12.0.13", + "@expo/json-file": "^10.0.8", "@jest/create-cache-key-function": "^29.2.1", "@jest/globals": "^29.2.1", "babel-jest": "^29.2.1", - "find-up": "^5.0.0", "jest-environment-jsdom": "^29.2.1", "jest-snapshot": "^29.2.1", "jest-watch-select-projects": "^2.0.0", "jest-watch-typeahead": "2.2.1", "json5": "^2.2.3", "lodash": "^4.17.19", - "react-test-renderer": "19.0.0", + "react-test-renderer": "19.1.0", "server-only": "^0.0.1", "stacktrace-js": "^2.0.2" }, @@ -19325,6 +19255,27 @@ } } }, + "node_modules/jest-expo/node_modules/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-is": "^19.1.0", + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/jest-expo/node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-get-type": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", @@ -20026,12 +19977,6 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "license": "MIT" }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "license": "MIT" - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -20355,6 +20300,26 @@ "lightningcss-win32-x64-msvc": "1.27.0" } }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/lightningcss-darwin-arm64": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", @@ -21057,9 +21022,9 @@ } }, "node_modules/metro": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.82.5.tgz", - "integrity": "sha512-8oAXxL7do8QckID/WZEKaIFuQJFUTLzfVcC48ghkHhNK2RGuQq8Xvf4AVd+TUA0SZtX0q8TGNXZ/eba1ckeGCg==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", + "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", @@ -21077,24 +21042,24 @@ "error-stack-parser": "^2.0.6", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.29.1", + "hermes-parser": "0.32.0", "image-size": "^1.0.2", "invariant": "^2.2.4", "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.82.5", - "metro-cache": "0.82.5", - "metro-cache-key": "0.82.5", - "metro-config": "0.82.5", - "metro-core": "0.82.5", - "metro-file-map": "0.82.5", - "metro-resolver": "0.82.5", - "metro-runtime": "0.82.5", - "metro-source-map": "0.82.5", - "metro-symbolicate": "0.82.5", - "metro-transform-plugins": "0.82.5", - "metro-transform-worker": "0.82.5", + "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-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", "mime-types": "^2.1.27", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", @@ -21107,49 +21072,64 @@ "metro": "src/cli.js" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-babel-transformer": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.82.5.tgz", - "integrity": "sha512-W/scFDnwJXSccJYnOFdGiYr9srhbHPdxX9TvvACOFsIXdLilh3XuxQl/wXW6jEJfgIb0jTvoTlwwrqvuwymr6Q==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", + "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.29.1", + "hermes-parser": "0.32.0", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.32.0" } }, "node_modules/metro-cache": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.82.5.tgz", - "integrity": "sha512-AwHV9607xZpedu1NQcjUkua8v7HfOTKfftl6Vc9OGr/jbpiJX6Gpy8E/V9jo/U9UuVYX2PqSUcVNZmu+LTm71Q==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", + "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", "license": "MIT", "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "https-proxy-agent": "^7.0.5", - "metro-core": "0.82.5" + "metro-core": "0.83.3" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-cache-key": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.82.5.tgz", - "integrity": "sha512-qpVmPbDJuRLrT4kcGlUouyqLGssJnbTllVtvIgXfR7ZuzMKf0mGS+8WzcqzNK8+kCyakombQWR0uDd8qhWGJcA==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", + "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-cache/node_modules/agent-base": { @@ -21163,126 +21143,54 @@ }, "node_modules/metro-cache/node_modules/https-proxy-agent": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/metro-config": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.82.5.tgz", - "integrity": "sha512-/r83VqE55l0WsBf8IhNmc/3z71y2zIPe5kRSuqA5tY/SL/ULzlHUJEMd1szztd0G45JozLwjvrhAzhDPJ/Qo/g==", - "license": "MIT", - "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.82.5", - "metro-cache": "0.82.5", - "metro-core": "0.82.5", - "metro-runtime": "0.82.5" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/metro-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/metro-config/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "license": "MIT", - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/metro-config/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "license": "MIT", - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/metro-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/metro-config/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/metro-config/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, "engines": { - "node": ">=4" + "node": ">=20.19.4" } }, "node_modules/metro-core": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.82.5.tgz", - "integrity": "sha512-OJL18VbSw2RgtBm1f2P3J5kb892LCVJqMvslXxuxjAPex8OH7Eb8RBfgEo7VZSjgb/LOf4jhC4UFk5l5tAOHHA==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", + "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.82.5" + "metro-resolver": "0.83.3" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-file-map": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.82.5.tgz", - "integrity": "sha512-vpMDxkGIB+MTN8Af5hvSAanc6zXQipsAUO+XUx3PCQieKUfLwdoa8qaZ1WAQYRpaU+CJ8vhBcxtzzo3d9IsCIQ==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", + "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -21296,20 +21204,20 @@ "walker": "^1.0.7" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-minify-terser": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.82.5.tgz", - "integrity": "sha512-v6Nx7A4We6PqPu/ta1oGTqJ4Usz0P7c+3XNeBxW9kp8zayS3lHUKR0sY0wsCHInxZlNAEICx791x+uXytFUuwg==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", + "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-react-native-babel-preset": { @@ -21415,34 +21323,34 @@ } }, "node_modules/metro-resolver": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.82.5.tgz", - "integrity": "sha512-kFowLnWACt3bEsuVsaRNgwplT8U7kETnaFHaZePlARz4Fg8tZtmRDUmjaD68CGAwc0rwdwNCkWizLYpnyVcs2g==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", + "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-runtime": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.82.5.tgz", - "integrity": "sha512-rQZDoCUf7k4Broyw3Ixxlq5ieIPiR1ULONdpcYpbJQ6yQ5GGEyYjtkztGD+OhHlw81LCR2SUAoPvtTus2WDK5g==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-source-map": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.82.5.tgz", - "integrity": "sha512-wH+awTOQJVkbhn2SKyaw+0cd+RVSCZ3sHVgyqJFQXIee/yLs3dZqKjjeKKhhVeudgjXo7aE/vSu/zVfcQEcUfw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", + "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", @@ -21450,14 +21358,14 @@ "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.82.5", + "metro-symbolicate": "0.83.3", "nullthrows": "^1.1.1", - "ob1": "0.82.5", + "ob1": "0.83.3", "source-map": "^0.5.6", "vlq": "^1.0.0" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-source-map/node_modules/source-map": { @@ -21470,14 +21378,14 @@ } }, "node_modules/metro-symbolicate": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.82.5.tgz", - "integrity": "sha512-1u+07gzrvYDJ/oNXuOG1EXSvXZka/0JSW1q2EYBWerVKMOhvv9JzDGyzmuV7hHbF2Hg3T3S2uiM36sLz1qKsiw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", + "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.82.5", + "metro-source-map": "0.83.3", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" @@ -21486,7 +21394,7 @@ "metro-symbolicate": "src/index.js" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-symbolicate/node_modules/source-map": { @@ -21499,9 +21407,9 @@ } }, "node_modules/metro-transform-plugins": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.82.5.tgz", - "integrity": "sha512-57Bqf3rgq9nPqLrT2d9kf/2WVieTFqsQ6qWHpEng5naIUtc/Iiw9+0bfLLWSAw0GH40iJ4yMjFcFJDtNSYynMA==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", + "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -21512,13 +21420,13 @@ "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro-transform-worker": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.82.5.tgz", - "integrity": "sha512-mx0grhAX7xe+XUQH6qoHHlWedI8fhSpDGsfga7CpkO9Lk9W+aPitNtJWNGrW8PfjKEWbT9Uz9O50dkI8bJqigw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", + "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -21526,17 +21434,17 @@ "@babel/parser": "^7.25.3", "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "metro": "0.82.5", - "metro-babel-transformer": "0.82.5", - "metro-cache": "0.82.5", - "metro-cache-key": "0.82.5", - "metro-minify-terser": "0.82.5", - "metro-source-map": "0.82.5", - "metro-transform-plugins": "0.82.5", + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-source-map": "0.83.3", + "metro-transform-plugins": "0.83.3", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/metro/node_modules/ci-info": { @@ -21545,6 +21453,21 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "license": "MIT" }, + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.32.0" + } + }, "node_modules/metro/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -22002,9 +21925,9 @@ } }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -22050,15 +21973,15 @@ "license": "MIT" }, "node_modules/ob1": { - "version": "0.82.5", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.82.5.tgz", - "integrity": "sha512-QyQQ6e66f+Ut/qUVjEce0E/wux5nAGLXYZDn1jr15JWstHsCH3l6VVrg8NKDptW9NEiBXKOJeGF/ydxeSDF3IQ==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", + "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18.18" + "node": ">=20.19.4" } }, "node_modules/object-assign": { @@ -22386,6 +22309,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { @@ -22607,26 +22531,29 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } }, "node_modules/path-to-regexp": { "version": "8.3.0", @@ -22959,9 +22886,9 @@ "license": "MIT" }, "node_modules/posthog-js": { - "version": "1.338.0", - "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.338.0.tgz", - "integrity": "sha512-Lnoz1YiSh1c3FbmwKYfCCeELHp1MWhYz6b5dEIX2YeDMvUt6xyeVy+MhpiA9xKs0Lbj5kGYk48kGt42qIlqq8A==", + "version": "1.344.0", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.344.0.tgz", + "integrity": "sha512-AorrWVDTeK99SxRqeeHlF101flAmbUNfo8nHUsJ6JAhoLzJwubELpsIbVYwKa2XJMTnp1E7FrvvK6XQiocokPg==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -22969,8 +22896,8 @@ "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", "@opentelemetry/resources": "^2.2.0", "@opentelemetry/sdk-logs": "^0.208.0", - "@posthog/core": "1.19.0", - "@posthog/types": "1.338.0", + "@posthog/core": "1.21.0", + "@posthog/types": "1.344.0", "core-js": "^3.38.1", "dompurify": "^3.3.1", "fflate": "^0.4.8", @@ -22980,12 +22907,12 @@ } }, "node_modules/posthog-react-native": { - "version": "4.29.0", - "resolved": "https://registry.npmjs.org/posthog-react-native/-/posthog-react-native-4.29.0.tgz", - "integrity": "sha512-IcRe8Z7y1WHcKD5MFjxYvycoGtRsn7GFFdm0UicsLPS9X5QcYfdLf06WIYQYYVJZyox8V8nBCd9AzbDMrrCq0A==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/posthog-react-native/-/posthog-react-native-4.31.0.tgz", + "integrity": "sha512-JCC2GUU7FgayjR7jfp53FptYebdVVzUO4v4saN94E74UB8NUbJhrbaVE0Qq6+yxAhVWRW97m6bCpUkxrzYRC2w==", "license": "MIT", "dependencies": { - "@posthog/core": "1.19.0" + "@posthog/core": "1.21.0" }, "peerDependencies": { "@react-native-async-storage/async-storage": ">=1.0.0", @@ -23038,13 +22965,10 @@ } }, "node_modules/posthog-react-native-session-replay": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/posthog-react-native-session-replay/-/posthog-react-native-session-replay-1.2.3.tgz", - "integrity": "sha512-4ZwdjeCldMveYAqSkTtppI3v4gXrcvoY5INNVy1G2/XJKWPGVrd+hvUwQR9UK/QaGBouE5CpkemADNu326z/aw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/posthog-react-native-session-replay/-/posthog-react-native-session-replay-1.2.4.tgz", + "integrity": "sha512-kPPDTJAHhEJBp5/aCNlO3bjBhcQlXmTOhrDfsZa1FuW44csldVK33DYA2Xr1eQDh/LW0xH3P3IupE+vpc9MRXQ==", "license": "MIT", - "workspaces": [ - "example" - ], "peerDependencies": { "react": "*", "react-native": "*" @@ -23516,9 +23440,9 @@ } }, "node_modules/react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", - "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -23565,17 +23489,23 @@ } }, "node_modules/react-dom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", - "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", "dependencies": { - "scheduler": "^0.25.0" + "scheduler": "^0.26.0" }, "peerDependencies": { - "react": "^19.0.0" + "react": "^19.1.0" } }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, "node_modules/react-error-boundary": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", @@ -23633,42 +23563,40 @@ "license": "MIT" }, "node_modules/react-native": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.79.5.tgz", - "integrity": "sha512-jVihwsE4mWEHZ9HkO1J2eUZSwHyDByZOqthwnGrVZCh6kTQBCm4v8dicsyDa6p0fpWNE5KicTcpX/XXl0ASJFg==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", + "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.79.5", - "@react-native/codegen": "0.79.5", - "@react-native/community-cli-plugin": "0.79.5", - "@react-native/gradle-plugin": "0.79.5", - "@react-native/js-polyfills": "0.79.5", - "@react-native/normalize-colors": "0.79.5", - "@react-native/virtualized-lists": "0.79.5", + "@react-native/assets-registry": "0.81.5", + "@react-native/codegen": "0.81.5", + "@react-native/community-cli-plugin": "0.81.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", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "babel-plugin-syntax-hermes-parser": "0.29.1", "base64-js": "^1.5.1", - "chalk": "^4.0.0", "commander": "^12.0.0", - "event-target-shim": "^5.0.1", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.82.0", - "metro-source-map": "^0.82.0", + "metro-runtime": "^0.83.1", + "metro-source-map": "^0.83.1", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", - "react-devtools-core": "^6.1.1", + "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.25.0", + "scheduler": "0.26.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", @@ -23679,11 +23607,11 @@ "react-native": "cli.js" }, "engines": { - "node": ">=18" + "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.0.0", - "react": "^19.0.0" + "@types/react": "^19.1.0", + "react": "^19.1.0" }, "peerDependenciesMeta": { "@types/react": { @@ -23747,16 +23675,6 @@ "node": ">=10" } }, - "node_modules/react-native-edge-to-edge": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/react-native-edge-to-edge/-/react-native-edge-to-edge-1.6.0.tgz", - "integrity": "sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, "node_modules/react-native-element-dropdown": { "version": "2.12.2", "resolved": "https://registry.npmjs.org/react-native-element-dropdown/-/react-native-element-dropdown-2.12.2.tgz", @@ -23774,9 +23692,9 @@ } }, "node_modules/react-native-gesture-handler": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.24.0.tgz", - "integrity": "sha512-ZdWyOd1C8axKJHIfYxjJKCcxjWEpUtUWgTOVY2wynbiveSQDm8X/PDyAKXSer/GOtIpjudUbACOndZXCN3vHsw==", + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.28.0.tgz", + "integrity": "sha512-0msfJ1vRxXKVgTgvL+1ZOoYw3/0z1R+Ked0+udoJhyplC2jbVKIJ8Z1bzWdpQRCV3QcQ87Op0zJVE5DhKK2A0A==", "license": "MIT", "dependencies": { "@egjs/hammerjs": "^2.0.17", @@ -23812,9 +23730,9 @@ } }, "node_modules/react-native-keyboard-controller": { - "version": "1.20.7", - "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.20.7.tgz", - "integrity": "sha512-G8S5jz1FufPrcL1vPtReATx+jJhT/j+sTqxMIb30b1z7cYEfMlkIzOCyaHgf6IMB2KA9uBmnA5M6ve2A9Ou4kw==", + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.18.5.tgz", + "integrity": "sha512-wbYN6Tcu3G5a05dhRYBgjgd74KqoYWuUmroLpigRg9cXy5uYo7prTMIvMgvLtARQtUF7BOtFggUnzgoBOgk0TQ==", "license": "MIT", "dependencies": { "react-native-is-edge-to-edge": "^1.2.1" @@ -23836,9 +23754,9 @@ } }, "node_modules/react-native-pager-view": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-7.0.2.tgz", - "integrity": "sha512-yj/v6BN/WGuV1VBVWaCjYOjQlhTaqJs4Ocismw0XRSsHGqO2wuQdWF8it5iFnfibQVBBED0/GC7qKOlQ4FBzNg==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.9.1.tgz", + "integrity": "sha512-uUT0MMMbNtoSbxe9pRvdJJKEi9snjuJ3fXlZhG8F2vVMOBJVt/AFtqMPUHu9yMflmqOr08PewKzj9EPl/Yj+Gw==", "license": "MIT", "peerDependencies": { "react": "*", @@ -23846,25 +23764,24 @@ } }, "node_modules/react-native-reanimated": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.1.6.tgz", - "integrity": "sha512-F+ZJBYiok/6Jzp1re75F/9aLzkgoQCOh4yxrnwATa8392RvM3kx+fiXXFvwcgE59v48lMwd9q0nzF1oJLXpfxQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.2.1.tgz", + "integrity": "sha512-/NcHnZMyOvsD/wYXug/YqSKw90P9edN0kEPL5lP4PFf1aQ4F1V7MKe/E0tvfkXKIajy3Qocp5EiEnlcrK/+BZg==", "license": "MIT", "dependencies": { - "react-native-is-edge-to-edge": "^1.2.1", - "semver": "7.7.2" + "react-native-is-edge-to-edge": "1.2.1", + "semver": "7.7.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0", "react": "*", "react-native": "*", - "react-native-worklets": ">=0.5.0" + "react-native-worklets": ">=0.7.0" } }, "node_modules/react-native-reanimated/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -23889,9 +23806,9 @@ } }, "node_modules/react-native-safe-area-context": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.4.0.tgz", - "integrity": "sha512-JaEThVyJcLhA+vU0NU8bZ0a1ih6GiF4faZ+ArZLqpYbL6j7R3caRqj+mE3lEtKCuHgwjLg3bCxLL1GPUJZVqUA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", + "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "license": "MIT", "peerDependencies": { "react": "*", @@ -23899,13 +23816,13 @@ } }, "node_modules/react-native-screens": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.11.1.tgz", - "integrity": "sha512-F0zOzRVa3ptZfLpD0J8ROdo+y1fEPw+VBFq1MTY/iyDu08al7qFUO5hLMd+EYMda5VXGaTFCa8q7bOppUszhJw==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.16.0.tgz", + "integrity": "sha512-yIAyh7F/9uWkOzCi1/2FqvNvK6Wb9Y1+Kzn16SuGfN9YFJDTbwlzGRvePCNTOX0recpLQF3kc2FmvMUhyTCH1Q==", "license": "MIT", "dependencies": { "react-freeze": "^1.0.0", - "react-native-is-edge-to-edge": "^1.1.7", + "react-native-is-edge-to-edge": "^1.2.1", "warn-once": "^0.1.0" }, "peerDependencies": { @@ -23929,9 +23846,9 @@ } }, "node_modules/react-native-svg": { - "version": "15.15.2", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.2.tgz", - "integrity": "sha512-lpaSwA2i+eLvcEdDZyGgMEInQW99K06zjJqfMFblE0yxI0SCN5E4x6in46f0IYi6i3w2t2aaq3oOnyYBe+bo4w==", + "version": "15.12.1", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.12.1.tgz", + "integrity": "sha512-vCuZJDf8a5aNC2dlMovEv4Z0jjEUET53lm/iILFnFewa15b4atjVxU6Wirm6O9y6dEsdjDZVD7Q3QM4T1wlI8g==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -24023,88 +23940,125 @@ "license": "MIT" }, "node_modules/react-native-worklets": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.5.1.tgz", - "integrity": "sha512-lJG6Uk9YuojjEX/tQrCbcbmpdLCSFxDK1rJlkDhgqkVi1KZzG7cdcBFQRqyNOOzR9Y0CXNuldmtWTGOyM0k0+w==", - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-arrow-functions": "^7.0.0-0", - "@babel/plugin-transform-class-properties": "^7.0.0-0", - "@babel/plugin-transform-classes": "^7.0.0-0", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", - "@babel/plugin-transform-optional-chaining": "^7.0.0-0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", - "@babel/plugin-transform-template-literals": "^7.0.0-0", - "@babel/plugin-transform-unicode-regex": "^7.0.0-0", - "@babel/preset-typescript": "^7.16.7", - "convert-source-map": "^2.0.0", - "semver": "7.7.2" + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.2.tgz", + "integrity": "sha512-DuLu1kMV/Uyl9pQHp3hehAlThoLw7Yk2FwRTpzASOmI+cd4845FWn3m2bk9MnjUw8FBRIyhwLqYm2AJaXDXsog==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-arrow-functions": "7.27.1", + "@babel/plugin-transform-class-properties": "7.27.1", + "@babel/plugin-transform-classes": "7.28.4", + "@babel/plugin-transform-nullish-coalescing-operator": "7.27.1", + "@babel/plugin-transform-optional-chaining": "7.27.1", + "@babel/plugin-transform-shorthand-properties": "7.27.1", + "@babel/plugin-transform-template-literals": "7.27.1", + "@babel/plugin-transform-unicode-regex": "7.27.1", + "@babel/preset-typescript": "7.27.1", + "convert-source-map": "2.0.0", + "semver": "7.7.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0", + "@babel/core": "*", "react": "*", "react-native": "*" } }, - "node_modules/react-native-worklets/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/react-native/node_modules/@react-native/codegen": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.79.5.tgz", - "integrity": "sha512-FO5U1R525A1IFpJjy+KVznEinAgcs3u7IbnbRJUG9IH/MBXi2lEU2LtN+JarJ81MCfW4V2p0pg6t/3RGHFRrlQ==", + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-classes": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", "license": "MIT", "dependencies": { - "glob": "^7.1.1", - "hermes-parser": "0.25.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" }, "engines": { - "node": ">=18" + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "*" + "@babel/core": "^7.0.0-0" } }, - "node_modules/react-native/node_modules/@react-native/normalize-colors": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.79.5.tgz", - "integrity": "sha512-nGXMNMclZgzLUxijQQ38Dm3IAEhgxuySAWQHnljFtfB0JdaMwpe0Ox9H7Tp2OgrEA+EMEv+Od9ElKlHwGKmmvQ==", - "license": "MIT" - }, - "node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz", - "integrity": "sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==", + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "license": "MIT", "dependencies": { - "hermes-parser": "0.25.1" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/react-native/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "license": "MIT" + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/react-native/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "node_modules/react-native-worklets/node_modules/@babel/preset-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", "license": "MIT", "dependencies": { - "hermes-estree": "0.25.1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/react-native/node_modules/react-refresh": { @@ -24116,6 +24070,12 @@ "node": ">=0.10.0" } }, + "node_modules/react-native/node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, "node_modules/react-native/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -24141,7 +24101,6 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", - "dev": true, "license": "MIT", "peer": true, "engines": { @@ -24546,6 +24505,18 @@ "node": ">=8" } }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "license": "MIT", + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -24759,6 +24730,7 @@ "version": "0.25.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "devOptional": true, "license": "MIT" }, "node_modules/semver": { @@ -25065,16 +25037,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sharp-cli/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, "node_modules/sharp-cli/node_modules/minimatch": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", @@ -25091,23 +25053,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sharp-cli/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sharp/node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -25622,6 +25567,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -25636,6 +25582,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25760,6 +25707,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -25834,17 +25782,17 @@ "license": "MIT" }, "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { @@ -25855,15 +25803,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/sucrase/node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -25873,42 +25812,6 @@ "node": ">= 6" } }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/supabase": { "version": "2.75.1", "resolved": "https://registry.npmjs.org/supabase/-/supabase-2.75.1.tgz", @@ -27188,9 +27091,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -27871,6 +27774,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -28012,7 +27916,6 @@ "version": "2.8.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "devOptional": true, "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index d9da12525..aeffe0b47 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@azure/core-asynciterator-polyfill": "^1.0.2", "@blazejkustra/react-native-alert": "^1.0.0", "@expo-google-fonts/noto-sans": "^0.4.2", - "@expo/vector-icons": "^14.0.2", + "@expo/vector-icons": "^15.0.3", "@gorhom/bottom-sheet": "^5.2.8", "@hookform/resolvers": "^5.0.1", "@legendapp/list": "^2.0.12", @@ -73,9 +73,9 @@ "@powersync/tanstack-react-query": "^0.1.6", "@powersync/web": "^1.27.1", "@quidone/react-native-wheel-picker": "^1.6.1", - "@react-native-async-storage/async-storage": "2.1.2", + "@react-native-async-storage/async-storage": "2.2.0", "@react-native-community/netinfo": "11.4.1", - "@react-native-community/slider": "^5.1.1", + "@react-native-community/slider": "5.0.1", "@react-native-documents/picker": "^10.1.5", "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/native": "^7.1.6", @@ -101,59 +101,60 @@ "bidirectional-map": "^1.1.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "eslint-config-expo": "~9.2.0", + "eslint-config-expo": "~10.0.0", "eslint-plugin-drizzle": "^0.2.3", - "expo": "^53.0.20", - "expo-application": "~6.1.5", - "expo-av": "~15.1.7", - "expo-build-properties": "~0.14.8", + "expo": "^54.0.33", + "expo-application": "~7.0.8", + "expo-av": "~16.0.8", + "expo-build-properties": "~1.0.10", "expo-clipboard": "^8.0.7", - "expo-constants": "~17.1.7", - "expo-dev-client": "~5.2.4", - "expo-device": "~7.1.4", + "expo-constants": "~18.0.13", + "expo-dev-client": "~6.0.20", + "expo-device": "~8.0.10", "expo-drizzle-studio-plugin": "^0.2.0", - "expo-file-system": "~18.1.11", + "expo-file-system": "~19.0.21", + "expo-font": "~14.0.11", "expo-haptics": "^15.0.7", - "expo-image": "~2.4.1", - "expo-json-utils": "^0.14.0", - "expo-linear-gradient": "~14.1.5", - "expo-linking": "~7.1.7", - "expo-localization": "~16.1.6", - "expo-manifests": "~0.16.6", - "expo-router": "~5.1.4", + "expo-image": "~3.0.11", + "expo-linear-gradient": "~15.0.8", + "expo-linking": "~8.0.11", + "expo-localization": "~17.0.8", + "expo-manifests": "~1.0.10", + "expo-router": "~6.0.23", "expo-sharing": "^14.0.7", - "expo-splash-screen": "~0.30.10", - "expo-status-bar": "~2.2.3", - "expo-system-ui": "~5.0.10", - "expo-updates": "~0.28.17", + "expo-splash-screen": "~31.0.13", + "expo-sqlite": "~16.0.10", + "expo-status-bar": "~3.0.9", + "expo-system-ui": "~6.0.9", + "expo-updates": "~29.0.16", "js-logger": "^1.6.1", "lucide-react-native": "^0.510.0", "moti": "^0.30.0", "nativewind": "^4.2.1", - "posthog-js": "^1.265.1", - "posthog-react-native": "^4.3.0", - "posthog-react-native-session-replay": "^1.1.1", - "react": "19.0.0", + "posthog-js": "^1.344.0", + "posthog-react-native": "^4.31.0", + "posthog-react-native-session-replay": "^1.2.4", + "react": "19.1.0", "react-compiler-runtime": "^19.0.0-beta-af1b7da-20250417", - "react-dom": "19.0.0", + "react-dom": "19.1.0", "react-hook-form": "^7.54.2", - "react-native": "0.79.5", + "react-native": "0.81.5", "react-native-audio-concat": "^0.9.0", "react-native-element-dropdown": "2.12.2", - "react-native-gesture-handler": "~2.24.0", - "react-native-keyboard-controller": "^1.19.5", + "react-native-gesture-handler": "~2.28.0", + "react-native-keyboard-controller": "1.18.5", "react-native-onboarding": "^1.0.6", - "react-native-pager-view": "^7.0.0", - "react-native-reanimated": "~4.1.0", + "react-native-pager-view": "6.9.1", + "react-native-reanimated": "^4.2.1", "react-native-reorderable-list": "^0.18.0", - "react-native-safe-area-context": "5.4.0", - "react-native-screens": "~4.11.1", + "react-native-safe-area-context": "~5.6.0", + "react-native-screens": "~4.16.0", "react-native-sortables": "^1.9.4", - "react-native-svg": "^15.11.2", + "react-native-svg": "15.12.1", "react-native-url-polyfill": "^2.0.0", "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", - "react-native-worklets": "0.5.1", + "react-native-worklets": "^0.7.2", "tailwind-merge": "^3.3.0", "tailwindcss-animate": "^1.0.7", "testflight-dev-deploy": "^0.0.8", @@ -169,14 +170,12 @@ "@libsql/client": "^0.14.0", "@modelcontextprotocol/sdk": "^1.0.4", "@react-native-community/cli": "latest", - "@react-native/debugger-frontend": "^0.83.1", - "@react-native/dev-middleware": "^0.83.1", "@total-typescript/ts-reset": "^0.6.1", "@types/bidirectional-map": "^1.0.4", "@types/default-gateway": "^7.2.2", "@types/jest": "^29.5.12", "@types/node": "^22.18.9", - "@types/react": "~19.0.10", + "@types/react": "~19.1.10", "@types/react-test-renderer": "^19.0.0", "babel-plugin-inline-import": "^3.0.0", "babel-preset-expo": "^54.0.6", @@ -192,7 +191,7 @@ "eslint-plugin-react-hooks": "^7.0.1", "expo-atlas": "^0.4.0", "jest": "^29.2.1", - "jest-expo": "~53.0.9", + "jest-expo": "~54.0.17", "jiti": "^2.6.1", "knip": "^5.64.2", "metro-react-native-babel-transformer": "^0.77.0", @@ -206,7 +205,7 @@ "tailwindcss": "^3.4.17", "ts-node": "^10.9.2", "tsx": "^4.19.2", - "typescript": "~5.8.3", + "typescript": "~5.9.2", "typescript-eslint": "^8.20.0" }, "overrides": { @@ -218,18 +217,10 @@ } }, "schema-utils": "3.1.1", - "react": "19.0.0", - "react-dom": "19.0.0", - "@types/react": "~19.0.10", + "react": "19.1.0", + "react-dom": "19.1.0", + "@types/react": "~19.1.10", "jest-snapshot-prettier": "npm:prettier@^3.6.2" }, - "resolutions": { - "@react-native/dev-middleware": "0.83.0", - "@react-native/debugger-frontend": "0.83.0" - }, - "resolutionComments": { - "@react-native/dev-middleware": "Forcing resolution to use latest Chrome DevTools.", - "@react-native/debugger-frontend": "Forcing resolution to use latest Chrome DevTools." - }, "private": true } From ad1f4f4c1f82f5550358fbd27b30244c100e5e1e Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:16:58 -0600 Subject: [PATCH 024/143] expo doctor git ignore change --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b3378a05e..a67bd5cc4 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,8 @@ npm-debug.* *.orig.* web-build/ llm_supp_files/ -android/ -ios/ +/android +/ios .env .env.* !.env.*.example From a7ae6fb2d17f1c9f7663fd5fc1863abbd011644b Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:18:24 -0600 Subject: [PATCH 025/143] remove deprecated code (reanimated, edge to edge flag, safe area view) --- app.config.ts | 1 - components/TranscriptionEditModal.tsx | 2 +- components/ui/drawer/index.tsx | 10 ++++------ 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/app.config.ts b/app.config.ts index fb07b00dd..5a6bff38c 100644 --- a/app.config.ts +++ b/app.config.ts @@ -76,7 +76,6 @@ export default ({ config }: ConfigContext): ExpoConfig => } }, android: { - edgeToEdgeEnabled: true, adaptiveIcon: { foregroundImage: './assets/icons/adaptive-icon.png', monochromeImage: './assets/icons/adaptive-icon-mono.png', diff --git a/components/TranscriptionEditModal.tsx b/components/TranscriptionEditModal.tsx index 19648ba28..c737988cb 100644 --- a/components/TranscriptionEditModal.tsx +++ b/components/TranscriptionEditModal.tsx @@ -13,11 +13,11 @@ import { KeyboardAvoidingView, Modal, Platform, - SafeAreaView, TextInput, TouchableOpacity, View } from 'react-native'; +import { SafeAreaView } from 'react-native-safe-area-context'; interface TranscriptionEditModalProps { visible: boolean; diff --git a/components/ui/drawer/index.tsx b/components/ui/drawer/index.tsx index 43189e324..11b781683 100644 --- a/components/ui/drawer/index.tsx +++ b/components/ui/drawer/index.tsx @@ -29,9 +29,8 @@ import { } from '@gorhom/bottom-sheet'; import type { BottomSheetScrollViewProps } from '@gorhom/bottom-sheet/src/components/bottomSheetScrollable/types'; import { memo } from 'react'; -import type { KeyboardAwareScrollViewProps } from 'react-native-keyboard-controller'; import { KeyboardAwareScrollView } from 'react-native-keyboard-controller'; -import Reanimated from 'react-native-reanimated'; +import Animated from 'react-native-reanimated'; interface DrawerContextValue extends DrawerProps { ref: React.RefObject | null; @@ -349,10 +348,9 @@ function DrawerDescription({ ); } -const AnimatedScrollView = - Reanimated.createAnimatedComponent( - KeyboardAwareScrollView - ); +const AnimatedScrollView = Animated.createAnimatedComponent( + KeyboardAwareScrollView +); const BottomSheetScrollViewComponent = createBottomSheetScrollableComponent< BottomSheetScrollViewMethods, BottomSheetScrollViewProps From c113c1ee787d9b2b48df0a87c4f79c0465e789cc Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 9 Feb 2026 16:16:20 -0600 Subject: [PATCH 026/143] remove legacy expo file system --- components/NewReportModal.tsx | 4 +- db/supabase/SupabaseStorageAdapter.ts | 30 ++-- services/migrationBackupService.ts | 26 ++-- utils/backupUtils.ts | 191 ++++++++++---------------- utils/fileUtils.ts | 180 ++++++++++++++++-------- utils/localAudioConcat.ts | 13 +- utils/restoreUtils.ts | 47 +++---- 7 files changed, 250 insertions(+), 241 deletions(-) diff --git a/components/NewReportModal.tsx b/components/NewReportModal.tsx index 4c2e04647..ee82a9472 100644 --- a/components/NewReportModal.tsx +++ b/components/NewReportModal.tsx @@ -278,9 +278,7 @@ export const ReportModal: React.FC = ({ - - - + ); }; diff --git a/db/supabase/SupabaseStorageAdapter.ts b/db/supabase/SupabaseStorageAdapter.ts index 78371ac5a..7442c8f95 100644 --- a/db/supabase/SupabaseStorageAdapter.ts +++ b/db/supabase/SupabaseStorageAdapter.ts @@ -80,13 +80,14 @@ export class SupabaseStorageAdapter implements StorageAdapter { return data; } - writeFile( + // eslint-disable-next-line @typescript-eslint/require-await + async writeFile( fileURI: string, base64Data: string, options?: { encoding?: 'utf8' | 'base64'; } - ): Promise { + ) { return writeFile(fileURI, base64Data, options); } @@ -94,7 +95,7 @@ export class SupabaseStorageAdapter implements StorageAdapter { fileURI: string, options?: { encoding?: 'utf8' | 'base64'; mediaType?: string } ): Promise { - const exists = await fileExists(fileURI); + const exists = fileExists(fileURI); if (!exists) { console.error('[STORAGE] File does not exist for upload:', fileURI); @@ -110,11 +111,9 @@ export class SupabaseStorageAdapter implements StorageAdapter { } } - async deleteFile( - uri: string, - options?: { filename?: string } - ): Promise { - await deleteIfExists(uri); + // eslint-disable-next-line @typescript-eslint/require-await + async deleteFile(uri: string, options?: { filename?: string }) { + deleteIfExists(uri); const { filename } = options ?? {}; if (!filename) { @@ -136,20 +135,23 @@ export class SupabaseStorageAdapter implements StorageAdapter { // console.debug('Deleted file from storage', data); } - fileExists(fileURI: string): Promise { + // eslint-disable-next-line @typescript-eslint/require-await + async fileExists(fileURI: string): Promise { return fileExists(fileURI); } - makeDir(uri: string): Promise { - return ensureDir(uri); + // eslint-disable-next-line @typescript-eslint/require-await + async makeDir(uri: string): Promise { + ensureDir(uri); } - copyFile(sourceUri: string, targetUri: string) { - return copyFile(sourceUri, targetUri); + // eslint-disable-next-line @typescript-eslint/require-await + async copyFile(sourceUri: string, targetUri: string): Promise { + copyFile(sourceUri, targetUri); } getUserStorageDirectory(): string { - return getDocumentDirectory() ?? ''; + return getDocumentDirectory(); } stringToArrayBuffer(str: string) { diff --git a/services/migrationBackupService.ts b/services/migrationBackupService.ts index 87a6c075e..8a39adce3 100644 --- a/services/migrationBackupService.ts +++ b/services/migrationBackupService.ts @@ -79,7 +79,7 @@ function getBackupDir(): string { */ function getDbPath(): string { const docDir = getDocumentDirectory() ?? ''; - return `${docDir}${DB_FILENAME}`; + return `${docDir}/${DB_FILENAME}`; } /** @@ -422,7 +422,7 @@ export async function restoreFromBackup( * Read directory contents (platform-specific) * Returns empty array on web since OPFS directory listing would require additional setup */ -async function readBackupDirectory(): Promise { +function readBackupDirectory(): string[] { if (Platform.OS === 'web') { // Web OPFS directory listing not implemented - return empty // This means cleanup/recovery functions won't work on web, @@ -433,16 +433,18 @@ async function readBackupDirectory(): Promise { return []; } - // Dynamic import for native platforms - const FileSystem = await import('expo-file-system'); + // Use the new expo-file-system API + const { Directory } = + require('expo-file-system') as typeof import('expo-file-system'); const backupDir = getBackupDir(); - const dirInfo = await FileSystem.getInfoAsync(backupDir); + const dir = new Directory(backupDir); - if (!dirInfo.exists) { + if (!dir.exists) { return []; } - return FileSystem.readDirectoryAsync(backupDir); + // dir.list() returns File and Directory instances, extract names + return dir.list().map((item) => item.name); } /** @@ -460,7 +462,7 @@ export async function cleanupOldBackups( console.log('[MigrationBackup] Cleaning up old backups...'); try { - const files = await readBackupDirectory(); + const files = readBackupDirectory(); if (files.length === 0) { console.log('[MigrationBackup] No backup files to clean'); @@ -496,7 +498,7 @@ export async function cleanupOldBackups( file.startsWith(LOCAL_STORE_BACKUP_PREFIX) ) { try { - await deleteIfExists(`${backupDir}${file}`); + deleteIfExists(`${backupDir}${file}`); deletedCount++; } catch (error) { console.warn( @@ -507,7 +509,7 @@ export async function cleanupOldBackups( } } - console.log(`[MigrationBackup] โœ“ Cleaned up ${deletedCount} old backup(s)`); + console.log(`[MigrationBackup] Cleaned up ${deletedCount} old backup(s)`); } catch (error) { console.warn('[MigrationBackup] Error cleaning up backups:', error); // Don't throw - cleanup failure shouldn't break the app @@ -547,7 +549,7 @@ export async function deleteBackup(backupInfo: BackupInfo): Promise { */ export async function hasValidBackup(): Promise { try { - const files = await readBackupDirectory(); + const files = readBackupDirectory(); if (files.length === 0) { return false; @@ -573,7 +575,7 @@ export async function hasValidBackup(): Promise { */ export async function getMostRecentBackup(): Promise { try { - const files = await readBackupDirectory(); + const files = readBackupDirectory(); if (files.length === 0) { return null; diff --git a/utils/backupUtils.ts b/utils/backupUtils.ts index 945a0e056..70683411e 100644 --- a/utils/backupUtils.ts +++ b/utils/backupUtils.ts @@ -8,8 +8,7 @@ import { import { AbstractSharedAttachmentQueue } from '@/db/powersync/AbstractSharedAttachmentQueue'; import type { System } from '@/db/powersync/system'; // Import System type import { eq, inArray, isNotNull } from 'drizzle-orm'; -import * as FileSystem from 'expo-file-system'; -import { StorageAccessFramework } from 'expo-file-system'; +import { Directory, File } from 'expo-file-system'; import { Platform } from 'react-native'; import { getDocumentDirectory, @@ -26,24 +25,28 @@ export async function requestBackupDirectory() { } try { - // Always request new permissions from the user + // Always request new permissions from the user via the new Directory picker console.log('Requesting directory permissions from user...'); - const permissions = - await StorageAccessFramework.requestDirectoryPermissionsAsync(); + const directory = await Directory.pickDirectoryAsync(); - if (permissions.granted && permissions.directoryUri) { - console.log('Directory permission granted:', permissions.directoryUri); + if (directory?.uri) { + console.log('Directory permission granted:', directory.uri); // We DO NOT save this to AsyncStorage anymore. // The user will be prompted each time. - return permissions.directoryUri; + return directory.uri; } else { console.log('Directory permission denied or URI missing.'); return null; // Permission denied or URI missing } } catch (dirError) { + // User cancelled or permission denied + const errorMessage = + dirError instanceof Error ? dirError.message : String(dirError); + if (errorMessage.includes('cancel') || errorMessage.includes('denied')) { + console.log('Directory picker cancelled by user.'); + return null; + } console.error('Error during directory permission request:', dirError); - // Optionally, inform the user with an Alert here - // RNAlert.alert('Error', 'Failed to get directory permissions.'); throw dirError; // Re-throw to be handled by the caller (e.g., backup/restore function) } } @@ -64,7 +67,7 @@ export function prepareBackupPaths(timestamp: string): { publishedDirName: `${mainBackupDirName}/published`, unpublishedDirName: `${mainBackupDirName}/unpublished`, csvFileName: `${mainBackupDirName}/asset_content_export.csv`, - dbSourceUri: (FileSystem.documentDirectory ?? '') + 'sqlite.db' + dbSourceUri: `${getDocumentDirectory() ?? ''}/sqlite.db` }; } @@ -111,60 +114,40 @@ function createCsvRow( // Helper to get all existing files across all backup directories recursively // This prevents duplicates across multiple backup runs -async function getAllExistingFiles( - baseDirectoryUri: string -): Promise> { +function getAllExistingFiles(baseDirectoryUri: string): Set { const existingFiles = new Set(); try { - // Read all entries in the base directory - const entries = - await StorageAccessFramework.readDirectoryAsync(baseDirectoryUri); + // Read all entries in the base directory using new Directory API + const baseDir = new Directory(baseDirectoryUri); + const entries = baseDir.list(); - for (const entryUri of entries) { + for (const entry of entries) { try { - const encoded = entryUri.split('/').pop()!; - const decodedSegment = decodeURIComponent(encoded); - const entryName = decodedSegment.includes('/') - ? decodedSegment.substring(decodedSegment.lastIndexOf('/') + 1) - : decodedSegment; + const entryName = entry.name; // Check if it's a backup directory (starts with "backup_") - if (entryName.startsWith('backup_')) { + if (entry instanceof Directory && entryName.startsWith('backup_')) { // Check published and unpublished subdirectories - const publishedPath = `${baseDirectoryUri}/${entryName}/published`; - const unpublishedPath = `${baseDirectoryUri}/${entryName}/unpublished`; - - try { - const publishedFiles = - await StorageAccessFramework.readDirectoryAsync(publishedPath); - for (const fileUri of publishedFiles) { - const fileEncoded = fileUri.split('/').pop()!; - const fileDecoded = decodeURIComponent(fileEncoded); - const fileName = fileDecoded.includes('/') - ? fileDecoded.substring(fileDecoded.lastIndexOf('/') + 1) - : fileDecoded; - existingFiles.add(fileName); + const collectFiles = (subDirName: string) => { + try { + const subDir = new Directory(entry.uri, subDirName); + if (subDir.exists) { + const files = subDir.list(); + for (const file of files) { + if (file instanceof File) { + existingFiles.add(file.name); + } + } + } + } catch { + // Directory might not exist, ignore } - } catch { - // Directory might not exist, ignore - } + }; - try { - const unpublishedFiles = - await StorageAccessFramework.readDirectoryAsync(unpublishedPath); - for (const fileUri of unpublishedFiles) { - const fileEncoded = fileUri.split('/').pop()!; - const fileDecoded = decodeURIComponent(fileEncoded); - const fileName = fileDecoded.includes('/') - ? fileDecoded.substring(fileDecoded.lastIndexOf('/') + 1) - : fileDecoded; - existingFiles.add(fileName); - } - } catch { - // Directory might not exist, ignore - } + collectFiles('published'); + collectFiles('unpublished'); } - } catch (error) { + } catch { // Skip entries that can't be read continue; } @@ -205,7 +188,7 @@ export async function backupUnsyncedAudio( ); // Get all existing files across all backup directories to avoid duplicates - const allExistingFiles = await getAllExistingFiles(baseDirectoryUri); + const allExistingFiles = getAllExistingFiles(baseDirectoryUri); // Query all asset_content_link records with audio // Include source asset information to show translation relationships @@ -357,14 +340,12 @@ export async function backupUnsyncedAudio( sourceUri = await getLocalAttachmentUriWithOPFS(audioId); } else { // Synced file: directly in shared_attachments - sourceUri = `${getDocumentDirectory()}${AbstractSharedAttachmentQueue.SHARED_DIRECTORY}/${cleanAudioId}`; + sourceUri = `${getDocumentDirectory()}/${AbstractSharedAttachmentQueue.SHARED_DIRECTORY}/${cleanAudioId}`; } try { - const fileInfo = await FileSystem.getInfoAsync(sourceUri, { - size: true - }); - if (!fileInfo.exists) { + const sourceFile = new File(sourceUri); + if (!sourceFile.exists) { console.warn( `[backupUnsyncedAudio] Source file not found: ${sourceUri}` ); @@ -396,27 +377,13 @@ export async function backupUnsyncedAudio( // Use proper mime type const mimeType = extension === 'm4a' ? 'audio/mp4' : 'audio/aac'; - // Create file in target folder - const backupFileUri = await StorageAccessFramework.createFileAsync( - targetFolder, - backupFileName, - mimeType - ); + // Create file in target folder using new Directory API + const targetDir = new Directory(targetFolder); + const backupFile = targetDir.createFile(backupFileName, mimeType); - // Read and write file - const fileContentBase64 = await FileSystem.readAsStringAsync( - sourceUri, - { - encoding: FileSystem.EncodingType.Base64 - } - ); - await FileSystem.writeAsStringAsync( - backupFileUri, - fileContentBase64, - { - encoding: FileSystem.EncodingType.Base64 - } - ); + // Read source as base64 and write to backup file + const fileContentBase64 = await sourceFile.base64(); + backupFile.write(fileContentBase64, { encoding: 'base64' }); // Track in existing files set to prevent duplicates allExistingFiles.add(backupFileName); @@ -442,31 +409,26 @@ export async function backupUnsyncedAudio( // Check if CSV already exists by looking for any CSV file in backup directories const existingCsvRows = new Set(); try { - const entries = - await StorageAccessFramework.readDirectoryAsync(baseDirectoryUri); - for (const entryUri of entries) { + const baseDir = new Directory(baseDirectoryUri); + const entries = baseDir.list(); + for (const entry of entries) { try { - const encoded = entryUri.split('/').pop()!; - const decodedSegment = decodeURIComponent(encoded); - const entryName = decodedSegment.includes('/') - ? decodedSegment.substring(decodedSegment.lastIndexOf('/') + 1) - : decodedSegment; + const entryName = entry.name; // Check if it's a backup directory - if (entryName.startsWith('backup_')) { + if (entry instanceof Directory && entryName.startsWith('backup_')) { // Look for CSV file inside this backup directory - const csvFileName = `${entryName}/asset_content_export.csv`; try { - const csvPath = `${baseDirectoryUri}/${csvFileName}`; - const csvContent = await FileSystem.readAsStringAsync(csvPath, { - encoding: FileSystem.EncodingType.UTF8 - }); - // Parse CSV and collect all data rows (skip header) - const lines = csvContent.split('\n'); - for (let i = 1; i < lines.length; i++) { - const line = lines[i]?.trim(); - if (line) { - existingCsvRows.add(line); + const csvFile = new File(entry.uri, 'asset_content_export.csv'); + if (csvFile.exists) { + const csvContent = await csvFile.text(); + // Parse CSV and collect all data rows (skip header) + const lines = csvContent.split('\n'); + for (let i = 1; i < lines.length; i++) { + const line = lines[i]?.trim(); + if (line) { + existingCsvRows.add(line); + } } } } catch { @@ -489,14 +451,9 @@ export async function backupUnsyncedAudio( }); const csvContent = newRows.join('\n'); - const csvUri = await StorageAccessFramework.createFileAsync( - baseDirectoryUri, - paths.csvFileName, - 'text/csv' - ); - await FileSystem.writeAsStringAsync(csvUri, csvContent, { - encoding: FileSystem.EncodingType.UTF8 - }); + const csvBaseDir = new Directory(baseDirectoryUri); + const csvFile = csvBaseDir.createFile(paths.csvFileName, 'text/csv'); + csvFile.write(csvContent); console.log( `[backupUnsyncedAudio] CSV exported with ${newRows.length} rows (${newRows.length - 1} new data rows)` ); @@ -510,19 +467,15 @@ export async function backupUnsyncedAudio( // Backup database if it exists try { const dbSourceUri = paths.dbSourceUri; - const dbInfo = await FileSystem.getInfoAsync(dbSourceUri); - if (dbInfo.exists) { - const dbBackupUri = await StorageAccessFramework.createFileAsync( - baseDirectoryUri, + const dbSourceFile = new File(dbSourceUri); + if (dbSourceFile.exists) { + const dbBackupDir = new Directory(baseDirectoryUri); + const dbBackupFile = dbBackupDir.createFile( paths.dbFullPathName, 'application/x-sqlite3' ); - const dbContent = await FileSystem.readAsStringAsync(dbSourceUri, { - encoding: FileSystem.EncodingType.Base64 - }); - await FileSystem.writeAsStringAsync(dbBackupUri, dbContent, { - encoding: FileSystem.EncodingType.Base64 - }); + const dbContent = await dbSourceFile.base64(); + dbBackupFile.write(dbContent, { encoding: 'base64' }); console.log('[backupUnsyncedAudio] Database backed up successfully'); } } catch (error) { diff --git a/utils/fileUtils.ts b/utils/fileUtils.ts index 6c736a823..72f5f249f 100644 --- a/utils/fileUtils.ts +++ b/utils/fileUtils.ts @@ -1,6 +1,6 @@ import { AbstractSharedAttachmentQueue } from '@/db/powersync/AbstractSharedAttachmentQueue'; import { decode as decodeBase64 } from 'base64-arraybuffer'; -import * as FileSystem from 'expo-file-system'; +import { Directory, File, Paths } from 'expo-file-system'; import uuid from 'react-native-uuid'; /** @@ -51,40 +51,94 @@ export function getDirectory(uri: string) { /** * Delete a file if it exists. No-ops if uri is falsy or file is missing. */ -export async function deleteIfExists(uri: string | null | undefined) { - await FileSystem.deleteAsync(uri ?? '', { idempotent: true }); +export function deleteIfExists(uri: string | null | undefined) { + if (!uri) return; + try { + const file = new File(uri); + if (file.exists) { + file.delete(); + } + } catch { + // Idempotent - ignore errors (file may not exist or be a directory) + try { + const dir = new Directory(uri); + if (dir.exists) { + dir.delete(); + } + } catch { + // Silently ignore + } + } } -export async function getFileInfo(uri: string | null | undefined) { - return await FileSystem.getInfoAsync(uri ?? ''); +export function getFileInfo(uri: string | null | undefined) { + if (!uri) + return { exists: false as const, size: undefined, isDirectory: false }; + try { + const file = new File(uri); + if (file.exists) { + return { + exists: true as const, + size: file.size ?? undefined, + isDirectory: false, + uri + }; + } + const dir = new Directory(uri); + if (dir.exists) { + return { + exists: true as const, + size: dir.size ?? undefined, + isDirectory: true, + uri + }; + } + return { exists: false as const, size: undefined, isDirectory: false, uri }; + } catch { + return { exists: false as const, size: undefined, isDirectory: false, uri }; + } } /** * Check if a file exists at the given uri. */ -export async function fileExists(uri: string | null | undefined) { - const fileInfo = await getFileInfo(uri); - return fileInfo.exists; +export function fileExists(uri: string | null | undefined): boolean { + if (!uri) return false; + try { + const file = new File(uri); + return file.exists; + } catch { + return false; + } } -export async function ensureDir(uri: string) { - const directoryInfo = await FileSystem.getInfoAsync(uri); - if (!directoryInfo.exists || !directoryInfo.isDirectory) { - await FileSystem.makeDirectoryAsync(uri, { - intermediates: true - }); +export function ensureDir(uri: string) { + const dir = new Directory(uri); + if (!dir.exists) { + dir.create(); } } -export async function writeFile( +export function writeFile( fileURI: string, - base64Data: string, + data: string, options?: { encoding?: 'utf8' | 'base64' } ) { - const { encoding = FileSystem.EncodingType.UTF8 } = options ?? {}; + const { encoding = 'utf8' } = options ?? {}; const dir = getDirectory(fileURI); - await ensureDir(dir); - await FileSystem.writeAsStringAsync(fileURI, base64Data, { encoding }); + ensureDir(dir); + const file = new File(fileURI); + if (encoding === 'base64') { + // Decode base64 to bytes and write as binary + const binaryString = atob(data); + const bytes = new Uint8Array(binaryString.length); + for (let i = 0; i < binaryString.length; i++) { + bytes[i] = binaryString.charCodeAt(i); + } + file.write(bytes); + } else { + file.write(data); + } } /** @@ -124,48 +178,46 @@ export function normalizeFileUri(uri: string): string { return normalized; } -export async function moveFile(sourceUri: string, targetUri: string) { - // On iOS Simulator, FileSystem.moveAsync has a bug where it appends /.. to paths - // Workaround: Use copy + delete instead of move - // This is more reliable across platforms and avoids the simulator bug - +export function moveFile(sourceUri: string, targetUri: string) { // Normalize both URIs to ensure they're properly formatted const fromUri = normalizeFileUri(sourceUri); const toUri = normalizeFileUri(targetUri); + const sourceFile = new File(fromUri); + try { - // Try moveAsync first (faster on real devices) - await FileSystem.moveAsync({ from: fromUri, to: toUri }); + // Use the new File.move() API - handles move natively + sourceFile.move(new File(toUri)); } catch (error) { - // If moveAsync fails (e.g., iOS Simulator bug), fall back to copy + delete + // If move fails (e.g., iOS Simulator bug), fall back to copy + delete const errorMessage = error instanceof Error ? error.message : String(error); if (errorMessage.includes('/..') || errorMessage.includes('not writable')) { - console.log('โš ๏ธ moveAsync failed, using copy + delete fallback'); + console.log('moveAsync failed, using copy + delete fallback'); // Copy the file - await FileSystem.copyAsync({ from: fromUri, to: toUri }); - // Delete the source file - ensure URI is normalized before deletion - const deleteUri = normalizeFileUri(fromUri); + const src = new File(fromUri); + src.copy(new File(toUri)); + // Delete the source file try { - await FileSystem.deleteAsync(deleteUri, { idempotent: true }); + const toDelete = new File(normalizeFileUri(fromUri)); + if (toDelete.exists) { + toDelete.delete(); + } } catch (deleteError) { - // If deletion fails (common on iOS Simulator with temp files), log but don't fail - // Temp files will be cleaned up automatically by the OS + const deleteUri = normalizeFileUri(fromUri); const isTempFile = deleteUri.includes('/tmp/') || deleteUri.includes('/tmp'); if (isTempFile) { console.log( - `โš ๏ธ Failed to delete temp file (will be cleaned up automatically): ${deleteUri}` + `Failed to delete temp file (will be cleaned up automatically): ${deleteUri}` ); } else { - // For non-temp files, log the error but don't throw - file was already copied console.warn( - `โš ๏ธ Failed to delete source file after copy: ${deleteUri}`, + `Failed to delete source file after copy: ${deleteUri}`, deleteError ); } } } else { - // Re-throw if it's a different error throw error; } } @@ -175,32 +227,33 @@ export async function readFile( fileURI: string, _options?: { encoding?: 'utf8' | 'base64' } ) { - if (!(await fileExists(fileURI))) { + const file = new File(fileURI); + if (!file.exists) { throw new Error(`File does not exist: ${fileURI}`); } // For binary files (audio, images, etc.), always read as base64 // This prevents data corruption from UTF-8 conversion - const fileContent = await FileSystem.readAsStringAsync(fileURI, { - encoding: FileSystem.EncodingType.Base64 - }); + const fileContent = await file.base64(); // Convert base64 to ArrayBuffer properly return base64ToArrayBuffer(fileContent); } -export async function deleteFile(uri: string) { - if (await fileExists(uri)) { - await FileSystem.deleteAsync(uri); +export function deleteFile(uri: string) { + const file = new File(uri); + if (file.exists) { + file.delete(); } } -export async function copyFile(sourceUri: string, targetUri: string) { - await FileSystem.copyAsync({ from: sourceUri, to: targetUri }); +export function copyFile(sourceUri: string, targetUri: string) { + const source = new File(sourceUri); + source.copy(new File(targetUri)); } export function getDocumentDirectory() { - return FileSystem.documentDirectory; + return Paths.document.uri; } const encoder = new TextEncoder(); @@ -214,7 +267,12 @@ export function base64ToArrayBuffer(base64: string) { } export function getLocalUri(filePath: string) { - return `${getDocumentDirectory()}${filePath}`; + const docDir = getDocumentDirectory(); + // Ensure single slash between directory and file path + const normalizedPath = filePath.startsWith('/') + ? filePath.slice(1) + : filePath; + return `${docDir}/${normalizedPath}`; } export function getLocalFilePathSuffix(filename: string): string { @@ -247,7 +305,7 @@ export async function saveAudioLocally(uri: string) { const extension = cleanSourceUri.split('.').pop() || 'wav'; const newUri = `local/${uuid.v4()}.${extension}`; - console.log('๐Ÿ” Saving audio file locally:', cleanSourceUri, newUri); + console.log('Saving audio file locally:', cleanSourceUri, newUri); // Retry logic for file existence - iOS Simulator can have timing issues // where the file isn't immediately available after Swift writes it @@ -256,14 +314,14 @@ export async function saveAudioLocally(uri: string) { let fileExistsNow = false; for (let attempt = 0; attempt < maxRetries; attempt++) { - fileExistsNow = await fileExists(cleanSourceUri); + fileExistsNow = fileExists(cleanSourceUri); if (fileExistsNow) { break; } if (attempt < maxRetries - 1) { console.log( - `โณ File not found yet (attempt ${attempt + 1}/${maxRetries}), retrying in ${retryDelayMs}ms...` + `File not found yet (attempt ${attempt + 1}/${maxRetries}), retrying in ${retryDelayMs}ms...` ); await new Promise((resolve) => setTimeout(resolve, retryDelayMs)); } @@ -271,17 +329,17 @@ export async function saveAudioLocally(uri: string) { if (!fileExistsNow) { // Get file info for better error message - const fileInfo = await getFileInfo(cleanSourceUri); + const fileInfo = getFileInfo(cleanSourceUri); const errorMsg = `File does not exist after ${maxRetries} attempts: ${cleanSourceUri}. File info: ${JSON.stringify(fileInfo)}`; - console.error('โŒ', errorMsg); + console.error(errorMsg); throw new Error(errorMsg); } const newPath = getLocalAttachmentUri(newUri); - await ensureDir(getDirectory(newPath)); + ensureDir(getDirectory(newPath)); // Debug: Log the URIs before moving - console.log('๐Ÿ“ฆ Moving file:', { + console.log('Moving file:', { from: cleanSourceUri, to: newPath, fromLength: cleanSourceUri.length, @@ -289,19 +347,19 @@ export async function saveAudioLocally(uri: string) { }); try { - await moveFile(cleanSourceUri, newPath); + moveFile(cleanSourceUri, newPath); } catch (error) { // Enhanced error logging for debugging - console.error('โŒ moveFile error details:', { + console.error('moveFile error details:', { error, sourceUri: cleanSourceUri, targetUri: newPath, - sourceExists: await fileExists(cleanSourceUri), - targetExists: await fileExists(newPath) + sourceExists: fileExists(cleanSourceUri), + targetExists: fileExists(newPath) }); throw error; } - console.log('โœ… Audio file saved locally:', getLocalAttachmentUri(newUri)); + console.log('Audio file saved locally:', getLocalAttachmentUri(newUri)); return newUri; } diff --git a/utils/localAudioConcat.ts b/utils/localAudioConcat.ts index 06d0bee27..fac06d3f0 100644 --- a/utils/localAudioConcat.ts +++ b/utils/localAudioConcat.ts @@ -15,7 +15,7 @@ import { normalizeFileUri } from '@/utils/fileUtils'; import { and, asc, eq, inArray, isNotNull, isNull } from 'drizzle-orm'; -import * as FileSystem from 'expo-file-system'; +import { File, Paths } from 'expo-file-system'; import * as Sharing from 'expo-sharing'; import { Platform } from 'react-native'; @@ -551,7 +551,8 @@ export async function concatenateAndShareQuestAudio( if (isWav) { // Convert .wav to .m4a - const tempM4aPath = `${FileSystem.cacheDirectory}temp_${Date.now()}_${i}.m4a`; + const cacheUri = Paths.cache.uri; + const tempM4aPath = `${cacheUri}/temp_${Date.now()}_${i}.m4a`; const tempM4aNativePath = getNativePath(tempM4aPath); tempFiles.push(tempM4aPath); console.log(`Converting ${nativePath} to ${tempM4aNativePath}...`); @@ -713,7 +714,8 @@ export async function concatenateAndShareQuestAudio( if (parts.length === 0) parts.push('quest'); const outputFileName = `${parts.join('-')}-${dateStr}.m4a`; - const outputPath = `${FileSystem.cacheDirectory}${outputFileName}`; + const cacheDir = Paths.cache.uri; + const outputPath = `${cacheDir}/${outputFileName}`; const outputNativePath = getNativePath(outputPath); // Convert audio URIs to the format expected by concatAudioFiles @@ -739,7 +741,10 @@ export async function concatenateAndShareQuestAudio( // Clean up temporary converted files for (const tempFile of tempFiles) { try { - await FileSystem.deleteAsync(tempFile, { idempotent: true }); + const file = new File(tempFile); + if (file.exists) { + file.delete(); + } } catch (error) { console.warn(`Failed to delete temp file ${tempFile}:`, error); } diff --git a/utils/restoreUtils.ts b/utils/restoreUtils.ts index 1efd487c2..2992b50b7 100644 --- a/utils/restoreUtils.ts +++ b/utils/restoreUtils.ts @@ -1,6 +1,5 @@ import RNAlert from '@blazejkustra/react-native-alert'; -import * as FileSystem from 'expo-file-system'; -import { StorageAccessFramework } from 'expo-file-system'; +import { Directory, File, Paths } from 'expo-file-system'; import { Platform } from 'react-native'; // import * as SQLite from 'expo-sqlite/legacy'; // Removed SQLite import import type { System } from '@/db/powersync/system'; // actual System instance type @@ -140,9 +139,11 @@ async function restoreFromBackup( // let backupDb: SQLite.WebSQLDatabase | null = null; try { - // Read available files first - const fileUris = - await StorageAccessFramework.readDirectoryAsync(backupDirectoryUri); + // Read available files first using new Directory API + const backupDir = new Directory(backupDirectoryUri); + const dirEntries = backupDir.list(); + // Get file URIs for backward compatibility with rest of the function + const fileUris = dirEntries.map((entry) => entry.uri); console.log( `[restoreFromBackup] Files in backup directory: ${fileUris.join(', ')}` ); @@ -164,13 +165,13 @@ async function restoreFromBackup( if (options.restoreAudio) { // This will always be true now console.log('[restoreFromBackup] Starting audio file restore'); - const localAttachmentsDir = - (FileSystem.documentDirectory ?? '') + - `${AbstractSharedAttachmentQueue.SHARED_DIRECTORY}/`; // Target shared_attachments + const docDir = Paths.document.uri; + const localAttachmentsDir = `${docDir}/${AbstractSharedAttachmentQueue.SHARED_DIRECTORY}/`; // Target shared_attachments try { - await FileSystem.makeDirectoryAsync(localAttachmentsDir, { - intermediates: true - }); + const attachmentsDirectory = new Directory(localAttachmentsDir); + if (!attachmentsDirectory.exists) { + attachmentsDirectory.create({ intermediates: true }); + } } catch (e) { console.warn( '[restoreFromBackup] Failed to ensure attachments directory, may already exist:', @@ -184,13 +185,9 @@ async function restoreFromBackup( // Report initial progress callbacks?.onProgress?.(0, totalFiles); - for (const [index, fileUri] of fileUris.entries()) { - const encoded = fileUri.split('/').pop()!; - const decodedSegment = decodeURIComponent(encoded); - // Extract the actual filename after the last '/' if present - const fileName = decodedSegment.includes('/') - ? decodedSegment.substring(decodedSegment.lastIndexOf('/') + 1) - : decodedSegment; + for (const [index, entry] of dirEntries.entries()) { + const fileUri = entry.uri; + const fileName = entry.name; // 1. Extract Asset ID (first 36 chars, should be a UUID) if (fileName.length < 36 + 1 + 1 + 1) { @@ -308,16 +305,10 @@ async function restoreFromBackup( } const targetLanguageId = projectRecord.target_language_id; - const contentBase64 = await StorageAccessFramework.readAsStringAsync( - fileUri, - { - encoding: FileSystem.EncodingType.Base64 - } - ); - const tempFileUri = (FileSystem.cacheDirectory ?? '') + fileName; - await FileSystem.writeAsStringAsync(tempFileUri, contentBase64, { - encoding: FileSystem.EncodingType.Base64 - }); + const sourceFile = new File(fileUri); + const tempFile = new File(Paths.cache, fileName); + sourceFile.copy(tempFile); + const tempFileUri = tempFile.uri; // Ensure attachment queues are ready before saving audio await system.ensureAttachmentQueuesReady(); if (!system.permAttachmentQueue) { From bfd2d462092e7cbd1bd5b5db4c411efd9260d8f6 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 9 Feb 2026 16:25:03 -0600 Subject: [PATCH 027/143] replace expo-av with expo-audio --- app.config.ts | 1 + components/AudioPlayer.tsx | 10 +- components/AudioRecorder.tsx | 239 +++++++++++------- components/EnergyVADRecorder.tsx | 128 +++------- components/WalkieTalkieRecorder.tsx | 181 +++++++------ contexts/AudioContext.tsx | 142 ++++++----- hooks/useMicrophoneEnergy.ts | 11 +- package-lock.json | 13 + package.json | 1 + utils/recordingPool.ts | 199 --------------- views/new/BibleAssetsView.tsx | 64 ++--- views/new/NextGenAssetsView.tsx | 64 ++--- .../components/BibleRecordingView.tsx | 78 +++--- .../components/RecordingControls.tsx | 9 +- .../components/RecordingViewSimplified.tsx | 97 +++---- 15 files changed, 534 insertions(+), 703 deletions(-) delete mode 100644 utils/recordingPool.ts diff --git a/app.config.ts b/app.config.ts index 5a6bff38c..a43944ddb 100644 --- a/app.config.ts +++ b/app.config.ts @@ -110,6 +110,7 @@ export default ({ config }: ConfigContext): ExpoConfig => 'expo-router', // TODO: migrate existing localization to expo-localization 'expo-localization', + 'expo-audio', [ 'expo-splash-screen', { diff --git a/components/AudioPlayer.tsx b/components/AudioPlayer.tsx index 7119b3e77..0400b861a 100644 --- a/components/AudioPlayer.tsx +++ b/components/AudioPlayer.tsx @@ -3,7 +3,7 @@ import { useAudio } from '@/contexts/AudioContext'; import { useLocalization } from '@/hooks/useLocalization'; import { colors, fontSizes, spacing } from '@/styles/theme'; import { Ionicons } from '@expo/vector-icons'; -import { Audio } from 'expo-av'; +import { setAudioModeAsync } from 'expo-audio'; import React, { useEffect } from 'react'; import { ActivityIndicator, @@ -50,10 +50,10 @@ const AudioPlayer: React.FC = ({ useEffect(() => { const setupAudioMode = async () => { - await Audio.setAudioModeAsync({ - allowsRecordingIOS: false, - playsInSilentModeIOS: true, - staysActiveInBackground: true + await setAudioModeAsync({ + allowsRecording: false, + playsInSilentMode: true, + shouldPlayInBackground: true }); }; diff --git a/components/AudioRecorder.tsx b/components/AudioRecorder.tsx index dc3ec089b..8f55bd01c 100644 --- a/components/AudioRecorder.tsx +++ b/components/AudioRecorder.tsx @@ -5,12 +5,20 @@ import { Text } from '@/components/ui/text'; import { useAuth } from '@/contexts/AuthContext'; import { useLocalization } from '@/hooks/useLocalization'; import { deleteIfExists } from '@/utils/fileUtils'; -import type { AVPlaybackStatus } from 'expo-av'; -import { Audio } from 'expo-av'; -import type { RecordingOptions } from 'expo-av/build/Audio'; +import { + createAudioPlayer, + getRecordingPermissionsAsync, + RecordingPresets, + requestRecordingPermissionsAsync, + setAudioModeAsync, + useAudioRecorder, + useAudioRecorderState, + type AudioPlayer, + type RecordingOptions +} from 'expo-audio'; import type { LucideIcon } from 'lucide-react-native'; import { Check, Mic, Pause, Play } from 'lucide-react-native'; -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; import { Platform, Pressable, View } from 'react-native'; // Maximum file size in bytes (50MB) @@ -29,10 +37,8 @@ interface AudioRecorderProps { } function calculateMaxDuration(options: RecordingOptions) { - const platform = Platform.OS === 'ios' ? 'ios' : 'android'; - const platformSpecificOptions = options[platform]; - // Using the exact bit rates from RecordingOptionsPresets - const bitRate = platformSpecificOptions.bitRate ?? 128000; // bits per second + // expo-audio has bitRate at the top level + const bitRate = options.bitRate ?? 128000; // bits per second // Convert bit rate to bytes per second const bytesPerSecond = bitRate / 8; @@ -49,124 +55,156 @@ const AudioRecorder: React.FC = ({ }) => { const { currentUser } = useAuth(); const { t } = useLocalization(); - const [recording, setRecording] = useState(null); - const [sound, setSound] = useState(null); const [recordingUri, setRecordingUri] = useState(null); const [recordingDuration, setRecordingDuration] = useState(0); const [playbackPosition, setPlaybackPosition] = useState(0); - const [isRecording, setIsRecording] = useState(false); + const [isRecordingActive, setIsRecordingActive] = useState(false); const [isRecordingPaused, setIsRecordingPaused] = useState(false); const [isPlaying, setIsPlaying] = useState(false); const [showWarning, setShowWarning] = useState(false); - const [permissionResponse, requestPermission] = Audio.usePermissions(); + const [permissionGranted, setPermissionGranted] = useState( + null + ); const [quality, setQuality] = useState('HIGH_QUALITY'); - // Calculate max duration and warning threshold based on quality - const maxDuration = calculateMaxDuration( - Audio.RecordingOptionsPresets[quality]! + // Refs for playback + const playerRef = useRef(null); + const playerListenerRef = useRef<{ remove: () => void } | null>(null); + const positionIntervalRef = useRef | null>( + null ); + + // Ref for stopRecording to avoid stale closure in status listener + const stopRecordingRef = useRef<(() => Promise) | undefined>(undefined); + + // Calculate max duration and warning threshold based on quality + const maxDuration = calculateMaxDuration(RecordingPresets[quality]!); const warningThreshold = maxDuration * 0.85; // Warning at 85% of max duration + // Check permissions on mount + useEffect(() => { + void getRecordingPermissionsAsync().then(({ granted }) => + setPermissionGranted(granted) + ); + }, []); + + // Create recorder (no status listener -- use useAudioRecorderState for duration/metering) + const recorder = useAudioRecorder(RecordingPresets.HIGH_QUALITY); + + // Poll recording state for duration tracking + const recorderState = useAudioRecorderState(recorder, 100); + + // React to recorder state changes for duration tracking and auto-stop + useEffect(() => { + if (recorderState.isRecording) { + const duration = recorderState.durationMillis || 0; + setRecordingDuration(duration); + + // Check if we're approaching the limit + if (duration >= warningThreshold && !showWarning) { + setShowWarning(true); + } + + // Stop recording if we've reached the maximum duration + if (duration >= maxDuration) { + void stopRecordingRef.current?.(); + } + } + }, [recorderState, warningThreshold, showWarning, maxDuration]); + + const cleanupPlayer = useCallback(() => { + if (positionIntervalRef.current) { + clearInterval(positionIntervalRef.current); + positionIntervalRef.current = null; + } + if (playerListenerRef.current) { + playerListenerRef.current.remove(); + playerListenerRef.current = null; + } + if (playerRef.current) { + playerRef.current.pause(); + playerRef.current.release(); + playerRef.current = null; + } + }, []); + const stopRecording = useCallback(async () => { - if (!recording) return; + if (!recorder.isRecording) return; try { - await recording.stopAndUnloadAsync(); - await Audio.setAudioModeAsync({ - allowsRecordingIOS: false + await recorder.stop(); + await setAudioModeAsync({ + allowsRecording: false }); - const uri = recording.getURI(); + const uri = recorder.uri; if (recordingUri) { await deleteIfExists(recordingUri); console.log('Deleted previous recording attempt', recordingUri); } console.log('Recording stopped and stored at', uri); setRecordingUri(uri ?? null); - setRecording(null); - setIsRecording(false); + setIsRecordingActive(false); setIsRecordingPaused(false); if (uri) onRecordingComplete(uri); } catch (error) { console.error('Failed to stop recording:', error); } - }, [recording, recordingUri, onRecordingComplete]); + }, [recorder, recordingUri, onRecordingComplete]); + // Keep ref up to date for status listener + stopRecordingRef.current = stopRecording; + + // Cleanup on unmount useEffect(() => { return () => { - const cleanup = async () => { - if (sound?._loaded) { - await sound.stopAsync(); - await sound.unloadAsync(); - setSound(null); - setIsPlaying(false); - } - if (!recording?._isDoneRecording) await stopRecording(); - }; - void cleanup(); + cleanupPlayer(); + // Recorder cleanup is handled by useAudioRecorder hook }; - }, [recording, sound, stopRecording]); + }, [cleanupPlayer]); const startRecording = async () => { try { if (!currentUser) return; - if (permissionResponse?.status !== Audio.PermissionStatus.GRANTED) { + if (!permissionGranted) { console.log('Requesting permission..'); - await requestPermission(); + const { granted } = await requestRecordingPermissionsAsync(); + setPermissionGranted(granted); + if (!granted) return; } resetRecording?.(); - await Audio.setAudioModeAsync({ - allowsRecordingIOS: true, - playsInSilentModeIOS: true + await setAudioModeAsync({ + allowsRecording: true, + playsInSilentMode: true }); - // resume recording if it paused - if (recording) { - await recording.startAsync(); - setIsRecording(true); + // Resume recording if it was paused + if (isRecordingPaused) { + recorder.record(); + setIsRecordingActive(true); setIsRecordingPaused(false); return; } console.log('recording'); - const activeRecording = ( - await Audio.Recording.createAsync( - Audio.RecordingOptionsPresets[quality] - ) - ).recording; + // Prepare and start a new recording with the selected quality + await recorder.prepareToRecordAsync(RecordingPresets[quality]); + recorder.record(); - setRecording(activeRecording); - setIsRecording(true); + setIsRecordingActive(true); setIsRecordingPaused(false); setShowWarning(false); - // Start monitoring recording status - activeRecording.setOnRecordingStatusUpdate((status) => { - if (status.isRecording) { - const duration = status.durationMillis || 0; - setRecordingDuration(duration); - - // Check if we're approaching the limit - if (duration >= warningThreshold && !showWarning) { - setShowWarning(true); - } - - // Stop recording if we've reached the maximum duration - if (duration >= maxDuration) { - void stopRecording(); - } - } - }); } catch (error) { console.error('Failed to start recording:', error); } }; const pauseRecording = async () => { - if (!recording) return; - await recording.pauseAsync(); - setIsRecording(false); + if (!recorder.isRecording) return; + recorder.pause(); + setIsRecordingActive(false); setIsRecordingPaused(true); }; @@ -174,18 +212,41 @@ const AudioRecorder: React.FC = ({ if (!recordingUri) return; try { - if (sound) { - // If sound exists, just replay it from the beginning - if (playbackPosition === 0) await sound.setPositionAsync(0); - await sound.playAsync(); + if (playerRef.current) { + // If player exists, just replay it + if (playbackPosition === 0) playerRef.current.seekTo(0); + playerRef.current.play(); } else { - // Only create a new sound if one doesn't exist yet - const { sound: newSound } = await Audio.Sound.createAsync( - { uri: recordingUri }, - { shouldPlay: true }, - onPlaybackStatusUpdate + // Create a new player + await setAudioModeAsync({ + allowsRecording: false, + playsInSilentMode: true + }); + + const player = createAudioPlayer(recordingUri); + playerRef.current = player; + player.play(); + + // Listen for playback end + playerListenerRef.current = player.addListener( + 'playbackStatusUpdate', + (status) => { + if (!status.didJustFinish) return; + setIsPlaying(false); + setPlaybackPosition(0); + if (positionIntervalRef.current) { + clearInterval(positionIntervalRef.current); + positionIntervalRef.current = null; + } + } ); - setSound(newSound); + + // Track position + positionIntervalRef.current = setInterval(() => { + if (playerRef.current?.isLoaded) { + setPlaybackPosition(playerRef.current.currentTime * 1000); + } + }, 100); } setIsPlaying(true); @@ -195,26 +256,16 @@ const AudioRecorder: React.FC = ({ }; const pausePlayback = async () => { - if (!sound) return; + if (!playerRef.current) return; try { - await sound.pauseAsync(); + playerRef.current.pause(); setIsPlaying(false); } catch (error) { console.error('Failed to pause playback:', error); } }; - const onPlaybackStatusUpdate = (status: AVPlaybackStatus) => { - if (status.isLoaded) { - setPlaybackPosition(status.positionMillis); - if (status.didJustFinish) { - setIsPlaying(false); - setPlaybackPosition(0); - } - } - }; - const formatTime = (milliseconds: number): string => { const totalSeconds = Math.floor(milliseconds / 1000); const hours = Math.floor(totalSeconds / 3600); @@ -237,7 +288,7 @@ const AudioRecorder: React.FC = ({ }; const getButtonConfig = (): [ButtonConfig, ButtonConfig] => { - if (isRecording || isRecordingPaused) { + if (isRecordingActive || isRecordingPaused) { return [ { icon: isRecordingPaused ? Mic : Pause, @@ -271,7 +322,7 @@ const AudioRecorder: React.FC = ({ { icon: Check, onPress: undefined, - disabled: !recording + disabled: !isRecordingActive } ]; }; diff --git a/components/EnergyVADRecorder.tsx b/components/EnergyVADRecorder.tsx index f7165df9c..db11ae945 100644 --- a/components/EnergyVADRecorder.tsx +++ b/components/EnergyVADRecorder.tsx @@ -1,15 +1,15 @@ import { Ionicons } from '@expo/vector-icons'; -import { Audio } from 'expo-av'; +import { + RecordingPresets, + setAudioModeAsync, + useAudioRecorder +} from 'expo-audio'; import React, { useCallback, useEffect, useRef, useState } from 'react'; import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; import RNAlert from '@blazejkustra/react-native-alert'; import { useMicrophoneEnergy } from '../hooks/useMicrophoneEnergy'; import { colors, fontSizes, spacing } from '../styles/theme'; -// Global recording state to prevent multiple concurrent recordings -let globalRecordingInstance: Audio.Recording | null = null; -let globalRecordingInProgress = false; - interface EnergyVADRecorderProps { onRecordingComplete: (uri: string, segmentIndex: number) => void; energyThreshold?: number; @@ -25,7 +25,10 @@ const EnergyVADRecorder: React.FC = ({ const [currentEnergy, setCurrentEnergy] = useState(0); const [threshold, setThreshold] = useState(energyThreshold); const [segmentCount, setSegmentCount] = useState(0); - const recordingRef = useRef(null); + // Guard against concurrent recording attempts + const isRecordingInProgressRef = useRef(false); + + const recorder = useAudioRecorder(RecordingPresets.HIGH_QUALITY); const { isActive, @@ -36,95 +39,53 @@ const EnergyVADRecorder: React.FC = ({ error } = useMicrophoneEnergy(); - // Initialize: Clean up any orphaned recording state on mount - useEffect(() => { - if (globalRecordingInstance && !isRecording) { - console.log('Cleaning up orphaned recording on mount'); - globalRecordingInstance.stopAndUnloadAsync().catch((_error) => { - console.log('Orphaned recording already cleaned up'); - }); - globalRecordingInstance = null; - globalRecordingInProgress = false; - } - }, [isRecording]); // Run only on mount - const startRecording = useCallback(async () => { try { - // Prevent starting if already recording globally or locally - if ( - globalRecordingInProgress || - isRecording || - recordingRef.current || - globalRecordingInstance - ) { - console.log('Recording already in progress (global or local)'); + // Prevent starting if already recording + if (isRecordingInProgressRef.current || isRecording) { + console.log('Recording already in progress'); return; } - console.log('Starting expo-av recording (energy-triggered)...'); - globalRecordingInProgress = true; + console.log('Starting recording (energy-triggered)...'); + isRecordingInProgressRef.current = true; // Small delay to ensure any previous recording is fully cleaned up await new Promise((resolve) => setTimeout(resolve, 50)); - await Audio.setAudioModeAsync({ - allowsRecordingIOS: true, - playsInSilentModeIOS: true + await setAudioModeAsync({ + allowsRecording: true, + playsInSilentMode: true }); - const { recording } = await Audio.Recording.createAsync( - Audio.RecordingOptionsPresets.HIGH_QUALITY - ); + await recorder.prepareToRecordAsync(RecordingPresets.HIGH_QUALITY); + recorder.record(); - globalRecordingInstance = recording; - recordingRef.current = recording; setIsRecording(true); - globalRecordingInProgress = false; + isRecordingInProgressRef.current = false; } catch (error) { console.error('Failed to start recording:', error); - // Clean up all state on error - globalRecordingInstance = null; - recordingRef.current = null; setIsRecording(false); - globalRecordingInProgress = false; + isRecordingInProgressRef.current = false; } - }, [isRecording]); + }, [isRecording, recorder]); const stopRecording = useCallback(async () => { try { - console.log('Stopping expo-av recording...'); - - const recordingToStop = recordingRef.current || globalRecordingInstance; + console.log('Stopping recording...'); - if (!recordingToStop || !isRecording) { + if (!isRecording) { console.log('No active recording to stop'); - // Clean up all state - globalRecordingInstance = null; - recordingRef.current = null; setIsRecording(false); - globalRecordingInProgress = false; + isRecordingInProgressRef.current = false; return; } - // Check if recording is actually in progress - const status = await recordingToStop.getStatusAsync(); - if (!status.isRecording) { - console.log('Recording is not active, cleaning up reference'); - globalRecordingInstance = null; - recordingRef.current = null; - setIsRecording(false); - globalRecordingInProgress = false; - return; - } - - await recordingToStop.stopAndUnloadAsync(); - const uri = recordingToStop.getURI(); + await recorder.stop(); + const uri = recorder.uri; - // Clean up all references - globalRecordingInstance = null; - recordingRef.current = null; setIsRecording(false); - globalRecordingInProgress = false; + isRecordingInProgressRef.current = false; if (uri) { const currentSegment = segmentCount; @@ -137,13 +98,10 @@ const EnergyVADRecorder: React.FC = ({ } } catch (error) { console.error('Failed to stop recording:', error); - // Clean up all state even if stopping failed - globalRecordingInstance = null; - recordingRef.current = null; setIsRecording(false); - globalRecordingInProgress = false; + isRecordingInProgressRef.current = false; } - }, [onRecordingComplete, isRecording, segmentCount]); + }, [onRecordingComplete, isRecording, segmentCount, recorder]); // Handle energy levels and control recording useEffect(() => { @@ -178,9 +136,7 @@ const EnergyVADRecorder: React.FC = ({ } await stopEnergyDetection(); - // Clean up global state when stopping energy detection - globalRecordingInstance = null; - globalRecordingInProgress = false; + isRecordingInProgressRef.current = false; setSegmentCount(0); // Reset segment count when stopping detection } else { await startEnergyDetection(); @@ -188,11 +144,8 @@ const EnergyVADRecorder: React.FC = ({ } catch (error) { RNAlert.alert('Error', 'Failed to toggle energy detection'); console.error('Energy detection toggle error:', error); - // Clean up state on error - globalRecordingInstance = null; - recordingRef.current = null; setIsRecording(false); - globalRecordingInProgress = false; + isRecordingInProgressRef.current = false; } }, [ isActive, @@ -202,23 +155,10 @@ const EnergyVADRecorder: React.FC = ({ startEnergyDetection ]); - // Cleanup on unmount + // Cleanup on unmount (recorder lifecycle handled by useAudioRecorder hook) useEffect(() => { return () => { - // Clean up recording if it exists (check both local and global) - const recordingToCleanup = - recordingRef.current || globalRecordingInstance; - if (recordingToCleanup) { - recordingToCleanup.stopAndUnloadAsync().catch((_error) => { - console.log('Cleanup: Recording already stopped or released'); - }); - } - - // Reset all recording state - globalRecordingInstance = null; - recordingRef.current = null; - setIsRecording(false); - globalRecordingInProgress = false; + isRecordingInProgressRef.current = false; }; }, []); diff --git a/components/WalkieTalkieRecorder.tsx b/components/WalkieTalkieRecorder.tsx index c6628117a..58a3b96e7 100644 --- a/components/WalkieTalkieRecorder.tsx +++ b/components/WalkieTalkieRecorder.tsx @@ -2,7 +2,12 @@ import { useAuth } from '@/contexts/AuthContext'; import { useHaptic } from '@/hooks/useHaptic'; import { useLocalization } from '@/hooks/useLocalization'; import { cn } from '@/utils/styleUtils'; -import { Audio } from 'expo-av'; +import { + RecordingPresets, + setAudioModeAsync, + useAudioRecorder, + useAudioRecorderState +} from 'expo-audio'; import { MicIcon, Square } from 'lucide-react-native'; import React, { useEffect, useRef, useState } from 'react'; import { Pressable, View, useWindowDimensions } from 'react-native'; @@ -27,9 +32,10 @@ import { Text } from './ui/text'; const AnimatedView = Animated.View; -// Extend Recording type to include custom energy range tracking -interface RecordingWithEnergyRange extends Audio.Recording { - _energyRange?: { min: number; max: number }; +// Energy range tracking for a recording session +interface EnergyRange { + min: number; + max: number; } interface WalkieTalkieRecorderProps { @@ -79,7 +85,7 @@ const WalkieTalkieRecorder: React.FC = ({ const haptic = useHaptic('medium'); const { currentUser: _currentUser } = useAuth(); const { t } = useLocalization(); - const [recording, setRecording] = useState(null); + const [hasActiveRecording, setHasActiveRecording] = useState(false); const [recordingDuration, setRecordingDuration] = useState(0); // Permission check removed - handled by parent RecordingControls via canRecord prop const isActivatingRef = useRef(false); @@ -89,6 +95,58 @@ const WalkieTalkieRecorder: React.FC = ({ // Cancellation flag - set when user releases during async setup const shouldCancelRecordingRef = useRef(false); + // Energy range tracking for logging + const energyRangeRef = useRef({ min: Infinity, max: -Infinity }); + + // Audio recorder from expo-audio (manages lifecycle automatically) + const recorder = useAudioRecorder(RecordingPresets.HIGH_QUALITY); + + // Poll recording state for duration and metering data + const recorderState = useAudioRecorderState(recorder, 50); + + // Previous duration ref to avoid duplicate processing + const lastProcessedDurationRef = useRef(0); + + // React to recorder state changes for duration tracking and metering + useEffect(() => { + if (!recorderState.isRecording) return; + + const duration = recorderState.durationMillis || 0; + + // Skip if we already processed this duration (avoid duplicate work) + if (duration === lastProcessedDurationRef.current) return; + lastProcessedDurationRef.current = duration; + + setRecordingDuration(duration); + // Notify parent of duration updates for progress bar + onRecordingDurationUpdate?.(duration); + + let amplitude: number; + if (typeof recorderState.metering === 'number') { + const db = recorderState.metering; + const normalizedDb = Math.max(-60, Math.min(0, db)); + amplitude = Math.pow(10, normalizedDb / 20); + appendLiveSample(amplitude); + } else { + const t = duration / 1000; + const base = 0.3 + Math.sin(t * 24) * 0.15; + const noise = (Math.random() - 0.5) * 0.1; + amplitude = Math.max(0.02, Math.min(0.8, base + noise)); + appendLiveSample(amplitude); + } + + // Track energy range + energyRangeRef.current.min = Math.min( + energyRangeRef.current.min, + amplitude + ); + energyRangeRef.current.max = Math.max( + energyRangeRef.current.max, + amplitude + ); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [recorderState]); + // ============================================================================ // BUSY LOCK - Prevents race conditions during state transitions // ============================================================================ @@ -185,23 +243,18 @@ const WalkieTalkieRecorder: React.FC = ({ } }; - // Cleanup recording and timers on unmount + // Cleanup timers on unmount (recorder cleanup handled by useAudioRecorder hook) useEffect(() => { return () => { - const cleanup = async () => { - if (activationTimer.current) { - clearTimeout(activationTimer.current); - } - if (releaseDelayTimer.current) { - clearTimeout(releaseDelayTimer.current); - } - if (recording && !recording._isDoneRecording) { - await recording.stopAndUnloadAsync(); - } - }; - void cleanup(); + if (activationTimer.current) { + clearTimeout(activationTimer.current); + } + if (releaseDelayTimer.current) { + clearTimeout(releaseDelayTimer.current); + } + // Recorder cleanup is handled automatically by useAudioRecorder hook }; - }, [recording]); + }, []); // Pulse animation when recording useEffect(() => { @@ -249,18 +302,6 @@ const WalkieTalkieRecorder: React.FC = ({ requestAnimationFrame(() => resolve(undefined)) ); - const startTime = performance.now(); - - // Clean up any existing recording first - if (recording) { - try { - await recording.stopAndUnloadAsync(); - } catch { - // Ignore cleanup errors - } - setRecording(null); - } - setRecordedSamples([]); // Permission check removed - parent RecordingControls ensures canRecord=true @@ -269,18 +310,19 @@ const WalkieTalkieRecorder: React.FC = ({ // Reset cancellation flag at start shouldCancelRecordingRef.current = false; - // โœ… Notify parent IMMEDIATELY - we're in "recording mode" now + // Notify parent IMMEDIATELY - we're in "recording mode" now // This ensures isRecording is true synchronously, preventing race conditions // where user releases before async setup completes onRecordingStart(); // Heavy operations - but user already sees feedback - await Audio.setAudioModeAsync({ - allowsRecordingIOS: true, - playsInSilentModeIOS: true + await setAudioModeAsync({ + allowsRecording: true, + playsInSilentMode: true }); - const highQuality = Audio.RecordingOptionsPresets.HIGH_QUALITY; + // Prepare and start recording with metering-enabled options + const highQuality = RecordingPresets.HIGH_QUALITY; const options = { ...highQuality, ios: { @@ -291,59 +333,24 @@ const WalkieTalkieRecorder: React.FC = ({ ...(highQuality?.android ?? {}), isMeteringEnabled: true } - } as typeof highQuality; + }; - const result = await Audio.Recording.createAsync(options); - const activeRecording = result.recording; - activeRecording.setProgressUpdateInterval(9); + await recorder.prepareToRecordAsync(options); // Check if we were cancelled during async setup (user released early) // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (shouldCancelRecordingRef.current) { - await activeRecording.stopAndUnloadAsync(); shouldCancelRecordingRef.current = false; return; } - const _duration = performance.now() - startTime; + recorder.record(); - setRecording(activeRecording); + setHasActiveRecording(true); setRecordingDuration(0); - // Track energy range for logging - const energyRange = { min: Infinity, max: -Infinity }; - - // Set up status monitoring - activeRecording.setOnRecordingStatusUpdate((status) => { - if (status.isRecording) { - const duration = status.durationMillis || 0; - setRecordingDuration(duration); - // Notify parent of duration updates for progress bar - onRecordingDurationUpdate?.(duration); - - const anyStatus = status as unknown as { metering?: number }; - let amplitude: number; - if (typeof anyStatus.metering === 'number') { - const db = anyStatus.metering; - const normalizedDb = Math.max(-60, Math.min(0, db)); - amplitude = Math.pow(10, normalizedDb / 20); - appendLiveSample(amplitude); - } else { - const t = duration / 1000; - const base = 0.3 + Math.sin(t * 24) * 0.15; - const noise = (Math.random() - 0.5) * 0.1; - amplitude = Math.max(0.02, Math.min(0.8, base + noise)); - appendLiveSample(amplitude); - } - - // Track energy range - energyRange.min = Math.min(energyRange.min, amplitude); - energyRange.max = Math.max(energyRange.max, amplitude); - } - }); - - // Store energy range ref for logging on stop - (activeRecording as RecordingWithEnergyRange)._energyRange = energyRange; + // Reset energy range for this recording + energyRangeRef.current = { min: Infinity, max: -Infinity }; } catch (error) { console.error('โŒ Failed to start recording:', error); onRecordingStop(); // Clean up @@ -351,8 +358,8 @@ const WalkieTalkieRecorder: React.FC = ({ }; const stopRecording = async () => { - if (!recording) { - // Recording object not created yet (user released during async setup) + if (!hasActiveRecording) { + // Recording not started yet (user released during async setup) // Set cancellation flag so startRecording() knows to abort shouldCancelRecordingRef.current = true; onRecordingStop(); @@ -360,16 +367,8 @@ const WalkieTalkieRecorder: React.FC = ({ } try { - const status = await recording.getStatusAsync().catch(() => null); - if (!status) { - console.warn('โš ๏ธ Recording no longer exists, skipping stop'); - setRecording(null); - onRecordingStop(); - return; - } - - await recording.stopAndUnloadAsync(); - const uri = recording.getURI(); + await recorder.stop(); + const uri = recorder.uri; if (uri) { if (recordingDuration >= MIN_RECORDING_DURATION) { @@ -380,14 +379,14 @@ const WalkieTalkieRecorder: React.FC = ({ } } - setRecording(null); + setHasActiveRecording(false); setRecordingDuration(0); setRecordedSamples([]); onRecordingStop(); } catch (error) { console.error('Failed to stop recording:', error); - setRecording(null); + setHasActiveRecording(false); setRecordingDuration(0); setRecordedSamples([]); onRecordingStop(); diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index 75a6a3ce3..724c7363e 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -1,4 +1,8 @@ -import { Audio } from 'expo-av'; +import { + createAudioPlayer, + setAudioModeAsync, + type AudioPlayer +} from 'expo-audio'; import React, { createContext, useContext, useRef, useState } from 'react'; import type { SharedValue } from 'react-native-reanimated'; import { useFrameCallback, useSharedValue } from 'react-native-reanimated'; @@ -30,7 +34,8 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const durationShared = useSharedValue(0); const cumulativePositionShared = useSharedValue(0); // SharedValue for worklet access - const soundRef = useRef(null); + const playerRef = useRef(null); + const playerListenerRef = useRef<{ remove: () => void } | null>(null); const positionUpdateInterval = useRef | null>( null ); @@ -46,6 +51,27 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const cumulativePositionSharedRef = useRef(cumulativePositionShared); const isTrackingPositionRef = useRef(isTrackingPosition); + // Helper to wait for an AudioPlayer to finish loading + const waitForPlayerLoaded = (player: AudioPlayer): Promise => { + return new Promise((resolve) => { + if (player.isLoaded) { + resolve(); + return; + } + const check = setInterval(() => { + if (player.isLoaded) { + clearInterval(check); + resolve(); + } + }, 10); + // Safety timeout to avoid hanging forever + setTimeout(() => { + clearInterval(check); + resolve(); + }, 5000); + }); + }; + // Clear the position update interval const clearPositionInterval = () => { if (positionUpdateInterval.current) { @@ -60,19 +86,16 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { isTrackingPositionRef.current.value = true; positionUpdateInterval.current = setInterval(() => { - if (soundRef.current) { - void soundRef.current.getStatusAsync().then((status) => { - if (status.isLoaded) { - // Calculate cumulative position across all segments - let cumulativeDuration = 0; - for (let i = 0; i < currentSequenceIndex.current; i++) { - cumulativeDuration += segmentDurations.current[i] || 0; - } - const totalPosition = cumulativeDuration + status.positionMillis; - cumulativePositionSharedRef.current.value = totalPosition; // Update SharedValue - setPositionState(totalPosition); - } - }); + if (playerRef.current?.isLoaded) { + // Calculate cumulative position across all segments + let cumulativeDuration = 0; + for (let i = 0; i < currentSequenceIndex.current; i++) { + cumulativeDuration += segmentDurations.current[i] || 0; + } + const totalPosition = + cumulativeDuration + playerRef.current.currentTime * 1000; + cumulativePositionSharedRef.current.value = totalPosition; // Update SharedValue + setPositionState(totalPosition); } }, 100); // Update every 100ms for smoother animation }; @@ -104,10 +127,12 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // Update SharedValue via ref to satisfy React Compiler cumulativePositionSharedRef.current.value = 0; - if (soundRef.current) { - await soundRef.current.stopAsync(); - await soundRef.current.unloadAsync(); - soundRef.current = null; + if (playerRef.current) { + playerListenerRef.current?.remove(); + playerListenerRef.current = null; + playerRef.current.pause(); + playerRef.current.release(); + playerRef.current = null; } // Always reset state, even if soundRef.current is null @@ -123,8 +148,8 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { }; const setPosition = async (newPosition: number) => { - if (soundRef.current && isPlaying) { - await soundRef.current.setPositionAsync(newPosition); + if (playerRef.current && isPlaying) { + playerRef.current.seekTo(newPosition / 1000); // ms to seconds setPositionState(newPosition); // Update SharedValues via refs to satisfy React Compiler cumulativePositionSharedRef.current.value = newPosition; @@ -162,49 +187,48 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { audioId?: string, isSequencePart = false ) => { - // Stop current sound if any is playing (but preserve sequence state) - if (soundRef.current) { + // Stop current player if any is playing (but preserve sequence state) + if (playerRef.current) { clearPositionInterval(); // Store the duration of the previous segment if part of a sequence if (isSequencePart && currentSequenceIndex.current > 0) { - const prevStatus = await soundRef.current.getStatusAsync(); - if (prevStatus.isLoaded) { + if (playerRef.current.isLoaded) { segmentDurations.current[currentSequenceIndex.current - 1] = - prevStatus.durationMillis ?? 0; + playerRef.current.duration * 1000; } } - await soundRef.current.stopAsync(); - await soundRef.current.unloadAsync(); - soundRef.current = null; + playerListenerRef.current?.remove(); + playerListenerRef.current = null; + playerRef.current.pause(); + playerRef.current.release(); + playerRef.current = null; } // Set up audio mode - await Audio.setAudioModeAsync({ - allowsRecordingIOS: false, - playsInSilentModeIOS: true, - staysActiveInBackground: true + await setAudioModeAsync({ + allowsRecording: false, + playsInSilentMode: true, + shouldPlayInBackground: true }); // Load and play new sound try { - const { sound } = await Audio.Sound.createAsync( - { uri }, - { shouldPlay: true } - ); + const player = createAudioPlayer(uri); + player.play(); - soundRef.current = sound; + playerRef.current = player; setIsPlaying(true); if (audioId) { setCurrentAudioId(audioId); } - // Get initial status to set the duration - const status = await sound.getStatusAsync(); - if (status.isLoaded) { - const durationMs = status.durationMillis ?? 0; + // Wait for player to load to get duration + await waitForPlayerLoaded(player); + if (player.isLoaded) { + const durationMs = player.duration * 1000; // Store this segment's duration segmentDurations.current[currentSequenceIndex.current] = durationMs; @@ -221,17 +245,18 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // Start tracking position startPositionTracking(); - // Set up listener for when sound finishes playing - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) { - return; - } + // Set up listener for when playback finishes + playerListenerRef.current = player.addListener( + 'playbackStatusUpdate', + (status) => { + if (!status.didJustFinish) return; - if (status.didJustFinish) { clearPositionInterval(); isTrackingPositionRef.current.value = false; - void sound.unloadAsync(); - soundRef.current = null; + playerListenerRef.current?.remove(); + playerListenerRef.current = null; + player.release(); + playerRef.current = null; // Check if there are more sounds in the sequence if (sequenceQueue.current.length > 0) { @@ -245,7 +270,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { durationSharedRef.current.value = 0; } } - }); + ); } catch { setIsPlaying(false); setCurrentAudioId(null); @@ -271,12 +296,12 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { try { for (let index = 0; index < uris.length; index++) { const uri = uris[index]!; - const { sound } = await Audio.Sound.createAsync({ uri }); - const status = await sound.getStatusAsync(); - await sound.unloadAsync(); - if (status.isLoaded) { - segmentDurations.current[index] = status.durationMillis ?? 0; + const player = createAudioPlayer(uri); + await waitForPlayerLoaded(player); + if (player.isLoaded) { + segmentDurations.current[index] = player.duration * 1000; } + player.release(); } const totalDuration = segmentDurations.current.reduce( @@ -297,8 +322,9 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { React.useEffect(() => { return () => { clearPositionInterval(); - if (soundRef.current) { - void soundRef.current.unloadAsync(); + if (playerRef.current) { + playerListenerRef.current?.remove(); + playerRef.current.release(); } }; }, []); diff --git a/hooks/useMicrophoneEnergy.ts b/hooks/useMicrophoneEnergy.ts index f037c6fac..0de438e3f 100644 --- a/hooks/useMicrophoneEnergy.ts +++ b/hooks/useMicrophoneEnergy.ts @@ -1,4 +1,7 @@ -import { Audio } from 'expo-av'; +import { + getRecordingPermissionsAsync, + requestRecordingPermissionsAsync +} from 'expo-audio'; import { useCallback, useEffect, useRef, useState } from 'react'; import type { SharedValue } from 'react-native-reanimated'; import { useSharedValue } from 'react-native-reanimated'; @@ -84,8 +87,7 @@ export function useMicrophoneEnergy(): UseMicrophoneEnergy { const requestPermissions = useCallback(async (): Promise => { try { - // Use expo-av for all permission handling - const status = await Audio.requestPermissionsAsync(); + const status = await requestRecordingPermissionsAsync(); return status.granted; } catch (error) { setState((prev) => ({ @@ -104,8 +106,7 @@ export function useMicrophoneEnergy(): UseMicrophoneEnergy { } try { - // Check permissions first using expo-av - const permission = await Audio.getPermissionsAsync(); + const permission = await getRecordingPermissionsAsync(); if (!permission.granted) { const granted = await requestPermissions(); if (!granted) throw new Error('Microphone permissions required'); diff --git a/package-lock.json b/package-lock.json index cbae4a47d..cd9ef275f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,6 +56,7 @@ "eslint-plugin-drizzle": "^0.2.3", "expo": "^54.0.33", "expo-application": "~7.0.8", + "expo-audio": "~1.1.1", "expo-av": "~16.0.8", "expo-build-properties": "~1.0.10", "expo-clipboard": "^8.0.7", @@ -15456,6 +15457,18 @@ "dev": true, "license": "MIT" }, + "node_modules/expo-audio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-1.1.1.tgz", + "integrity": "sha512-CPCpJ+0AEHdzWROc0f00Zh6e+irLSl2ALos/LPvxEeIcJw1APfBa4DuHPkL4CQCWsVe7EnUjFpdwpqsEUWcP0g==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "expo-asset": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-av": { "version": "16.0.8", "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-16.0.8.tgz", diff --git a/package.json b/package.json index aeffe0b47..fcbfed2f9 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,7 @@ "eslint-plugin-drizzle": "^0.2.3", "expo": "^54.0.33", "expo-application": "~7.0.8", + "expo-audio": "~1.1.1", "expo-av": "~16.0.8", "expo-build-properties": "~1.0.10", "expo-clipboard": "^8.0.7", diff --git a/utils/recordingPool.ts b/utils/recordingPool.ts deleted file mode 100644 index e7eeff6cd..000000000 --- a/utils/recordingPool.ts +++ /dev/null @@ -1,199 +0,0 @@ -/** - * Recording Pool - Pre-warm recording objects for instant button response - * - * Problem: Creating Audio.Recording on button press takes 200-500ms - * Solution: Keep a pre-warmed recording ready, regenerate in background - * - * Impact: Button press โ†’ recording start: 300ms โ†’ <50ms - */ - -import { Audio } from 'expo-av'; - -class RecordingPoolManager { - private preparedRecording: Audio.Recording | null = null; - private isWarming = false; - private permissionsGranted = false; - private warmUpPromise: Promise | null = null; - - /** - * Pre-warm a recording object during idle time - * Call this on component mount or when user navigates to recording view - * - * Multiple calls are safe - they'll wait for existing warmup to complete - */ - async warmUp(): Promise { - // If already warming up, return the existing promise - if (this.warmUpPromise) { - return this.warmUpPromise; - } - - // Don't create multiple recordings simultaneously - if (this.preparedRecording) { - return; - } - - this.isWarming = true; - - // Create promise that all concurrent callers can wait on - this.warmUpPromise = this._warmUpInternal(); - - try { - await this.warmUpPromise; - } finally { - this.warmUpPromise = null; - } - } - - private async _warmUpInternal(): Promise { - try { - // Check permissions first - const permissionResponse = await Audio.getPermissionsAsync(); - - if (permissionResponse.status !== Audio.PermissionStatus.GRANTED) { - console.log('[RecordingPool] Permissions not granted, skipping warmup'); - this.isWarming = false; - return; - } - - this.permissionsGranted = true; - - // Set audio mode - await Audio.setAudioModeAsync({ - allowsRecordingIOS: true, - playsInSilentModeIOS: true - }); - - // Pre-create recording with high quality settings - const highQuality = Audio.RecordingOptionsPresets.HIGH_QUALITY; - const options = { - ...highQuality, - ios: { - ...(highQuality?.ios ?? {}), - isMeteringEnabled: true - }, - android: { - ...(highQuality?.android ?? {}), - isMeteringEnabled: true - } - } as typeof highQuality; - - const { recording } = await Audio.Recording.createAsync(options); - - this.preparedRecording = recording; - console.log('[RecordingPool] Recording pre-warmed and ready'); - } catch (error) { - console.error('[RecordingPool] Failed to warm up recording:', error); - } finally { - this.isWarming = false; - } - } - - /** - * Get a pre-warmed recording instantly (or create one if none ready) - * - * Note: Don't warm up the next recording yet! Wait until the current - * recording is actually started (via startAsync()) to avoid conflicts. - * Call warmUpNext() after starting the recording. - */ - async getRecording(): Promise { - // Fast path: pre-warmed recording is ready - if (this.preparedRecording) { - const recording = this.preparedRecording; - this.preparedRecording = null; - - // Don't warm up next recording yet - caller should do it after startAsync() - - return recording; - } - - // Slow path: no recording ready, create on demand - console.log( - '[RecordingPool] No recording ready, creating on demand (slower)' - ); - - // Ensure permissions - if (!this.permissionsGranted) { - const permissionResponse = await Audio.requestPermissionsAsync(); - if (permissionResponse.status !== Audio.PermissionStatus.GRANTED) { - throw new Error('Microphone permission denied'); - } - this.permissionsGranted = true; - } - - await Audio.setAudioModeAsync({ - allowsRecordingIOS: true, - playsInSilentModeIOS: true - }); - - const highQuality = Audio.RecordingOptionsPresets.HIGH_QUALITY; - const options = { - ...highQuality, - ios: { - ...(highQuality?.ios ?? {}), - isMeteringEnabled: true - }, - android: { - ...(highQuality?.android ?? {}), - isMeteringEnabled: true - } - } as typeof highQuality; - - const { recording } = await Audio.Recording.createAsync(options); - - // Don't warm up next one yet - caller should do it after startAsync() - - return recording; - } - - /** - * Warm up the next recording (call after starting the current one) - * Safe to call multiple times - will only warm up once - */ - warmUpNext(): void { - // Use setTimeout to defer warmup slightly after recording starts - setTimeout(() => { - void this.warmUp(); - }, 100); // Small delay ensures current recording is fully started - } - - /** - * Clean up any prepared recording (call on unmount) - */ - async cleanup(): Promise { - if (this.preparedRecording) { - try { - if (!this.preparedRecording._isDoneRecording) { - await this.preparedRecording.stopAndUnloadAsync(); - } - } catch (error) { - console.error('[RecordingPool] Cleanup error:', error); - } - this.preparedRecording = null; - } - } - - /** - * Request permissions explicitly (call early, like on app launch) - */ - async requestPermissions(): Promise { - try { - const permissionResponse = await Audio.requestPermissionsAsync(); - this.permissionsGranted = - permissionResponse.status === Audio.PermissionStatus.GRANTED; - return this.permissionsGranted; - } catch (error) { - console.error('[RecordingPool] Permission request error:', error); - return false; - } - } - - /** - * Check if a recording is ready to use - */ - isReady(): boolean { - return this.preparedRecording !== null && this.permissionsGranted; - } -} - -// Export singleton instance -export const recordingPool = new RecordingPoolManager(); diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index 16c9a31f2..d98a138ee 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -34,7 +34,7 @@ import { useLocalStore } from '@/store/localStore'; import { SHOW_DEV_ELEMENTS } from '@/utils/featureFlags'; import RNAlert from '@blazejkustra/react-native-alert'; import AsyncStorage from '@react-native-async-storage/async-storage'; -import { Audio } from 'expo-av'; +import { createAudioPlayer, type AudioPlayer } from 'expo-audio'; import { BookmarkPlusIcon, BrushCleaning, @@ -2735,7 +2735,7 @@ export default function BibleAssetsView() { // Ref to track if handlePlayAll is running (for cancellation and to avoid state conflicts) const isPlayAllRunningRef = React.useRef(false); // Ref to track current playing sound for immediate cancellation - const currentPlayAllSoundRef = React.useRef(null); + const currentPlayAllSoundRef = React.useRef(null); // Ref to hold latest audioContext for cleanup (avoids stale closure) const audioContextCurrentRef = React.useRef(audioContext); @@ -2785,8 +2785,8 @@ export default function BibleAssetsView() { // Stop current sound immediately if (currentPlayAllSoundRef.current) { try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); currentPlayAllSoundRef.current = null; } catch (error) { console.error('Error stopping sound:', error); @@ -2899,29 +2899,22 @@ export default function BibleAssetsView() { // Play this URI and wait for it to finish await new Promise((resolve) => { - // Create and play the sound - Audio.Sound.createAsync({ uri }, { shouldPlay: true }) - .then(({ sound }) => { - // Store reference for immediate cancellation - currentPlayAllSoundRef.current = sound; - - // Set up listener for when sound finishes - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) return; - - if (status.didJustFinish) { - currentPlayAllSoundRef.current = null; - void sound.unloadAsync().then(() => { - resolve(); - }); - } - }); - }) - .catch((error) => { - console.error('Failed to play audio:', error); + try { + const player = createAudioPlayer(uri); + currentPlayAllSoundRef.current = player; + player.play(); + + player.addListener('playbackStatusUpdate', (status) => { + if (!status.didJustFinish) return; currentPlayAllSoundRef.current = null; - resolve(); // Continue to next even on error + player.release(); + resolve(); }); + } catch (error) { + console.error('Failed to play audio:', error); + currentPlayAllSoundRef.current = null; + resolve(); // Continue to next even on error + } }); } } @@ -2953,8 +2946,8 @@ export default function BibleAssetsView() { // Stop current sound immediately if (currentPlayAllSoundRef.current) { try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); currentPlayAllSoundRef.current = null; } catch (error) { console.error('Error stopping sound:', error); @@ -2987,16 +2980,13 @@ export default function BibleAssetsView() { // Stop current sound immediately if (currentPlayAllSoundRef.current) { - void currentPlayAllSoundRef.current - .stopAsync() - .then(() => { - void currentPlayAllSoundRef.current?.unloadAsync(); - currentPlayAllSoundRef.current = null; - }) - .catch(() => { - // Ignore errors during cleanup - currentPlayAllSoundRef.current = null; - }); + try { + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); + } catch { + // Ignore errors during cleanup + } + currentPlayAllSoundRef.current = null; } } diff --git a/views/new/NextGenAssetsView.tsx b/views/new/NextGenAssetsView.tsx index 4990c432d..aabe298e6 100644 --- a/views/new/NextGenAssetsView.tsx +++ b/views/new/NextGenAssetsView.tsx @@ -29,7 +29,7 @@ import { useLocalStore } from '@/store/localStore'; import { SHOW_DEV_ELEMENTS } from '@/utils/featureFlags'; import RNAlert from '@blazejkustra/react-native-alert'; import { LegendList } from '@legendapp/list'; -import { Audio } from 'expo-av'; +import { createAudioPlayer, type AudioPlayer } from 'expo-audio'; import { ArrowBigDownDashIcon, CheckCheck, @@ -133,7 +133,7 @@ export default function NextGenAssetsView() { // New PlayAll state (starts from selected asset) const [isPlayAllRunning, setIsPlayAllRunning] = React.useState(false); const isPlayAllRunningRef = React.useRef(false); - const currentPlayAllSoundRef = React.useRef(null); + const currentPlayAllSoundRef = React.useRef(null); const timeoutIdsRef = React.useRef>>( new Set() ); @@ -833,8 +833,8 @@ export default function NextGenAssetsView() { // Stop current sound immediately if (currentPlayAllSoundRef.current) { try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); currentPlayAllSoundRef.current = null; } catch (error) { console.error('Error stopping sound:', error); @@ -938,29 +938,22 @@ export default function NextGenAssetsView() { // Play this URI and wait for it to finish await new Promise((resolve) => { - // Create and play the sound - Audio.Sound.createAsync({ uri }, { shouldPlay: true }) - .then(({ sound }) => { - // Store reference for immediate cancellation - currentPlayAllSoundRef.current = sound; - - // Set up listener for when sound finishes - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) return; - - if (status.didJustFinish) { - currentPlayAllSoundRef.current = null; - void sound.unloadAsync().then(() => { - resolve(); - }); - } - }); - }) - .catch((error) => { - console.error('Failed to play audio:', error); + try { + const player = createAudioPlayer(uri); + currentPlayAllSoundRef.current = player; + player.play(); + + player.addListener('playbackStatusUpdate', (status) => { + if (!status.didJustFinish) return; currentPlayAllSoundRef.current = null; - resolve(); // Continue to next even on error + player.release(); + resolve(); }); + } catch (error) { + console.error('Failed to play audio:', error); + currentPlayAllSoundRef.current = null; + resolve(); // Continue to next even on error + } }); } } @@ -1154,8 +1147,8 @@ export default function NextGenAssetsView() { // Stop current sound immediately if (currentPlayAllSoundRef.current) { try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); currentPlayAllSoundRef.current = null; } catch (error) { console.error('Error stopping sound:', error); @@ -1193,16 +1186,13 @@ export default function NextGenAssetsView() { // Stop current sound immediately if (currentPlayAllSoundRef.current) { - void currentPlayAllSoundRef.current - .stopAsync() - .then(() => { - void currentPlayAllSoundRef.current?.unloadAsync(); - currentPlayAllSoundRef.current = null; - }) - .catch(() => { - // Ignore errors during cleanup - currentPlayAllSoundRef.current = null; - }); + try { + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); + } catch { + // Ignore errors during cleanup + } + currentPlayAllSoundRef.current = null; } } diff --git a/views/new/recording/components/BibleRecordingView.tsx b/views/new/recording/components/BibleRecordingView.tsx index b515fdd42..85c0fa9d7 100644 --- a/views/new/recording/components/BibleRecordingView.tsx +++ b/views/new/recording/components/BibleRecordingView.tsx @@ -26,7 +26,7 @@ import { toCompilableQuery } from '@powersync/drizzle-driver'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { useQueryClient } from '@tanstack/react-query'; import { and, asc, eq } from 'drizzle-orm'; -import { Audio } from 'expo-av'; +import { createAudioPlayer, type AudioPlayer } from 'expo-audio'; import { ArrowDownNarrowWide, ArrowLeft, @@ -294,7 +294,7 @@ const BibleRecordingView = ({ // Ref to track if handlePlayAll is running (for cancellation) const isPlayAllRunningRef = React.useRef(false); // Ref to track current playing sound for immediate cancellation - const currentPlayAllSoundRef = React.useRef(null); + const currentPlayAllSoundRef = React.useRef(null); // Track setTimeout IDs for cleanup const timeoutIdsRef = React.useRef>>( @@ -1171,8 +1171,8 @@ const BibleRecordingView = ({ // Stop current sound immediately if (currentPlayAllSoundRef.current) { try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); currentPlayAllSoundRef.current = null; } catch (error) { console.error('Error stopping sound:', error); @@ -1255,26 +1255,22 @@ const BibleRecordingView = ({ // Play this URI and wait for it to finish await new Promise((resolve) => { - Audio.Sound.createAsync({ uri }, { shouldPlay: true }) - .then(({ sound }) => { - currentPlayAllSoundRef.current = sound; - - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) return; + try { + const player = createAudioPlayer(uri); + currentPlayAllSoundRef.current = player; + player.play(); - if (status.didJustFinish) { - currentPlayAllSoundRef.current = null; - void sound.unloadAsync().then(() => { - resolve(); - }); - } - }); - }) - .catch((error) => { - console.error('Failed to play audio:', error); + player.addListener('playbackStatusUpdate', (status) => { + if (!status.didJustFinish) return; currentPlayAllSoundRef.current = null; + player.release(); resolve(); }); + } catch (error) { + console.error('Failed to play audio:', error); + currentPlayAllSoundRef.current = null; + resolve(); + } }); } } @@ -1895,15 +1891,28 @@ const BibleRecordingView = ({ if (audioUri) { // Load audio file to get duration - const { sound } = await Audio.Sound.createAsync({ - uri: audioUri + const player = createAudioPlayer(audioUri); + await new Promise((resolve) => { + if (player.isLoaded) { + resolve(); + return; + } + const check = setInterval(() => { + if (player.isLoaded) { + clearInterval(check); + resolve(); + } + }, 10); + setTimeout(() => { + clearInterval(check); + resolve(); + }, 5000); }); - const status = await sound.getStatusAsync(); - await sound.unloadAsync(); - if (status.isLoaded && status.durationMillis) { - totalDuration += status.durationMillis; + if (player.isLoaded && player.duration > 0) { + totalDuration += player.duration * 1000; } + player.release(); } } catch (err) { // Skip this segment if we can't load it @@ -2349,16 +2358,13 @@ const BibleRecordingView = ({ // Stop current sound immediately if (currentPlayAllSoundRef.current) { - void currentPlayAllSoundRef.current - .stopAsync() - .then(() => { - void currentPlayAllSoundRef.current?.unloadAsync(); - currentPlayAllSoundRef.current = null; - }) - .catch(() => { - // Ignore errors during cleanup - currentPlayAllSoundRef.current = null; - }); + try { + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); + } catch { + // Ignore errors during cleanup + } + currentPlayAllSoundRef.current = null; } } diff --git a/views/new/recording/components/RecordingControls.tsx b/views/new/recording/components/RecordingControls.tsx index ca6745799..8648e95cf 100644 --- a/views/new/recording/components/RecordingControls.tsx +++ b/views/new/recording/components/RecordingControls.tsx @@ -17,7 +17,10 @@ import { TooltipTrigger } from '@/components/ui/tooltip'; import { useLocalization } from '@/hooks/useLocalization'; -import { Audio } from 'expo-av'; +import { + getRecordingPermissionsAsync, + requestRecordingPermissionsAsync +} from 'expo-audio'; import { CircleHelp, MicOffIcon, @@ -100,7 +103,7 @@ export const RecordingControls = React.memo( const checkPermission = async () => { try { - const permission = await Audio.getPermissionsAsync(); + const permission = await getRecordingPermissionsAsync(); if (!cancelled) { const wasGranted = permission.granted; setHasPermission(wasGranted); @@ -125,7 +128,7 @@ export const RecordingControls = React.memo( // Request permission handler const handleRequestPermission = async () => { try { - const permission = await Audio.requestPermissionsAsync(); + const permission = await requestRecordingPermissionsAsync(); const wasGranted = permission.granted; const wasPreviouslyDenied = previousPermissionRef.current === false; diff --git a/views/new/recording/components/RecordingViewSimplified.tsx b/views/new/recording/components/RecordingViewSimplified.tsx index 8be9aef87..e458039c1 100644 --- a/views/new/recording/components/RecordingViewSimplified.tsx +++ b/views/new/recording/components/RecordingViewSimplified.tsx @@ -31,7 +31,7 @@ import { LegendList } from '@legendapp/list'; import { toCompilableQuery } from '@powersync/drizzle-driver'; import { useQueryClient } from '@tanstack/react-query'; import { and, asc, eq, getTableColumns } from 'drizzle-orm'; -import { Audio } from 'expo-av'; +import { createAudioPlayer, type AudioPlayer } from 'expo-audio'; import { ArrowLeft, ListVideo, PauseIcon } from 'lucide-react-native'; import React from 'react'; import { InteractionManager, View } from 'react-native'; @@ -173,7 +173,7 @@ const RecordingViewSimplified = ({ // New PlayAll state (starts from insertionIndex) const [isPlayAllRunning, setIsPlayAllRunning] = React.useState(false); const isPlayAllRunningRef = React.useRef(false); - const currentPlayAllSoundRef = React.useRef(null); + const currentPlayAllSoundRef = React.useRef(null); // Ref to hold latest audioContext for cleanup (avoids stale closure) const audioContextCurrentRef = React.useRef(audioContext); @@ -724,8 +724,8 @@ const RecordingViewSimplified = ({ // Stop current sound immediately if (currentPlayAllSoundRef.current) { try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); currentPlayAllSoundRef.current = null; } catch (error) { console.error('Error stopping sound:', error); @@ -833,34 +833,32 @@ const RecordingViewSimplified = ({ // Play this URI and wait for it to finish await new Promise((resolve) => { - Audio.Sound.createAsync({ uri }, { shouldPlay: true }) - .then(({ sound }) => { - currentPlayAllSoundRef.current = sound; - - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) return; - - // Update progress for current asset - if (status.durationMillis) { - playAllProgress.value = - (status.positionMillis / status.durationMillis) * 100; - } + try { + const player = createAudioPlayer(uri); + currentPlayAllSoundRef.current = player; + player.play(); + + // Update progress via polling while playing + const progressInterval = setInterval(() => { + if (player.isLoaded && player.duration > 0) { + playAllProgress.value = + (player.currentTime / player.duration) * 100; + } + }, 100); - if (status.didJustFinish) { - // Mark as complete - playAllProgress.value = 100; - currentPlayAllSoundRef.current = null; - void sound.unloadAsync().then(() => { - resolve(); - }); - } - }); - }) - .catch((error) => { - console.error('Failed to play audio:', error); + player.addListener('playbackStatusUpdate', (status) => { + if (!status.didJustFinish) return; + clearInterval(progressInterval); + playAllProgress.value = 100; currentPlayAllSoundRef.current = null; + player.release(); resolve(); }); + } catch (error) { + console.error('Failed to play audio:', error); + currentPlayAllSoundRef.current = null; + resolve(); + } }); } } @@ -1371,15 +1369,29 @@ const RecordingViewSimplified = ({ if (audioUri) { // Load audio file to get duration - const { sound } = await Audio.Sound.createAsync({ - uri: audioUri + const player = createAudioPlayer(audioUri); + // Wait for player to load + await new Promise((resolve) => { + if (player.isLoaded) { + resolve(); + return; + } + const check = setInterval(() => { + if (player.isLoaded) { + clearInterval(check); + resolve(); + } + }, 10); + setTimeout(() => { + clearInterval(check); + resolve(); + }, 5000); }); - const status = await sound.getStatusAsync(); - await sound.unloadAsync(); - if (status.isLoaded && status.durationMillis) { - totalDuration += status.durationMillis; + if (player.isLoaded && player.duration > 0) { + totalDuration += player.duration * 1000; } + player.release(); } } catch (err) { // Skip this segment if we can't load it @@ -1775,16 +1787,13 @@ const RecordingViewSimplified = ({ // Stop current sound immediately if (currentPlayAllSoundRef.current) { - void currentPlayAllSoundRef.current - .stopAsync() - .then(() => { - void currentPlayAllSoundRef.current?.unloadAsync(); - currentPlayAllSoundRef.current = null; - }) - .catch(() => { - // Ignore errors during cleanup - currentPlayAllSoundRef.current = null; - }); + try { + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); + } catch { + // Ignore errors during cleanup + } + currentPlayAllSoundRef.current = null; } } From f44c04765d254dae66021acd04b789c419f48255 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 9 Feb 2026 20:17:05 -0600 Subject: [PATCH 028/143] expo 55 --- package-lock.json | 3744 +++++++++++++++++++++------------------------ package.json | 78 +- 2 files changed, 1825 insertions(+), 1997 deletions(-) diff --git a/package-lock.json b/package-lock.json index cd9ef275f..18bd1f6be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "@quidone/react-native-wheel-picker": "^1.6.1", "@react-native-async-storage/async-storage": "2.2.0", "@react-native-community/netinfo": "11.4.1", - "@react-native-community/slider": "5.0.1", + "@react-native-community/slider": "5.1.1", "@react-native-documents/picker": "^10.1.5", "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/native": "^7.1.6", @@ -52,33 +52,33 @@ "bidirectional-map": "^1.1.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "eslint-config-expo": "~10.0.0", + "eslint-config-expo": "~55.0.0", "eslint-plugin-drizzle": "^0.2.3", - "expo": "^54.0.33", - "expo-application": "~7.0.8", - "expo-audio": "~1.1.1", + "expo": "^55.0.0-preview.10", + "expo-application": "~55.0.5", + "expo-audio": "~55.0.5", "expo-av": "~16.0.8", - "expo-build-properties": "~1.0.10", - "expo-clipboard": "^8.0.7", - "expo-constants": "~18.0.13", - "expo-dev-client": "~6.0.20", - "expo-device": "~8.0.10", + "expo-build-properties": "~55.0.6", + "expo-clipboard": "~55.0.5", + "expo-constants": "~55.0.4", + "expo-dev-client": "~55.0.5", + "expo-device": "~55.0.6", "expo-drizzle-studio-plugin": "^0.2.0", - "expo-file-system": "~19.0.21", - "expo-font": "~14.0.11", - "expo-haptics": "^15.0.7", - "expo-image": "~3.0.11", - "expo-linear-gradient": "~15.0.8", - "expo-linking": "~8.0.11", - "expo-localization": "~17.0.8", - "expo-manifests": "~1.0.10", - "expo-router": "~6.0.23", - "expo-sharing": "^14.0.7", - "expo-splash-screen": "~31.0.13", - "expo-sqlite": "~16.0.10", - "expo-status-bar": "~3.0.9", - "expo-system-ui": "~6.0.9", - "expo-updates": "~29.0.16", + "expo-file-system": "~55.0.5", + "expo-font": "~55.0.3", + "expo-haptics": "~55.0.5", + "expo-image": "~55.0.3", + "expo-linear-gradient": "~55.0.5", + "expo-linking": "~55.0.4", + "expo-localization": "~55.0.5", + "expo-manifests": "~55.0.5", + "expo-router": "~55.0.0-preview.7", + "expo-sharing": "~55.0.6", + "expo-splash-screen": "~55.0.5", + "expo-sqlite": "~55.0.5", + "expo-status-bar": "~55.0.2", + "expo-system-ui": "~55.0.5", + "expo-updates": "~55.0.7", "js-logger": "^1.6.1", "lucide-react-native": "^0.510.0", "moti": "^0.30.0", @@ -86,23 +86,23 @@ "posthog-js": "^1.344.0", "posthog-react-native": "^4.31.0", "posthog-react-native-session-replay": "^1.2.4", - "react": "19.1.0", + "react": "19.2.0", "react-compiler-runtime": "^19.0.0-beta-af1b7da-20250417", - "react-dom": "19.1.0", + "react-dom": "19.2.0", "react-hook-form": "^7.54.2", - "react-native": "0.81.5", + "react-native": "0.83.1", "react-native-audio-concat": "^0.9.0", "react-native-element-dropdown": "2.12.2", - "react-native-gesture-handler": "~2.28.0", - "react-native-keyboard-controller": "1.18.5", + "react-native-gesture-handler": "~2.30.0", + "react-native-keyboard-controller": "1.20.4", "react-native-onboarding": "^1.0.6", - "react-native-pager-view": "6.9.1", + "react-native-pager-view": "8.0.0", "react-native-reanimated": "^4.2.1", "react-native-reorderable-list": "^0.18.0", "react-native-safe-area-context": "~5.6.0", - "react-native-screens": "~4.16.0", + "react-native-screens": "~4.22.0", "react-native-sortables": "^1.9.4", - "react-native-svg": "15.12.1", + "react-native-svg": "15.15.1", "react-native-url-polyfill": "^2.0.0", "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", @@ -127,10 +127,10 @@ "@types/default-gateway": "^7.2.2", "@types/jest": "^29.5.12", "@types/node": "^22.18.9", - "@types/react": "~19.1.10", + "@types/react": "~19.2.2", "@types/react-test-renderer": "^19.0.0", "babel-plugin-inline-import": "^3.0.0", - "babel-preset-expo": "^54.0.6", + "babel-preset-expo": "~55.0.0", "cross-env": "^10.1.0", "default-gateway": "^7.2.2", "dotenv": "^16.4.7", @@ -143,7 +143,7 @@ "eslint-plugin-react-hooks": "^7.0.1", "expo-atlas": "^0.4.0", "jest": "^29.2.1", - "jest-expo": "~54.0.17", + "jest-expo": "~55.0.6", "jiti": "^2.6.1", "knip": "^5.64.2", "metro-react-native-babel-transformer": "^0.77.0", @@ -161,24 +161,11 @@ "typescript-eslint": "^8.20.0" } }, - "node_modules/@0no-co/graphql.web": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.2.0.tgz", - "integrity": "sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==", - "license": "MIT", - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - }, - "peerDependenciesMeta": { - "graphql": { - "optional": true - } - } - }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -328,9 +315,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz", - "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.0", @@ -2554,6 +2541,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, "license": "MIT" }, "node_modules/@blazejkustra/react-native-alert": { @@ -2573,7 +2561,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -2586,7 +2574,7 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -3722,6 +3710,12 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@expo-google-fonts/material-symbols": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/@expo-google-fonts/material-symbols/-/material-symbols-0.4.20.tgz", + "integrity": "sha512-6zdkqYjWcjUuM+CCaZG1Zf3ptia0vI0wAHrN3OwPUhINtY+aDWKS2LfF+xsT54RQhRP1Sn/ocMKwoKjcZWyfLQ==", + "license": "MIT AND Apache-2.0" + }, "node_modules/@expo-google-fonts/noto-sans": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@expo-google-fonts/noto-sans/-/noto-sans-0.4.2.tgz", @@ -3729,32 +3723,31 @@ "license": "MIT AND OFL-1.1" }, "node_modules/@expo/cli": { - "version": "54.0.23", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.23.tgz", - "integrity": "sha512-km0h72SFfQCmVycH/JtPFTVy69w6Lx1cHNDmfLfQqgKFYeeHTjx7LVDP4POHCtNxFP2UeRazrygJhlh4zz498g==", + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.7.tgz", + "integrity": "sha512-RuhoB/M0LnD5dSTkd7lkVjCR1H2lpviZTDokLWhV/HbOzlOwXehKGA5MNjse8Jc3/ZoizFrs3b9ZYmX9APCNjA==", "license": "MIT", "dependencies": { - "@0no-co/graphql.web": "^1.0.8", "@expo/code-signing-certificates": "^0.0.6", - "@expo/config": "~12.0.13", - "@expo/config-plugins": "~54.0.4", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.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/env": "~2.1.0", + "@expo/image-utils": "^0.8.12", + "@expo/json-file": "^10.0.12", + "@expo/log-box": "55.0.6", "@expo/metro": "~54.2.0", - "@expo/metro-config": "~54.0.14", - "@expo/osascript": "^2.3.8", - "@expo/package-manager": "^1.9.10", - "@expo/plist": "^0.4.8", - "@expo/prebuild-config": "^54.0.8", - "@expo/schema-utils": "^0.1.8", + "@expo/metro-config": "~55.0.5", + "@expo/osascript": "^2.4.2", + "@expo/package-manager": "^1.10.3", + "@expo/plist": "^0.5.2", + "@expo/prebuild-config": "^55.0.4", + "@expo/router-server": "^55.0.5", + "@expo/schema-utils": "^55.0.2", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", - "@expo/xcpretty": "^4.3.0", - "@react-native/dev-middleware": "0.81.5", - "@urql/core": "^5.0.6", - "@urql/exchange-retry": "^1.3.0", + "@expo/xcpretty": "^4.4.0", + "@react-native/dev-middleware": "0.83.1", "accepts": "^1.3.8", "arg": "^5.0.2", "better-opn": "~3.0.2", @@ -3765,38 +3758,35 @@ "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", + "dnssd-advertise": "^1.1.1", "env-editor": "^0.4.1", - "expo-server": "^1.0.5", - "freeport-async": "^2.0.0", + "expo-server": "^55.0.3", + "fetch-nodeshim": "^0.4.5", "getenv": "^2.0.0", "glob": "^13.0.0", "lan-network": "^0.1.6", "minimatch": "^9.0.0", + "multitars": "^0.2.3", "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", "picomatch": "^3.0.1", - "pretty-bytes": "^5.6.0", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", "qrcode-terminal": "0.11.0", "require-from-string": "^2.0.2", - "requireg": "^0.2.2", - "resolve": "^1.22.2", "resolve-from": "^5.0.0", - "resolve.exports": "^2.0.3", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", "source-map-support": "~0.5.21", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", - "tar": "^7.5.2", "terminal-link": "^2.1.1", - "undici": "^6.18.2", "wrap-ansi": "^7.0.0", - "ws": "^8.12.1" + "ws": "^8.12.1", + "zod": "^3.25.76" }, "bin": { "expo-internal": "build/bin/cli" @@ -3815,46 +3805,6 @@ } } }, - "node_modules/@expo/cli/node_modules/@react-native/debugger-frontend": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", - "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@expo/cli/node_modules/@react-native/dev-middleware": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", - "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", - "license": "MIT", - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.81.5", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^6.2.3" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@expo/cli/node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, "node_modules/@expo/cli/node_modules/ansi-regex": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", @@ -4024,22 +3974,6 @@ "node": ">=4" } }, - "node_modules/@expo/cli/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@expo/cli/node_modules/ora": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", @@ -4120,6 +4054,15 @@ "node": ">=4" } }, + "node_modules/@expo/cli/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@expo/code-signing-certificates": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", @@ -4130,15 +4073,15 @@ } }, "node_modules/@expo/config": { - "version": "12.0.13", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", - "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", + "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~54.0.4", - "@expo/config-types": "^54.0.10", - "@expo/json-file": "^10.0.8", + "@babel/code-frame": "^7.20.0", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "^10.0.12", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", @@ -4151,14 +4094,14 @@ } }, "node_modules/@expo/config-plugins": { - "version": "54.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", - "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", + "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", "license": "MIT", "dependencies": { - "@expo/config-types": "^54.0.10", - "@expo/json-file": "~10.0.8", - "@expo/plist": "^0.4.8", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "~10.0.12", + "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", @@ -4166,7 +4109,6 @@ "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", - "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" @@ -4217,20 +4159,11 @@ } }, "node_modules/@expo/config-types": { - "version": "54.0.10", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", - "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", + "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", "license": "MIT" }, - "node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/@expo/config/node_modules/glob": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", @@ -4295,9 +4228,9 @@ } }, "node_modules/@expo/devtools": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-0.1.8.tgz", - "integrity": "sha512-SVLxbuanDjJPgc0sy3EfXUMLb/tXzp6XIHkhtPVmTWJAp+FOr6+5SeiCfJrCzZFet0Ifyke2vX3sFcKwEvCXwQ==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-55.0.2.tgz", + "integrity": "sha512-4VsFn9MUriocyuhyA+ycJP3TJhUsOFHDc270l9h3LhNpXMf6wvIdGcA0QzXkZtORXmlDybWXRP2KT1k36HcQkA==", "license": "MIT", "dependencies": { "chalk": "^4.1.2" @@ -4315,35 +4248,35 @@ } } }, + "node_modules/@expo/dom-webview": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-55.0.3.tgz", + "integrity": "sha512-bY4/rfcZ0f43DvOtMn8/kmPlmo01tex5hRoc5hKbwBwQjqWQuQt0ACwu7akR9IHI4j0WNG48eL6cZB6dZUFrzg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/@expo/env": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.8.tgz", - "integrity": "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.1.0.tgz", + "integrity": "sha512-vbLItCcADX2WFlfQOlAXfdDL8opBjXUnbzShSY/+3zyrkSMoxwSTgrgS8JdoGla47pVRjpKtziD5HgJgMjf8Tg==", "license": "MIT", "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", "getenv": "^2.0.0" - } - }, - "node_modules/@expo/env/node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" }, - "funding": { - "url": "https://dotenvx.com" + "engines": { + "node": ">=20.12.0" } }, "node_modules/@expo/fingerprint": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.15.4.tgz", - "integrity": "sha512-eYlxcrGdR2/j2M6pEDXo9zU9KXXF1vhP+V+Tl+lyY+bU8lnzrN6c637mz6Ye3em2ANy8hhUR03Raf8VsT9Ogng==", + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.3.tgz", + "integrity": "sha512-abm2rm/3Tg1gPihTyDcy7kOWnjPdtpWHSI/VpWwLaAmqqa5hFASBcr8ge58ZEWsNiozUJbfflqOp5oTQqoumAA==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -4354,7 +4287,6 @@ "glob": "^13.0.0", "ignore": "^5.3.1", "minimatch": "^9.0.0", - "p-limit": "^3.1.0", "resolve-from": "^5.0.0", "semver": "^7.6.0" }, @@ -4431,9 +4363,9 @@ } }, "node_modules/@expo/image-utils": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.8.tgz", - "integrity": "sha512-HHHaG4J4nKjTtVa1GG9PCh763xlETScfEyNxxOvfTRr8IKPJckjTyqSLEtdJoFNJ1vqiABEjW7tqGhqGibZLeA==", + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.12.tgz", + "integrity": "sha512-3KguH7kyKqq7pNwLb9j6BBdD/bjmNwXZG/HPWT6GWIXbwrvAJt2JNyYTP5agWJ8jbbuys1yuCzmkX+TU6rmI7A==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -4442,10 +4374,7 @@ "jimp-compact": "0.16.1", "parse-png": "^2.1.0", "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0", - "semver": "^7.6.0", - "temp-dir": "~2.0.0", - "unique-string": "~2.0.0" + "semver": "^7.6.0" } }, "node_modules/@expo/image-utils/node_modules/semver": { @@ -4461,22 +4390,40 @@ } }, "node_modules/@expo/json-file": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.8.tgz", - "integrity": "sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==", + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.12.tgz", + "integrity": "sha512-inbDycp1rMAelAofg7h/mMzIe+Owx6F7pur3XdQ3EPTy00tme+4P6FWgHKUcjN8dBSrnbRNpSyh5/shzHyVCyQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", + "@babel/code-frame": "^7.20.0", "json5": "^2.2.3" } }, - "node_modules/@expo/json-file/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "node_modules/@expo/local-build-cache-provider": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.3.tgz", + "integrity": "sha512-wdpqOSpaqsY5CZ4rnC49U3jsdRaOfzbl6MlD7oSRH2slKmVoD/CiHH+9x9uuLsp65mGTp0a+FMUL6JfuvxRPIw==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" + "@expo/config": "~55.0.4", + "chalk": "^4.1.2" + } + }, + "node_modules/@expo/log-box": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.6.tgz", + "integrity": "sha512-t19lLsHQT2dmdBtKohibSzNlueTYDF//h7qyF7b/SMZRcofS27y/UJsoYPJfMJbo1OdQkZyI1InZYdpzwolMsA==", + "license": "MIT", + "dependencies": { + "@expo/dom-webview": "^55.0.3", + "anser": "^1.4.9", + "stacktrace-parser": "^0.1.10" + }, + "peerDependencies": { + "@expo/dom-webview": "^55.0.3", + "expo": "*", + "react": "*", + "react-native": "*" } }, "node_modules/@expo/metro": { @@ -4502,24 +4449,22 @@ } }, "node_modules/@expo/metro-config": { - "version": "54.0.14", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.14.tgz", - "integrity": "sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.5.tgz", + "integrity": "sha512-U5uEtUlPUJIH7nVleO+nLVhIjlxNbm6iN/cyP/ybQ0M7lRkRWl1ADFRwpy4z5ta/cvosmBqy6tIV0u9m5X1dqA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.20.0", "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", - "@expo/config": "~12.0.13", - "@expo/env": "~2.0.8", - "@expo/json-file": "~10.0.8", + "@expo/config": "~55.0.4", + "@expo/env": "~2.1.0", + "@expo/json-file": "~10.0.12", "@expo/metro": "~54.2.0", "@expo/spawn-async": "^1.7.2", "browserslist": "^4.25.0", "chalk": "^4.1.0", "debug": "^4.3.2", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", "getenv": "^2.0.0", "glob": "^13.0.0", "hermes-parser": "^0.29.1", @@ -4547,27 +4492,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@expo/metro-config/node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/metro-config/node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/@expo/metro-config/node_modules/glob": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", @@ -4600,283 +4524,70 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro-config/node_modules/lightningcss": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", - "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", - "license": "MPL-2.0", + "node_modules/@expo/metro-config/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/@expo/metro-config/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "license": "MIT", "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "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" + "hermes-estree": "0.29.1" } }, - "node_modules/@expo/metro-config/node_modules/lightningcss-darwin-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", - "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@expo/metro-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">= 12.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro-config/node_modules/lightningcss-darwin-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", - "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" + "node_modules/@expo/metro-runtime": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.5.tgz", + "integrity": "sha512-b8WBilddI89Sc3c9dDznvmMg7PKH8Plj39Hw6cdFoSQGULLeyA7cTAUodMe2ytSOq1n1EzuO0GPHNxwsp5wprQ==", + "license": "MIT", + "dependencies": { + "@expo/log-box": "55.0.6", + "anser": "^1.4.9", + "pretty-format": "^29.7.0", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-dom": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, - "node_modules/@expo/metro-config/node_modules/lightningcss-freebsd-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", - "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" + "node_modules/@expo/npm-proofread": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@expo/npm-proofread/-/npm-proofread-1.0.1.tgz", + "integrity": "sha512-yDyBlNIgg+rKoKCOVM9ZyAtgqRx6gHw+JtmZTrYYW4auAfwS6kE/iInmCpVXPqRy0OhJHgXj6q5PCgWELLVMeg==", + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^5.3.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@expo/metro-config/node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", - "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", - "cpu": [ - "arm" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@expo/metro-config/node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", - "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@expo/metro-config/node_modules/lightningcss-linux-arm64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", - "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@expo/metro-config/node_modules/lightningcss-linux-x64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", - "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@expo/metro-config/node_modules/lightningcss-linux-x64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", - "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@expo/metro-config/node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", - "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@expo/metro-config/node_modules/lightningcss-win32-x64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", - "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@expo/metro-config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/metro-runtime": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-6.1.2.tgz", - "integrity": "sha512-nvM+Qv45QH7pmYvP8JB1G8JpScrWND3KrMA6ZKe62cwwNiX/BjHU28Ear0v/4bQWXlOY0mv6B8CDIm8JxXde9g==", - "license": "MIT", - "dependencies": { - "anser": "^1.4.9", - "pretty-format": "^29.7.0", - "stacktrace-parser": "^0.1.10", - "whatwg-fetch": "^3.0.0" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-dom": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/@expo/npm-proofread": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@expo/npm-proofread/-/npm-proofread-1.0.1.tgz", - "integrity": "sha512-yDyBlNIgg+rKoKCOVM9ZyAtgqRx6gHw+JtmZTrYYW4auAfwS6kE/iInmCpVXPqRy0OhJHgXj6q5PCgWELLVMeg==", - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^5.3.0" - }, - "bin": { - "proofread": "proofread.js" + "bin": { + "proofread": "proofread.js" } }, "node_modules/@expo/npm-proofread/node_modules/semver": { @@ -4889,25 +4600,24 @@ } }, "node_modules/@expo/osascript": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.3.8.tgz", - "integrity": "sha512-/TuOZvSG7Nn0I8c+FcEaoHeBO07yu6vwDgk7rZVvAXoeAK5rkA09jRyjYsZo+0tMEFaToBeywA6pj50Mb3ny9w==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.4.2.tgz", + "integrity": "sha512-/XP7PSYF2hzOZzqfjgkoWtllyeTN8dW3aM4P6YgKcmmPikKL5FdoyQhti4eh6RK5a5VrUXJTOlTNIpIHsfB5Iw==", "license": "MIT", "dependencies": { - "@expo/spawn-async": "^1.7.2", - "exec-async": "^2.2.0" + "@expo/spawn-async": "^1.7.2" }, "engines": { "node": ">=12" } }, "node_modules/@expo/package-manager": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.9.10.tgz", - "integrity": "sha512-axJm+NOj3jVxep49va/+L3KkF3YW/dkV+RwzqUJedZrv4LeTqOG4rhrCaCPXHTvLqCTDKu6j0Xyd28N7mnxsGA==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.10.3.tgz", + "integrity": "sha512-ZuXiK/9fCrIuLjPSe1VYmfp0Sa85kCMwd8QQpgyi5ufppYKRtLBg14QOgUqj8ZMbJTxE0xqzd0XR7kOs3vAK9A==", "license": "MIT", "dependencies": { - "@expo/json-file": "^10.0.8", + "@expo/json-file": "^10.0.12", "@expo/spawn-async": "^1.7.2", "chalk": "^4.0.0", "npm-package-arg": "^11.0.0", @@ -5097,28 +4807,28 @@ } }, "node_modules/@expo/plist": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", - "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", "license": "MIT", "dependencies": { "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.2.3", + "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "node_modules/@expo/prebuild-config": { - "version": "54.0.8", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-54.0.8.tgz", - "integrity": "sha512-EA7N4dloty2t5Rde+HP0IEE+nkAQiu4A/+QGZGT9mFnZ5KKjPPkqSyYcRvP5bhQE10D+tvz6X0ngZpulbMdbsg==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.4.tgz", + "integrity": "sha512-1bp/S+w7KRRjegN6u0/jn2cHwzcAP1QbnA8DxW3ts1EdTIZee1X8bmR57JzRzGLuU3pTPV+gLYdUoycTiYtPHg==", "license": "MIT", "dependencies": { - "@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", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/image-utils": "^0.8.12", + "@expo/json-file": "^10.0.12", + "@react-native/normalize-colors": "0.83.1", "debug": "^4.3.1", "resolve-from": "^5.0.0", "semver": "^7.6.0", @@ -5140,10 +4850,44 @@ "node": ">=10" } }, + "node_modules/@expo/router-server": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.5.tgz", + "integrity": "sha512-b23SgYujpeA0qHu2lZ/H1XXuvc4TaBo92VikPUZ48YtETXMlRnccPv5Rp7N2rS7Na51wOqBEv9auPihk3d8N+A==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "@expo/metro-runtime": "^55.0.4", + "expo": "*", + "expo-constants": "^55.0.3", + "expo-font": "^55.0.3", + "expo-router": "*", + "expo-server": "^55.0.3", + "react": "*", + "react-dom": "*", + "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" + }, + "peerDependenciesMeta": { + "@expo/metro-runtime": { + "optional": true + }, + "expo-router": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, "node_modules/@expo/schema-utils": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.8.tgz", - "integrity": "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-55.0.2.tgz", + "integrity": "sha512-QZ5WKbJOWkCrMq0/kfhV9ry8te/OaS34YgLVpG8u9y2gix96TlpRTbxM/YATjNcUR2s4fiQmPCOxkGtog4i37g==", "license": "MIT" }, "node_modules/@expo/sdk-runtime-versions": { @@ -5295,14 +5039,14 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" @@ -5820,125 +5564,33 @@ } }, "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@isaacs/ttlcache": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", - "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", - "license": "ISC", + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6063,6 +5715,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -6137,6 +5790,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -6179,6 +5833,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -6194,6 +5849,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -6249,6 +5905,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -6278,6 +5935,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -6332,13 +5990,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@journeyapps/wa-sqlite": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@journeyapps/wa-sqlite/-/wa-sqlite-1.4.1.tgz", - "integrity": "sha512-xAWys6opteBpWaKmHG1pZvBmQViEKFK/46YVEkYlWxa4F9VAG0gIjCpfIdcQvXdqZf7X3ByADGmNBcR/cJ1DqQ==", - "hasInstallScript": true, - "peer": true - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -6411,7 +6062,7 @@ "version": "0.14.0", "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.14.0.tgz", "integrity": "sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@libsql/core": "^0.14.0", @@ -6425,7 +6076,7 @@ "version": "0.14.0", "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.14.0.tgz", "integrity": "sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "js-base64": "^3.7.5" @@ -6438,6 +6089,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6451,6 +6103,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6461,7 +6114,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.7.0.tgz", "integrity": "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@libsql/isomorphic-fetch": "^0.3.1", @@ -6474,7 +6127,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.3.1.tgz", "integrity": "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=18.0.0" @@ -6484,7 +6137,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/ws": "^8.5.4", @@ -6498,6 +6151,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6511,6 +6165,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6524,6 +6179,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6537,6 +6193,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6550,6 +6207,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6557,9 +6215,9 @@ ] }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.25.3", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.3.tgz", - "integrity": "sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", "dev": true, "license": "MIT", "dependencies": { @@ -6571,14 +6229,15 @@ "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", - "express": "^5.0.1", - "express-rate-limit": "^7.5.0", - "jose": "^6.1.1", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.0" + "zod-to-json-schema": "^3.25.1" }, "engines": { "node": ">=18" @@ -6681,7 +6340,7 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@nicolo-ribaudo/chokidar-2": { @@ -6995,9 +6654,9 @@ } }, "node_modules/@oxc-resolver/binding-android-arm-eabi": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.17.0.tgz", - "integrity": "sha512-kVnY21v0GyZ/+LG6EIO48wK3mE79BUuakHUYLIqobO/Qqq4mJsjuYXMSn3JtLcKZpN1HDVit4UHpGJHef1lrlw==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.17.1.tgz", + "integrity": "sha512-+VuZyMYYaap5uDAU1xDU3Kul0FekLqpBS8kI5JozlWfYQKnc/HsZg2gHPkQrj0SC9lt74WMNCfOzZZJlYXSdEQ==", "cpu": [ "arm" ], @@ -7009,9 +6668,9 @@ ] }, "node_modules/@oxc-resolver/binding-android-arm64": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.17.0.tgz", - "integrity": "sha512-Pf8e3XcsK9a8RHInoAtEcrwf2vp7V9bSturyUUYxw9syW6E7cGi7z9+6ADXxm+8KAevVfLA7pfBg8NXTvz/HOw==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.17.1.tgz", + "integrity": "sha512-YlDDTjvOEKhom/cRSVsXsMVeXVIAM9PJ/x2mfe08rfuS0iIEfJd8PngKbEIhG72WPxleUa+vkEZj9ncmC14z3Q==", "cpu": [ "arm64" ], @@ -7023,9 +6682,9 @@ ] }, "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.17.0.tgz", - "integrity": "sha512-lVSgKt3biecofXVr8e1hnfX0IYMd4A6VCxmvOmHsFt5Zbmt0lkO4S2ap2bvQwYDYh5ghUNamC7M2L8K6vishhQ==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.17.1.tgz", + "integrity": "sha512-HOYYLSY4JDk14YkXaz/ApgJYhgDP4KsG8EZpgpOxdszGW9HmIMMY/vXqVKYW74dSH+GQkIXYxBrEh3nv+XODVg==", "cpu": [ "arm64" ], @@ -7037,9 +6696,9 @@ ] }, "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.17.0.tgz", - "integrity": "sha512-+/raxVJE1bo7R4fA9Yp0wm3slaCOofTEeUzM01YqEGcRDLHB92WRGjRhagMG2wGlvqFuSiTp81DwSbBVo/g6AQ==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.17.1.tgz", + "integrity": "sha512-JHPJbsa5HvPq2/RIdtGlqfaG9zV2WmgvHrKTYmlW0L5esqtKCBuetFudXTBzkNcyD69kSZLzH92AzTr6vFHMFg==", "cpu": [ "x64" ], @@ -7051,9 +6710,9 @@ ] }, "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.17.0.tgz", - "integrity": "sha512-x9Ks56n+n8h0TLhzA6sJXa2tGh3uvMGpBppg6PWf8oF0s5S/3p/J6k1vJJ9lIUtTmenfCQEGKnFokpRP4fLTLg==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.17.1.tgz", + "integrity": "sha512-UD1FRC8j8xZstFXYsXwQkNmmg7vUbee006IqxokwDUUA+xEgKZDpLhBEiVKM08Urb+bn7Q0gn6M1pyNR0ng5mg==", "cpu": [ "x64" ], @@ -7065,9 +6724,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.17.0.tgz", - "integrity": "sha512-Wf3w07Ow9kXVJrS0zmsaFHKOGhXKXE8j1tNyy+qIYDsQWQ4UQZVx5SjlDTcqBnFerlp3Z3Is0RjmVzgoLG3qkA==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.17.1.tgz", + "integrity": "sha512-wFWC1wyf2ROFWTxK5x0Enm++DSof3EBQ/ypyAesMDLiYxOOASDoMOZG1ylWUnlKaCt5W7eNOWOzABpdfFf/ssA==", "cpu": [ "arm" ], @@ -7079,9 +6738,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.17.0.tgz", - "integrity": "sha512-N0OKA1al1gQ5Gm7Fui1RWlXaHRNZlwMoBLn3TVtSXX+WbnlZoVyDqqOqFL8+pVEHhhxEA2LR8kmM0JO6FAk6dg==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.17.1.tgz", + "integrity": "sha512-k/hUif0GEBk/csSqCfTPXb8AAVs1NNWCa/skBghvNbTtORcWfOVqJ3mM+2pE189+enRm4UnryLREu5ysI0kXEQ==", "cpu": [ "arm" ], @@ -7093,9 +6752,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.17.0.tgz", - "integrity": "sha512-wdcQ7Niad9JpjZIGEeqKJnTvczVunqlZ/C06QzR5zOQNeLVRScQ9S5IesKWUAPsJQDizV+teQX53nTK+Z5Iy+g==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.17.1.tgz", + "integrity": "sha512-Cwm6A071ww60QouJ9LoHAwBgEoZzHQ0Qaqk2E7WLfBdiQN9mLXIDhnrpn04hlRElRPhLiu/dtg+o5PPLvaINXQ==", "cpu": [ "arm64" ], @@ -7107,9 +6766,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.17.0.tgz", - "integrity": "sha512-65B2/t39HQN5AEhkLsC+9yBD1iRUkKOIhfmJEJ7g6wQ9kylra7JRmNmALFjbsj0VJsoSQkpM8K07kUZuNJ9Kxw==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.17.1.tgz", + "integrity": "sha512-+hwlE2v3m0r3sk93SchJL1uyaKcPjf+NGO/TD2DZUDo+chXx7FfaEj0nUMewigSt7oZ2sQN9Z4NJOtUa75HE5Q==", "cpu": [ "arm64" ], @@ -7121,9 +6780,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.17.0.tgz", - "integrity": "sha512-kExgm3TLK21dNMmcH+xiYGbc6BUWvT03PUZ2aYn8mUzGPeeORklBhg3iYcaBI3ZQHB25412X1Z6LLYNjt4aIaA==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.17.1.tgz", + "integrity": "sha512-bO+rsaE5Ox8cFyeL5Ct5tzot1TnQpFa/Wmu5k+hqBYSH2dNVDGoi0NizBN5QV8kOIC6O5MZr81UG4yW/2FyDTA==", "cpu": [ "ppc64" ], @@ -7135,9 +6794,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.17.0.tgz", - "integrity": "sha512-1utUJC714/ydykZQE8c7QhpEyM4SaslMfRXxN9G61KYazr6ndt85LaubK3EZCSD50vVEfF4PVwFysCSO7LN9uA==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.17.1.tgz", + "integrity": "sha512-B/P+hxKQ1oX4YstI9Lyh4PGzqB87Ddqj/A4iyRBbPdXTcxa+WW3oRLx1CsJKLmHPdDk461Hmbghq1Bm3pl+8Aw==", "cpu": [ "riscv64" ], @@ -7149,9 +6808,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.17.0.tgz", - "integrity": "sha512-mayiYOl3LMmtO2CLn4I5lhanfxEo0LAqlT/EQyFbu1ZN3RS+Xa7Q3JEM0wBpVIyfO/pqFrjvC5LXw/mHNDEL7A==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.17.1.tgz", + "integrity": "sha512-ulp2H3bFXzd/th2maH+QNKj5qgOhJ3v9Yspdf1svTw3CDOuuTl6sRKsWQ7MUw0vnkSNvQndtflBwVXgzZvURsQ==", "cpu": [ "riscv64" ], @@ -7163,9 +6822,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.17.0.tgz", - "integrity": "sha512-Ow/yI+CrUHxIIhn/Y1sP/xoRKbCC3x9O1giKr3G/pjMe+TCJ5ZmfqVWU61JWwh1naC8X5Xa7uyLnbzyYqPsHfg==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.17.1.tgz", + "integrity": "sha512-LAXYVe3rKk09Zo9YKF2ZLBcH8sz8Oj+JIyiUxiHtq0hiYLMsN6dOpCf2hzQEjPAmsSEA/hdC1PVKeXo+oma8mQ==", "cpu": [ "s390x" ], @@ -7177,9 +6836,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.17.0.tgz", - "integrity": "sha512-Z4J7XlPMQOLPANyu6y3B3V417Md4LKH5bV6bhqgaG99qLHmU5LV2k9ErV14fSqoRc/GU/qOpqMdotxiJqN/YWg==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.17.1.tgz", + "integrity": "sha512-3RAhxipMKE8RCSPn7O//sj440i+cYTgYbapLeOoDvQEt6R1QcJjTsFgI4iz99FhVj3YbPxlZmcLB5VW+ipyRTA==", "cpu": [ "x64" ], @@ -7191,9 +6850,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.17.0.tgz", - "integrity": "sha512-0effK+8lhzXsgsh0Ny2ngdnTPF30v6QQzVFApJ1Ctk315YgpGkghkelvrLYYgtgeFJFrzwmOJ2nDvCrUFKsS2Q==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.17.1.tgz", + "integrity": "sha512-wpjMEubGU8r9VjZTLdZR3aPHaBqTl8Jl8F4DBbgNoZ+yhkhQD1/MGvY70v2TLnAI6kAHSvcqgfvaqKDa2iWsPQ==", "cpu": [ "x64" ], @@ -7205,9 +6864,9 @@ ] }, "node_modules/@oxc-resolver/binding-openharmony-arm64": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.17.0.tgz", - "integrity": "sha512-kFB48dRUW6RovAICZaxHKdtZe+e94fSTNA2OedXokzMctoU54NPZcv0vUX5PMqyikLIKJBIlW7laQidnAzNrDA==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.17.1.tgz", + "integrity": "sha512-XIE4w17RYAVIgx+9Gs3deTREq5tsmalbatYOOBGNdH7n0DfTE600c7wYXsp7ANc3BPDXsInnOzXDEPCvO1F6cg==", "cpu": [ "arm64" ], @@ -7219,9 +6878,9 @@ ] }, "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.17.0.tgz", - "integrity": "sha512-a3elKSBLPT0OoRPxTkCIIc+4xnOELolEBkPyvdj01a6PSdSmyJ1NExWjWLaXnT6wBMblvKde5RmSwEi3j+jZpg==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.17.1.tgz", + "integrity": "sha512-Lqi5BlHX3zS4bpSOkIbOKVf7DIk6Gvmdifr2OuOI58eUUyP944M8/OyaB09cNpPy9Vukj7nmmhOzj8pwLgAkIg==", "cpu": [ "wasm32" ], @@ -7236,9 +6895,9 @@ } }, "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.17.0.tgz", - "integrity": "sha512-4eszUsSDb9YVx0RtYkPWkxxtSZIOgfeiX//nG5cwRRArg178w4RCqEF1kbKPud9HPrp1rXh7gE4x911OhvTnPg==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.17.1.tgz", + "integrity": "sha512-l6lTcLBQVj1HNquFpXSsrkCIM8X5Hlng5YNQJrg00z/KyovvDV5l3OFhoRyZ+aLBQ74zUnMRaJZC7xcBnHyeNg==", "cpu": [ "arm64" ], @@ -7250,9 +6909,9 @@ ] }, "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.17.0.tgz", - "integrity": "sha512-t946xTXMmR7yGH0KAe9rB055/X4EPIu93JUvjchl2cizR5QbuwkUV7vLS2BS6x6sfvDoQb6rWYnV1HCci6tBSg==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.17.1.tgz", + "integrity": "sha512-VTzVtfnCCsU/6GgvursWoyZrhe3Gj/RyXzDWmh4/U1Y3IW0u1FZbp+hCIlBL16pRPbDc5YvXVtCOnA41QOrOoQ==", "cpu": [ "ia32" ], @@ -7264,9 +6923,9 @@ ] }, "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.17.0.tgz", - "integrity": "sha512-pX6s2kMXLQg+hlqKk5UqOW09iLLxnTkvn8ohpYp2Mhsm2yzDPCx9dyOHiB/CQixLzTkLQgWWJykN4Z3UfRKW4Q==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.17.1.tgz", + "integrity": "sha512-jRPVU+6/12baj87q2+UGRh30FBVBzqKdJ7rP/mSqiL1kpNQB9yZ1j0+m3sru1m+C8hiFK7lBFwjUtYUBI7+UpQ==", "cpu": [ "x64" ], @@ -7299,9 +6958,9 @@ } }, "node_modules/@posthog/types": { - "version": "1.344.0", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.344.0.tgz", - "integrity": "sha512-mZiBdZD7hIbjbUSSN0oiaURrtsu8CJI6wkT7tqDhZ6wmM9baFKCkffy7LVjW1GFdN+bv7+PUKmICMoMXGJrZ8w==", + "version": "1.345.1", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.345.1.tgz", + "integrity": "sha512-IbdkrE1sluCq3PP8k4fiflujBiLzjGxaWQCMtLEHCZP3Ey9DSFK76FsO4aM1KastkQ20wk0C7dPSr3t9ddjBcA==", "license": "MIT" }, "node_modules/@powersync/attachments": { @@ -7314,9 +6973,9 @@ } }, "node_modules/@powersync/common": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", - "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.45.0.tgz", + "integrity": "sha512-C0r0Lago5MPcGiXSQhX6CDEqmHuMLjHZJzHjk61un1cvn+7SDoJrX1KTln+HuvoLovBTKK/DUJoAGzpTCIFF5Q==", "license": "Apache-2.0", "dependencies": { "async-mutex": "^0.5.0", @@ -7349,16 +7008,6 @@ "react-native": "*" } }, - "node_modules/@powersync/op-sqlite/node_modules/@powersync/common": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.45.0.tgz", - "integrity": "sha512-C0r0Lago5MPcGiXSQhX6CDEqmHuMLjHZJzHjk61un1cvn+7SDoJrX1KTln+HuvoLovBTKK/DUJoAGzpTCIFF5Q==", - "license": "Apache-2.0", - "dependencies": { - "async-mutex": "^0.5.0", - "event-iterator": "^2.0.0" - } - }, "node_modules/@powersync/react": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/@powersync/react/-/react-1.8.2.tgz", @@ -7391,6 +7040,16 @@ } } }, + "node_modules/@powersync/react-native/node_modules/@powersync/common": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", + "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", + "license": "Apache-2.0", + "dependencies": { + "async-mutex": "^0.5.0", + "event-iterator": "^2.0.0" + } + }, "node_modules/@powersync/tanstack-react-query": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/@powersync/tanstack-react-query/-/tanstack-react-query-0.1.14.tgz", @@ -7406,6 +7065,16 @@ "react": "*" } }, + "node_modules/@powersync/tanstack-react-query/node_modules/@powersync/common": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", + "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", + "license": "Apache-2.0", + "dependencies": { + "async-mutex": "^0.5.0", + "event-iterator": "^2.0.0" + } + }, "node_modules/@powersync/web": { "version": "1.32.0", "resolved": "https://registry.npmjs.org/@powersync/web/-/web-1.32.0.tgz", @@ -7426,6 +7095,16 @@ "@powersync/common": "^1.46.0" } }, + "node_modules/@powersync/web/node_modules/@powersync/common": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", + "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", + "license": "Apache-2.0", + "dependencies": { + "async-mutex": "^0.5.0", + "event-iterator": "^2.0.0" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -8464,7 +8143,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-clean": "20.1.1", @@ -8494,7 +8173,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8507,7 +8186,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8522,7 +8201,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8535,7 +8214,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8548,7 +8227,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config": "20.1.1", @@ -8569,10 +8248,10 @@ } }, "node_modules/@react-native-community/cli-doctor/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "devOptional": true, + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8585,7 +8264,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-android": "20.1.1", @@ -8599,7 +8278,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-apple": "20.1.1", @@ -8613,7 +8292,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-platform-apple": "20.1.1" @@ -8623,7 +8302,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8643,7 +8322,7 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "async-limiter": "~1.0.0" @@ -8653,7 +8332,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@vscode/sudo-prompt": "^9.0.0", @@ -8669,10 +8348,10 @@ } }, "node_modules/@react-native-community/cli-tools/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "devOptional": true, + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8685,7 +8364,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "joi": "^17.2.1" @@ -8695,17 +8374,17 @@ "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || >=14" } }, "node_modules/@react-native-community/cli/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "devOptional": true, + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8724,9 +8403,9 @@ } }, "node_modules/@react-native-community/slider": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.0.1.tgz", - "integrity": "sha512-K3JRWkIW4wQ79YJ6+BPZzp1SamoikxfPRw7Yw4B4PElEQmqZFrmH9M5LxvIo460/3QSrZF/wCgi3qizJt7g/iw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.1.tgz", + "integrity": "sha512-W98If/LnTaziU3/0h5+G1LvJaRhMc6iLQBte6UWa4WBIHDMaDPglNBIFKcCXc9Dxp83W+f+5Wv22Olq9M2HJYA==", "license": "MIT" }, "node_modules/@react-native-documents/picker": { @@ -8740,31 +8419,31 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.5.tgz", - "integrity": "sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", + "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.5.tgz", - "integrity": "sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", + "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.81.5" + "@react-native/codegen": "0.83.1" }, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-preset": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.5.tgz", - "integrity": "sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", + "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -8808,8 +8487,8 @@ "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.81.5", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "@react-native/babel-plugin-codegen": "0.83.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, @@ -8820,25 +8499,25 @@ "@babel/core": "*" } }, - "node_modules/@react-native/babel-preset/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "hermes-parser": "0.32.0" } }, "node_modules/@react-native/codegen": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", - "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", + "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", "glob": "^7.1.1", - "hermes-parser": "0.29.1", + "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "yargs": "^17.6.2" @@ -8851,17 +8530,17 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.5.tgz", - "integrity": "sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", + "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.81.5", + "@react-native/dev-middleware": "0.83.1", "debug": "^4.4.0", "invariant": "^2.2.4", - "metro": "^0.83.1", - "metro-config": "^0.83.1", - "metro-core": "^0.83.1", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", "semver": "^7.1.3" }, "engines": { @@ -8880,23 +8559,49 @@ } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", - "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", + "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", "license": "BSD-3-Clause", "engines": { "node": ">= 20.19.4" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", - "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", + "node_modules/@react-native/debugger-shell": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", + "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", + "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.81.5", + "@react-native/debugger-frontend": "0.83.1", + "@react-native/debugger-shell": "0.83.1", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", @@ -8905,13 +8610,13 @@ "nullthrows": "^1.1.1", "open": "^7.0.3", "serve-static": "^1.16.2", - "ws": "^6.2.3" + "ws": "^7.5.10" }, "engines": { "node": ">= 20.19.4" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/open": { + "node_modules/@react-native/dev-middleware/node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", @@ -8927,55 +8632,55 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.5.tgz", - "integrity": "sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", + "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.5.tgz", - "integrity": "sha512-fB7M1CMOCIUudTRuj7kzxIBTVw2KXnsgbQ6+4cbqSxo8NmRRhA0Ul4ZUzZj3rFd3VznTL4Brmocv1oiN0bWZ8w==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", + "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/normalize-colors": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.5.tgz", - "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", + "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", "license": "MIT" }, "node_modules/@react-native/virtualized-lists": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.81.5.tgz", - "integrity": "sha512-UVXgV/db25OPIvwZySeToXD/9sKKhOdkcWmmf4Jh8iBZuyfML+/5CasaZ1E7Lqg6g3uqVQq75NqIwkYmORJMPw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", + "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", "license": "MIT", "dependencies": { "invariant": "^2.2.4", @@ -8985,7 +8690,7 @@ "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.1.0", + "@types/react": "^19.2.0", "react": "*", "react-native": "*" }, @@ -9469,7 +9174,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" @@ -9479,20 +9184,20 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "license": "MIT" }, "node_modules/@sinonjs/commons": { @@ -9520,9 +9225,9 @@ "license": "MIT" }, "node_modules/@supabase/auth-js": { - "version": "2.94.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.94.0.tgz", - "integrity": "sha512-FPFx8DzEreSoLo2HVfwNY0p/uNQ9rONQp3VKw68UP8wg1YwXK5g+TM4d4U7LTGW4HqwG0rjUdQ1it7QPw09r2w==", + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.95.3.tgz", + "integrity": "sha512-vD2YoS8E2iKIX0F7EwXTmqhUpaNsmbU6X2R0/NdFcs02oEfnHyNP/3M716f3wVJ2E5XHGiTFXki6lRckhJ0Thg==", "license": "MIT", "dependencies": { "tslib": "2.8.1" @@ -9532,9 +9237,9 @@ } }, "node_modules/@supabase/functions-js": { - "version": "2.94.0", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.94.0.tgz", - "integrity": "sha512-DAbIptT7e7hAvYHp4FhRH+LxxvKQ38QGxjaFHLoDoeQBqDaAbP/iu74dLOn6PIAnSRAqUkN2bKGs3awzNzBgKA==", + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.95.3.tgz", + "integrity": "sha512-uTuOAKzs9R/IovW1krO0ZbUHSJnsnyJElTXIRhjJTqymIVGcHzkAYnBCJqd7468Fs/Foz1BQ7Dv6DCl05lr7ig==", "license": "MIT", "dependencies": { "tslib": "2.8.1" @@ -9544,9 +9249,9 @@ } }, "node_modules/@supabase/postgrest-js": { - "version": "2.94.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.94.0.tgz", - "integrity": "sha512-3YKoDJu8VxvlJdCe2U2edzSQ9uArR0OLM3A4eAsS4QnIqzs+HuY5ZnubeoWnn/zRNeTENMLSXXZHAeMBPkyXew==", + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.95.3.tgz", + "integrity": "sha512-LTrRBqU1gOovxRm1vRXPItSMPBmEFqrfTqdPTRtzOILV4jPSueFz6pES5hpb4LRlkFwCPRmv3nQJ5N625V2Xrg==", "license": "MIT", "dependencies": { "tslib": "2.8.1" @@ -9556,9 +9261,9 @@ } }, "node_modules/@supabase/realtime-js": { - "version": "2.94.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.94.0.tgz", - "integrity": "sha512-TTPVttf4yMZTd0Jo65rIn4eyTAlI7XlwgB6OVEnne4Sz4VOddXPavEw4xRISOKJZ1n8ULLRz03hilMtqnj9gNg==", + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.95.3.tgz", + "integrity": "sha512-D7EAtfU3w6BEUxDACjowWNJo/ZRo7sDIuhuOGKHIm9FHieGeoJV5R6GKTLtga/5l/6fDr2u+WcW/m8I9SYmaIw==", "license": "MIT", "dependencies": { "@types/phoenix": "^1.6.6", @@ -9571,9 +9276,9 @@ } }, "node_modules/@supabase/storage-js": { - "version": "2.94.0", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.94.0.tgz", - "integrity": "sha512-wLdfqKqSfdDgGbLqgsT8ssEELBaHJm1xwiymq3cvVgxcbjRR6ECtUGtA1kj0JvX/F9DiARbrk/zkIsQ+OaUVBg==", + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.95.3.tgz", + "integrity": "sha512-4GxkJiXI3HHWjxpC3sDx1BVrV87O0hfX+wvJdqGv67KeCu+g44SPnII8y0LL/Wr677jB7tpjAxKdtVWf+xhc9A==", "license": "MIT", "dependencies": { "iceberg-js": "^0.8.1", @@ -9584,16 +9289,16 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "2.94.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.94.0.tgz", - "integrity": "sha512-KcqoA3ITW++CwoyCFxwV10npzR6wMfjKbMz87Q1PSuLw26SmHFQjjbBLvuZpzOrPoQ67on5W55irFsK8e0BhWg==", + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.95.3.tgz", + "integrity": "sha512-Fukw1cUTQ6xdLiHDJhKKPu6svEPaCEDvThqCne3OaQyZvuq2qjhJAd91kJu3PXLG18aooCgYBaB6qQz35hhABg==", "license": "MIT", "dependencies": { - "@supabase/auth-js": "2.94.0", - "@supabase/functions-js": "2.94.0", - "@supabase/postgrest-js": "2.94.0", - "@supabase/realtime-js": "2.94.0", - "@supabase/storage-js": "2.94.0" + "@supabase/auth-js": "2.95.3", + "@supabase/functions-js": "2.95.3", + "@supabase/postgrest-js": "2.95.3", + "@supabase/realtime-js": "2.95.3", + "@supabase/storage-js": "2.95.3" }, "engines": { "node": ">=20.0.0" @@ -10041,28 +9746,28 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node18": { @@ -10215,9 +9920,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.19.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.8.tgz", - "integrity": "sha512-ebO/Yl+EAvVe8DnMfi+iaAyIqYdK0q/q0y0rw82INWEKJOBe6b/P3YWE8NW7oOlF/nXFNrHwhARrN/hdgDkraA==", + "version": "22.19.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.10.tgz", + "integrity": "sha512-tF5VOugLS/EuDlTBijk0MqABfP8UxgYazTLo3uIn3b4yJgg26QRbVYJYsDtHrjdDUIRfP70+VfhTTc+CE1yskw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -10230,12 +9935,12 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.17.tgz", - "integrity": "sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==", + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", "license": "MIT", "dependencies": { - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-dom": { @@ -10306,16 +10011,16 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz", - "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", + "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.54.0", - "@typescript-eslint/type-utils": "8.54.0", - "@typescript-eslint/utils": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0", + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/type-utils": "8.55.0", + "@typescript-eslint/utils": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -10328,7 +10033,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.54.0", + "@typescript-eslint/parser": "^8.55.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -10343,15 +10048,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz", - "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", + "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.54.0", - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0", + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", "debug": "^4.4.3" }, "engines": { @@ -10367,13 +10072,13 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz", - "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", + "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.54.0", - "@typescript-eslint/types": "^8.54.0", + "@typescript-eslint/tsconfig-utils": "^8.55.0", + "@typescript-eslint/types": "^8.55.0", "debug": "^4.4.3" }, "engines": { @@ -10388,13 +10093,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz", - "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", + "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0" + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10405,9 +10110,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz", - "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", + "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10421,14 +10126,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz", - "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", + "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0", - "@typescript-eslint/utils": "8.54.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/utils": "8.55.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -10445,9 +10150,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", + "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10458,15 +10163,15 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz", - "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", + "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.54.0", - "@typescript-eslint/tsconfig-utils": "8.54.0", - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0", + "@typescript-eslint/project-service": "8.55.0", + "@typescript-eslint/tsconfig-utils": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -10509,9 +10214,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -10521,15 +10226,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz", - "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", + "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.54.0", - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0" + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10544,12 +10249,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz", - "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", + "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/types": "8.55.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -10828,34 +10533,11 @@ "win32" ] }, - "node_modules/@urql/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.2.0.tgz", - "integrity": "sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==", - "license": "MIT", - "dependencies": { - "@0no-co/graphql.web": "^1.0.13", - "wonka": "^6.3.2" - } - }, - "node_modules/@urql/exchange-retry": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.2.tgz", - "integrity": "sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==", - "license": "MIT", - "dependencies": { - "@urql/core": "^5.1.2", - "wonka": "^6.3.2" - }, - "peerDependencies": { - "@urql/core": "^5.0.0" - } - }, "node_modules/@vscode/sudo-prompt": { "version": "9.3.2", "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@xmldom/xmldom": { @@ -11030,7 +10712,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "colorette": "^1.0.7", @@ -11042,7 +10724,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -11052,7 +10734,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" @@ -11120,7 +10802,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/arg": { @@ -11366,7 +11048,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11385,6 +11067,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true, "license": "MIT" }, "node_modules/async-lock": { @@ -11588,6 +11271,21 @@ "hermes-parser": "0.29.1" } }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.29.1" + } + }, "node_modules/babel-plugin-syntax-trailing-function-commas": { "version": "7.0.0-beta.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", @@ -11631,11 +11329,12 @@ } }, "node_modules/babel-preset-expo": { - "version": "54.0.10", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.10.tgz", - "integrity": "sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.4.tgz", + "integrity": "sha512-GGPhL1bpJOFOQFRTkkVyhitf1CRtNjdVq2F1Ps7CWfw0fK/AmzAGO79cnnHuD24GhnwQe7C+Eip5U6ALbvPE3w==", "license": "MIT", "dependencies": { + "@babel/generator": "^7.20.5", "@babel/helper-module-imports": "^7.25.9", "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-export-default-from": "^7.24.7", @@ -11651,7 +11350,7 @@ "@babel/plugin-transform-runtime": "^7.24.7", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.81.5", + "@react-native/babel-preset": "0.83.1", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "~0.21.0", "babel-plugin-syntax-hermes-parser": "^0.29.1", @@ -11662,6 +11361,7 @@ "peerDependencies": { "@babel/runtime": "^7.20.0", "expo": "*", + "expo-widgets": "^55.0.0-alpha.6", "react-refresh": ">=0.14.0 <1.0.0" }, "peerDependenciesMeta": { @@ -11670,6 +11370,9 @@ }, "expo": { "optional": true + }, + "expo-widgets": { + "optional": true } } }, @@ -11903,6 +11606,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -11915,7 +11619,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -11927,7 +11631,7 @@ "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -11952,7 +11656,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -11962,14 +11666,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/body-parser/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -12215,15 +11919,16 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001767", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz", - "integrity": "sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==", + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", "funding": [ { "type": "opencollective", @@ -12269,6 +11974,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "devOptional": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -12293,6 +11999,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -12305,6 +12012,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -12361,6 +12069,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, "license": "MIT" }, "node_modules/class-variance-authority": { @@ -12379,7 +12088,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" @@ -12475,6 +12184,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -12532,7 +12242,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -12557,7 +12267,7 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/commander": { @@ -12688,7 +12398,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -12772,7 +12482,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.1", @@ -12799,6 +12509,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12820,7 +12531,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/cross-env": { @@ -12906,15 +12617,6 @@ "node": ">= 8" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/css-in-js-utils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", @@ -12969,6 +12671,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -13047,7 +12750,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 12" @@ -13132,7 +12835,7 @@ "version": "1.11.19", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/debug": { @@ -13156,7 +12859,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13181,6 +12884,7 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -13191,15 +12895,6 @@ } } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -13439,7 +13134,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -13449,6 +13144,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13464,13 +13160,14 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, "license": "Apache-2.0" }, "node_modules/diff": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -13501,6 +13198,13 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dnssd-advertise": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", + "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", "license": "MIT" }, "node_modules/doctrine": { @@ -13619,6 +13323,7 @@ "version": "16.6.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -13627,25 +13332,10 @@ "url": "https://dotenvx.com" } }, - "node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/drizzle-kit": { - "version": "0.31.8", - "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.8.tgz", - "integrity": "sha512-O9EC/miwdnRDY10qRxM8P3Pg8hXe3LyU4ZipReKOgTwn4OqANmftj8XJz1UPUAS6NMHf0E2htjsbQujUTkncCg==", + "version": "0.31.9", + "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.9.tgz", + "integrity": "sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==", "dev": true, "license": "MIT", "dependencies": { @@ -13662,6 +13352,7 @@ "version": "0.44.7", "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.44.7.tgz", "integrity": "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==", + "dev": true, "license": "Apache-2.0", "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", @@ -13797,13 +13488,6 @@ "node": ">= 0.4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -13868,7 +13552,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -13878,7 +13562,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "envinfo": "dist/cli.js" @@ -13891,6 +13575,7 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -13909,7 +13594,7 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -14255,9 +13940,9 @@ } }, "node_modules/eslint-config-expo": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-10.0.0.tgz", - "integrity": "sha512-/XC/DvniUWTzU7Ypb/cLDhDD4DXqEio4lug1ObD/oQ9Hcx3OVOR8Mkp4u6U4iGoZSJyIQmIk3WVHe/P1NYUXKw==", + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-55.0.0.tgz", + "integrity": "sha512-YvhaKrp1g7pR/qjdI12E5nw9y0DJZWgYr815vyW8wskGLsFvxATY3mtKL8zm3ZYzWj3Bvc37tRIS661TEkrv9A==", "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "^8.18.2", @@ -14369,16 +14054,17 @@ } } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/parser": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "license": "BSD-2-Clause", "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -14396,19 +14082,14 @@ } } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/scope-manager": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -14416,22 +14097,18 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/parser": { + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/type-utils": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -14449,23 +14126,6 @@ } } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/eslint-config-universe/node_modules/@typescript-eslint/types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", @@ -14507,6 +14167,31 @@ } } }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, "node_modules/eslint-config-universe/node_modules/@typescript-eslint/visitor-keys": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", @@ -14573,9 +14258,9 @@ } }, "node_modules/eslint-config-universe/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -14893,19 +14578,6 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/eslint-plugin-react-compiler/node_modules/zod-validation-error": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.4.tgz", - "integrity": "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "zod": "^3.24.4" - } - }, "node_modules/eslint-plugin-react-hooks": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", @@ -15153,16 +14825,11 @@ "node": ">=18.0.0" } }, - "node_modules/exec-async": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", - "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", - "license": "MIT" - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -15186,6 +14853,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -15207,32 +14875,34 @@ } }, "node_modules/expo": { - "version": "54.0.33", - "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", - "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", + "version": "55.0.0-preview.10", + "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.10.tgz", + "integrity": "sha512-BtHgdcu/XS4yYSJTB4HHbYogT2qHl6S4usFqUPhoFfVu/F440VU3J98uUqbDLh5I8OcsZ2PbhjRpOy7uR+MExg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "54.0.23", - "@expo/config": "~12.0.13", - "@expo/config-plugins": "~54.0.4", - "@expo/devtools": "0.1.8", - "@expo/fingerprint": "0.15.4", + "@expo/cli": "55.0.7", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", + "@expo/devtools": "55.0.2", + "@expo/fingerprint": "0.16.3", + "@expo/local-build-cache-provider": "55.0.3", + "@expo/log-box": "55.0.6", "@expo/metro": "~54.2.0", - "@expo/metro-config": "54.0.14", - "@expo/vector-icons": "^15.0.3", + "@expo/metro-config": "55.0.5", + "@expo/vector-icons": "^15.0.2", "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~54.0.10", - "expo-asset": "~12.0.12", - "expo-constants": "~18.0.13", - "expo-file-system": "~19.0.21", - "expo-font": "~14.0.11", - "expo-keep-awake": "~15.0.8", - "expo-modules-autolinking": "3.0.24", - "expo-modules-core": "3.0.29", + "babel-preset-expo": "~55.0.4", + "expo-asset": "~55.0.4", + "expo-constants": "~55.0.4", + "expo-file-system": "~55.0.5", + "expo-font": "~55.0.3", + "expo-keep-awake": "~55.0.2", + "expo-modules-autolinking": "55.0.3", + "expo-modules-core": "55.0.8", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", - "whatwg-url-without-unicode": "8.0.0-3" + "whatwg-url-minimum": "^0.1.1" }, "bin": { "expo": "bin/cli", @@ -15259,22 +14929,22 @@ } }, "node_modules/expo-application": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz", - "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-55.0.5.tgz", + "integrity": "sha512-+TSHZMobYEe96CcKRYaNMdO9CcuKpO/hCjBcB0SeoOkEwDbfPyY3KcdoVW6fU7xyPZYN0wucCnLgTXKqAeB5sQ==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-asset": { - "version": "12.0.12", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", - "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.4.tgz", + "integrity": "sha512-eaPPe9Sw4V0nL/KkEvuWpyeeSoGhP2fu1ZA7wkldqywhMVhhY+7kerMkQ7nPgJVtevIfkQRw7wD8ghZEzrKzmg==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.8.8", - "expo-constants": "~18.0.12" + "@expo/image-utils": "^0.8.12", + "expo-constants": "~55.0.4" }, "peerDependencies": { "expo": "*", @@ -15458,9 +15128,9 @@ "license": "MIT" }, "node_modules/expo-audio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-1.1.1.tgz", - "integrity": "sha512-CPCpJ+0AEHdzWROc0f00Zh6e+irLSl2ALos/LPvxEeIcJw1APfBa4DuHPkL4CQCWsVe7EnUjFpdwpqsEUWcP0g==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.5.tgz", + "integrity": "sha512-B2UpahrjHDSi4BPP9rwZIDm1aNBzZ+KwVj09nIoQo2XC5ng2DuHBUFZF5cISX7gmUjS2HhsXtV5/CvKJLUt+6g==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15487,44 +15157,23 @@ } }, "node_modules/expo-build-properties": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-1.0.10.tgz", - "integrity": "sha512-mFCZbrbrv0AP5RB151tAoRzwRJelqM7bCJzCkxpu+owOyH+p/rFC/q7H5q8B9EpVWj8etaIuszR+gKwohpmu1Q==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-55.0.6.tgz", + "integrity": "sha512-DfNRMAOGK3a2yao5RmCgNIz4bvCBFS8uHBHwYbd6RZos0n3Qqs96/l+Y9XMWJ/j7xVlXrTacw2wwwstqBGbwYA==", "license": "MIT", "dependencies": { - "ajv": "^8.11.0", + "@expo/schema-utils": "^55.0.2", + "resolve-from": "^5.0.0", "semver": "^7.6.0" }, "peerDependencies": { "expo": "*" } }, - "node_modules/expo-build-properties/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/expo-build-properties/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, "node_modules/expo-build-properties/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -15534,9 +15183,9 @@ } }, "node_modules/expo-clipboard": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-8.0.8.tgz", - "integrity": "sha512-VKoBkHIpZZDJTB0jRO4/PZskHdMNOEz3P/41tmM6fDuODMpqhvyWK053X0ebspkxiawJX9lX33JXHBCvVsTTOA==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-55.0.5.tgz", + "integrity": "sha512-uzGQikfr46+E8bL//tzo+049VYFUzcc3vFgIqImjPrwF5oboKVkOvzsnwhTIQNC++fyU5i3jkLcGd+YK5EwcmA==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15545,13 +15194,13 @@ } }, "node_modules/expo-constants": { - "version": "18.0.13", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", - "integrity": "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.4.tgz", + "integrity": "sha512-zdPxsYnL8LrW91sXivdBIH5nouTDUG0npMZxaYhvEO/2p60iN0W4jK3n2sRFrPl31WctLWSs4ato/wIKnRuUFA==", "license": "MIT", "dependencies": { - "@expo/config": "~12.0.13", - "@expo/env": "~2.0.8" + "@expo/config": "~55.0.4", + "@expo/env": "~2.1.0" }, "peerDependencies": { "expo": "*", @@ -15559,82 +15208,60 @@ } }, "node_modules/expo-dev-client": { - "version": "6.0.20", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-6.0.20.tgz", - "integrity": "sha512-5XjoVlj1OxakNxy55j/AUaGPrDOlQlB6XdHLLWAw61w5ffSpUDHDnuZzKzs9xY1eIaogOqTOQaAzZ2ddBkdXLA==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-55.0.5.tgz", + "integrity": "sha512-p0xkyrCYXztUrVl6fqIrhUVR30Cxp5PbP9Vv1IXl2po8OkFDQklu5y908NBN/oeWpgv1lSgKpRTdZ1G2nsJ7IQ==", "license": "MIT", "dependencies": { - "expo-dev-launcher": "6.0.20", - "expo-dev-menu": "7.0.18", - "expo-dev-menu-interface": "2.0.0", - "expo-manifests": "~1.0.10", - "expo-updates-interface": "~2.0.0" + "expo-dev-launcher": "55.0.6", + "expo-dev-menu": "55.0.5", + "expo-dev-menu-interface": "55.0.1", + "expo-manifests": "~55.0.5", + "expo-updates-interface": "~55.1.1" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-dev-launcher": { - "version": "6.0.20", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-6.0.20.tgz", - "integrity": "sha512-a04zHEeT9sB0L5EB38fz7sNnUKJ2Ar1pXpcyl60Ki8bXPNCs9rjY7NuYrDkP/irM8+1DklMBqHpyHiLyJ/R+EA==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-55.0.6.tgz", + "integrity": "sha512-Zrmdc0cgvizmX9Wd+Kc5iz0T5QQ2DSsx1Sedww9Ra4qQlUcL2GzoVnDqqw63zI5ax+rnMbBVWyiQUqHN1w/l/A==", "license": "MIT", "dependencies": { - "ajv": "^8.11.0", - "expo-dev-menu": "7.0.18", - "expo-manifests": "~1.0.10" + "@expo/schema-utils": "^55.0.2", + "expo-dev-menu": "55.0.5", + "expo-manifests": "~55.0.5" }, "peerDependencies": { "expo": "*" } }, - "node_modules/expo-dev-launcher/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/expo-dev-launcher/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, "node_modules/expo-dev-menu": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-7.0.18.tgz", - "integrity": "sha512-4kTdlHrnZCAWCT6tZRQHSSjZ7vECFisL4T+nsG/GJDo/jcHNaOVGV5qPV9wzlTxyMk3YOPggRw4+g7Ownrg5eA==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-55.0.5.tgz", + "integrity": "sha512-NCNvsUl+GaVD/FgzEiHtNBLoj4LCE2xE40FKsYsV25csNAp2JizeR5eSIAKW2NX4UTWvgdqOQMIoXhERt7pZBw==", "license": "MIT", "dependencies": { - "expo-dev-menu-interface": "2.0.0" + "expo-dev-menu-interface": "55.0.1" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-dev-menu-interface": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-2.0.0.tgz", - "integrity": "sha512-BvAMPt6x+vyXpThsyjjOYyjwfjREV4OOpQkZ0tNl+nGpsPfcY9mc6DRACoWnH9KpLzyIt3BOgh3cuy/h/OxQjw==", + "version": "55.0.1", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-55.0.1.tgz", + "integrity": "sha512-FkNtwq1q6NmYoy28pj+ZLuHmirJgc039pQbJ167MZJIaprLcMN1yy67qA7xBHK+FNJ8AN8kGCtMTPByg5UC72A==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-device": { - "version": "8.0.10", - "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-8.0.10.tgz", - "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-55.0.6.tgz", + "integrity": "sha512-GCO3shHTn8zk5FUBywra3qyFXv08uNQpJSGeNg/gBBJw+GVpgtZ/9mhB3gVh3daueCV+PWRFWn14QT3lW6PwqQ==", "license": "MIT", "dependencies": { "ua-parser-js": "^0.7.33" @@ -15654,15 +15281,15 @@ } }, "node_modules/expo-eas-client": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-1.0.8.tgz", - "integrity": "sha512-5or11NJhSeDoHHI6zyvQDW2cz/yFyE+1Cz8NTs5NK8JzC7J0JrkUgptWtxyfB6Xs/21YRNifd3qgbBN3hfKVgA==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-55.0.2.tgz", + "integrity": "sha512-fjOgSXaZFBK2Xmzn/uw0DTF3BsYv97JEa4PYXXqVCEvNJPwJB1cV1eX6Xyq6iKGIhMPH9k62sOc+oUdt094WCw==", "license": "MIT" }, "node_modules/expo-file-system": { - "version": "19.0.21", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", - "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.5.tgz", + "integrity": "sha512-ZD9uJS4tmmyPBHcW7j90+CUsdvfavXdSHSQWG22g7Zm1x02E5elHKOAhsv9gFDGsMDc1nvgR+IvrWlokjkXVSQ==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15670,9 +15297,9 @@ } }, "node_modules/expo-font": { - "version": "14.0.11", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", - "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", + "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" @@ -15683,20 +15310,34 @@ "react-native": "*" } }, + "node_modules/expo-glass-effect": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-55.0.5.tgz", + "integrity": "sha512-ui3yOuntcqLukx32mPLcnYucRGN0zWk67euC45t6WlM6IPjXsRo6Z830drjKE7LPWbpWlRbOkdM6BpoAj+yDCQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-haptics": { - "version": "15.0.8", - "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-15.0.8.tgz", - "integrity": "sha512-lftutojy8Qs8zaDzzjwM3gKHFZ8bOOEZDCkmh2Ddpe95Ra6kt2izeOfOfKuP/QEh0MZ1j9TfqippyHdRd1ZM9g==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-55.0.5.tgz", + "integrity": "sha512-8bUIjxLtET5290p0WKyMQ8S3lvxMFEOdbA3GHt07QhgPf0eqeCtsH8/+g+ojtVT9RieZM9dZBHiqofdKpwCQfg==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-image": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-3.0.11.tgz", - "integrity": "sha512-4TudfUCLgYgENv+f48omnU8tjS2S0Pd9EaON5/s1ZUBRwZ7K8acEr4NfvLPSaeXvxW24iLAiyQ7sV7BXQH3RoA==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", + "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.2.0" + }, "peerDependencies": { "expo": "*", "react": "*", @@ -15709,10 +15350,16 @@ } } }, + "node_modules/expo-json-utils": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-55.0.0.tgz", + "integrity": "sha512-aupt/o5PDAb8dXDCb0JcRdkqnTLxe/F+La7jrnyd/sXlYFfRgBJLFOa1SqVFXm1E/Xam1SE/yw6eAb+DGY7Arg==", + "license": "MIT" + }, "node_modules/expo-keep-awake": { - "version": "15.0.8", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.8.tgz", - "integrity": "sha512-YK9M1VrnoH1vLJiQzChZgzDvVimVoriibiDIFLbQMpjYBnvyfUeHJcin/Gx1a+XgupNXy92EQJLgI/9ZuXajYQ==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", + "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15720,9 +15367,9 @@ } }, "node_modules/expo-linear-gradient": { - "version": "15.0.8", - "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-15.0.8.tgz", - "integrity": "sha512-V2d8Wjn0VzhPHO+rrSBtcl+Fo+jUUccdlmQ6OoL9/XQB7Qk3d9lYrqKDJyccwDxmQT10JdST3Tmf2K52NLc3kw==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-55.0.5.tgz", + "integrity": "sha512-zesU+u1/chAFCq+hYtV1xy/5XeKbDWTytOrvJlI3cfxUXV3Ezm9hP3xV6iCzbc72a5ROJYyXLAvMuoM4Pl9ZOg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -15731,12 +15378,12 @@ } }, "node_modules/expo-linking": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.11.tgz", - "integrity": "sha512-+VSaNL5om3kOp/SSKO5qe6cFgfSIWnnQDSbA7XLs3ECkYzXRquk5unxNS3pg7eK5kNUmQ4kgLI7MhTggAEUBLA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-55.0.4.tgz", + "integrity": "sha512-n4gKPzxskShfkiXZoMMOcgyJ/JgwmyOCLSBxBBg3dsBetg+KGTB5vZw7oLCu/MsWuKfbsbc/eyuvzzDyWTrpJw==", "license": "MIT", "dependencies": { - "expo-constants": "~18.0.12", + "expo-constants": "~55.0.4", "invariant": "^2.2.4" }, "peerDependencies": { @@ -15745,9 +15392,9 @@ } }, "node_modules/expo-localization": { - "version": "17.0.8", - "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-17.0.8.tgz", - "integrity": "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-55.0.5.tgz", + "integrity": "sha512-1AQvwtTqIH1aBZUiGI7kKFs5bTrfJOqYu4wCwmbB18P99dUZ8R4AfYzwmqI3aT/v1LggH5P7WjoW/NI+f40jpg==", "license": "MIT", "dependencies": { "rtl-detect": "^1.0.2" @@ -15758,24 +15405,18 @@ } }, "node_modules/expo-manifests": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-1.0.10.tgz", - "integrity": "sha512-oxDUnURPcL4ZsOBY6X1DGWGuoZgVAFzp6PISWV7lPP2J0r8u1/ucuChBgpK7u1eLGFp6sDIPwXyEUCkI386XSQ==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-55.0.5.tgz", + "integrity": "sha512-GXSVnEkAJ1o71L/WshV/NmDda/vnD4poDDKi/oSYSMd8him2u0GfqqzCsgec6Odlqz5fMqXO4JgoBaWKtzn8Aw==", "license": "MIT", "dependencies": { - "@expo/config": "~12.0.11", - "expo-json-utils": "~0.15.0" + "@expo/config": "~55.0.4", + "expo-json-utils": "~55.0.0" }, "peerDependencies": { "expo": "*" } }, - "node_modules/expo-manifests/node_modules/expo-json-utils": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.15.0.tgz", - "integrity": "sha512-duRT6oGl80IDzH2LD2yEFWNwGIC2WkozsB6HF3cDYNoNNdUvFk6uN3YiwsTsqVM/D0z6LEAQ01/SlYvN+Fw0JQ==", - "license": "MIT" - }, "node_modules/expo-module-scripts": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/expo-module-scripts/-/expo-module-scripts-3.5.4.tgz", @@ -16246,15 +15887,6 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "node_modules/expo-module-scripts/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/expo-module-scripts/node_modules/react-test-renderer": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", @@ -16285,9 +15917,9 @@ } }, "node_modules/expo-module-scripts/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -16399,9 +16031,9 @@ } }, "node_modules/expo-modules-autolinking": { - "version": "3.0.24", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.24.tgz", - "integrity": "sha512-TP+6HTwhL7orDvsz2VzauyQlXJcAWyU3ANsZ7JGL4DQu8XaZv/A41ZchbtAYLfozNA2Ya1Hzmhx65hXryBMjaQ==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", + "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -16424,9 +16056,9 @@ } }, "node_modules/expo-modules-core": { - "version": "3.0.29", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.29.tgz", - "integrity": "sha512-LzipcjGqk8gvkrOUf7O2mejNWugPkf3lmd9GkqL9WuNyeN2fRwU0Dn77e3ZUKI3k6sI+DNwjkq4Nu9fNN9WS7Q==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.8.tgz", + "integrity": "sha512-WWcbsDmxqz7YQjr0dDRCpiwrWYoz/T4mxUh7ZbUzj8SzsUGrvmvczPj2kAS7hHviimRyfZcTenAh22Wuw/abBA==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -16437,22 +16069,25 @@ } }, "node_modules/expo-router": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-6.0.23.tgz", - "integrity": "sha512-qCxVAiCrCyu0npky6azEZ6dJDMt77OmCzEbpF6RbUTlfkaCA417LvY14SBkk0xyGruSxy/7pvJOI6tuThaUVCA==", + "version": "55.0.0-preview.7", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-55.0.0-preview.7.tgz", + "integrity": "sha512-nrigtPHg5/5ZIeY0Qjo6/wM7N27bTbq22FuNrTgGsNOt5V8sPkvs8lsMl6OsnvEZCKJ2xFYPkL3UGSEvGVxT9A==", "license": "MIT", "dependencies": { - "@expo/metro-runtime": "^6.1.2", - "@expo/schema-utils": "^0.1.8", + "@expo/metro-runtime": "^55.0.5", + "@expo/schema-utils": "^55.0.2", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-tabs": "^1.1.12", - "@react-navigation/bottom-tabs": "^7.4.0", - "@react-navigation/native": "^7.1.8", - "@react-navigation/native-stack": "^7.3.16", + "@react-navigation/bottom-tabs": "7.10.1", + "@react-navigation/native": "7.1.28", + "@react-navigation/native-stack": "7.10.1", "client-only": "^0.0.1", "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", - "expo-server": "^1.0.5", + "expo-glass-effect": "^55.0.5", + "expo-image": "^55.0.3", + "expo-server": "^55.0.3", + "expo-symbols": "^55.0.3", "fast-deep-equal": "^3.1.3", "invariant": "^2.2.4", "nanoid": "^3.3.8", @@ -16467,12 +16102,13 @@ "vaul": "^1.1.2" }, "peerDependencies": { - "@expo/metro-runtime": "^6.1.2", - "@react-navigation/drawer": "^7.5.0", + "@expo/log-box": "55.0.6", + "@expo/metro-runtime": "^55.0.5", + "@react-navigation/drawer": "^7.7.2", "@testing-library/react-native": ">= 12.0.0", "expo": "*", - "expo-constants": "^18.0.13", - "expo-linking": "^8.0.11", + "expo-constants": "^55.0.4", + "expo-linking": "^55.0.4", "react": "*", "react-dom": "*", "react-native": "*", @@ -16525,6 +16161,43 @@ } } }, + "node_modules/expo-router/node_modules/@react-navigation/bottom-tabs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", + "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" + }, + "peerDependencies": { + "@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" + } + }, + "node_modules/expo-router/node_modules/@react-navigation/native-stack": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.10.1.tgz", + "integrity": "sha512-8jt7olKysn07HuKKSjT/ahZZTV+WaZa96o9RI7gAwh7ATlUDY02rIRttwvCyjovhSjD9KCiuJ+Hd4kwLidHwJw==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" + }, + "peerDependencies": { + "@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" + } + }, "node_modules/expo-router/node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -16538,39 +16211,46 @@ } }, "node_modules/expo-server": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-1.0.5.tgz", - "integrity": "sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", + "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", "license": "MIT", "engines": { "node": ">=20.16.0" } }, "node_modules/expo-sharing": { - "version": "14.0.8", - "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-14.0.8.tgz", - "integrity": "sha512-A1pPr2iBrxypFDCWVAESk532HK+db7MFXbvO2sCV9ienaFXAk7lIBm6bkqgE6vzRd9O3RGdEGzYx80cYlc089Q==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-55.0.6.tgz", + "integrity": "sha512-4X88AnVZTWUjCEYNvHFtd2UMEX43G2zFJBxVANI8RzAjDny4QrzTgdCEFNg0ufZyGMxZL3V5gzUkXVP5y7IEYg==", "license": "MIT", + "dependencies": { + "@expo/config-plugins": "^55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/plist": "^0.5.2" + }, "peerDependencies": { - "expo": "*" + "expo": "*", + "react": "*", + "react-native": "*" } }, "node_modules/expo-splash-screen": { - "version": "31.0.13", - "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-31.0.13.tgz", - "integrity": "sha512-1epJLC1cDlwwj089R2h8cxaU5uk4ONVAC+vzGiTZH4YARQhL4Stlz1MbR6yAS173GMosvkE6CAeihR7oIbCkDA==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-55.0.5.tgz", + "integrity": "sha512-Q8PSVonkFEMUykDMBw9kdwNOtc9cMD7Vlz+MU4PYBTHrVQB5EDONnecmDwFDPYF8wc57ef73wkYxuVmrQO533A==", "license": "MIT", "dependencies": { - "@expo/prebuild-config": "^54.0.8" + "@expo/prebuild-config": "^55.0.4" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-sqlite": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-16.0.10.tgz", - "integrity": "sha512-tUOKxE9TpfneRG3eOfbNfhN9236SJ7IiUnP8gCqU7umd9DtgDGB/5PhYVVfl+U7KskgolgNoB9v9OZ9iwXN8Eg==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-55.0.5.tgz", + "integrity": "sha512-tYaktd5dQc3fEsmRSSvPBW80o6sq3mzLyOpQ9smMFWSGKvcSJsfvpbE6c8axgdhRMb3OMF4UAhASui+kL9GONQ==", "license": "MIT", "dependencies": { "await-lock": "^2.2.2" @@ -16582,9 +16262,9 @@ } }, "node_modules/expo-status-bar": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-3.0.9.tgz", - "integrity": "sha512-xyYyVg6V1/SSOZWh4Ni3U129XHCnFHBTcUo0dhWtFDrZbNp/duw5AGsQfb2sVeU0gxWHXSY1+5F0jnKYC7WuOw==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-55.0.2.tgz", + "integrity": "sha512-iV/Az9SqwY2j5e/tZ7Fz7vwolfXp0xFTScET4lnS615oLQfdhyI2HOTg4CL4q7UVlSDW3HN4rCkDK2oASNVO7g==", "license": "MIT", "dependencies": { "react-native-is-edge-to-edge": "^1.2.1" @@ -16595,18 +16275,34 @@ } }, "node_modules/expo-structured-headers": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-5.0.0.tgz", - "integrity": "sha512-RmrBtnSphk5REmZGV+lcdgdpxyzio5rJw8CXviHE6qH5pKQQ83fhMEcigvrkBdsn2Efw2EODp4Yxl1/fqMvOZw==", + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-55.0.0.tgz", + "integrity": "sha512-udaNvuWb45/Sryq9FLC/blwgOChhznuqlTrUzVjC0T83pMdcmscKJX23lnNDW6hCec8p81Y3z1DIFwIyk0g/PQ==", "license": "MIT" }, + "node_modules/expo-symbols": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-55.0.3.tgz", + "integrity": "sha512-r3AnrAAPw/zqha6dBdkJV7ueELy/yyeEKU38qzFFz37w1mhcXobuXahnfPSnY54lKrTbqrSiFMj/aGh25ElnoQ==", + "license": "MIT", + "dependencies": { + "@expo-google-fonts/material-symbols": "^0.4.1", + "sf-symbols-typescript": "^2.0.0" + }, + "peerDependencies": { + "expo": "*", + "expo-font": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-system-ui": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-6.0.9.tgz", - "integrity": "sha512-eQTYGzw1V4RYiYHL9xDLYID3Wsec2aZS+ypEssmF64D38aDrqbDgz1a2MSlHLQp2jHXSs3FvojhZ9FVela1Zcg==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-55.0.5.tgz", + "integrity": "sha512-tcE0SJCfKZgESWUNBleqNIdgFZj6Y41WvgOpwMDhke9Fezwsput1MWz2L2QyHoeo1bUE5KuNuI5+nCWdecSnAQ==", "license": "MIT", "dependencies": { - "@react-native/normalize-colors": "0.81.5", + "@react-native/normalize-colors": "0.83.1", "debug": "^4.3.2" }, "peerDependencies": { @@ -16621,21 +16317,21 @@ } }, "node_modules/expo-updates": { - "version": "29.0.16", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-29.0.16.tgz", - "integrity": "sha512-E9/fxRz/Eurtc7hxeI/6ZPyHH3To9Xoccm1kXoICZTRojmuTo+dx0Xv53UHyHn4G5zGMezyaKF2Qtj3AKcT93w==", + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-55.0.7.tgz", + "integrity": "sha512-AkpyXJ2nRfKSB1MF3qkHYQeuG7Or9FMWcQAbrkIzETGeA3jpfPo0APvuq5PJjZf1VDX2AN3zznmYjrQ/MSODTA==", "license": "MIT", "dependencies": { "@expo/code-signing-certificates": "^0.0.6", - "@expo/plist": "^0.4.8", + "@expo/plist": "^0.5.2", "@expo/spawn-async": "^1.7.2", "arg": "4.1.0", "chalk": "^4.1.2", "debug": "^4.3.4", - "expo-eas-client": "~1.0.8", - "expo-manifests": "~1.0.10", - "expo-structured-headers": "~5.0.0", - "expo-updates-interface": "~2.0.0", + "expo-eas-client": "~55.0.2", + "expo-manifests": "~55.0.5", + "expo-structured-headers": "~55.0.0", + "expo-updates-interface": "~55.1.1", "getenv": "^2.0.0", "glob": "^13.0.0", "ignore": "^5.3.1", @@ -16651,9 +16347,9 @@ } }, "node_modules/expo-updates-interface": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-2.0.0.tgz", - "integrity": "sha512-pTzAIufEZdVPKql6iMi5ylVSPqV1qbEopz9G6TSECQmnNde2nwq42PxdFBaUEd8IZJ/fdJLQnOT3m6+XJ5s7jg==", + "version": "55.1.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-55.1.1.tgz", + "integrity": "sha512-++rlh9dNRUgm+uqN+x4vB/8ELidt0gc3kbwec55YzRizdD845kn5ufjTcGpkGs9SbAYHsP0eh8axlKHpY/v7Kg==", "license": "MIT", "peerDependencies": { "expo": "*" @@ -16697,15 +16393,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/expo/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/exponential-backoff": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", @@ -16757,11 +16444,14 @@ } }, "node_modules/express-rate-limit": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", - "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", + "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", "dev": true, "license": "MIT", + "dependencies": { + "ip-address": "10.0.1" + }, "engines": { "node": ">= 16" }, @@ -17022,7 +16712,7 @@ "version": "4.5.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -17046,6 +16736,18 @@ "reusify": "^1.0.4" } }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -17142,7 +16844,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -17162,6 +16864,12 @@ "node": "^12.20 || >= 14.13" } }, + "node_modules/fetch-nodeshim": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", + "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", + "license": "MIT" + }, "node_modules/fflate": { "version": "0.4.8", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", @@ -17528,7 +17236,7 @@ "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" @@ -17581,6 +17289,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17600,7 +17309,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -17761,6 +17470,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -17787,9 +17497,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.1.tgz", - "integrity": "sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==", + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -17840,18 +17550,6 @@ "node": ">=10.13.0" } }, - "node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", - "license": "MIT", - "dependencies": { - "ini": "^1.3.4" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -18011,19 +17709,25 @@ "node": ">= 0.4" } }, + "node_modules/hermes-compiler": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", + "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "license": "MIT" + }, "node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", "license": "MIT" }, "node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", "license": "MIT", "dependencies": { - "hermes-estree": "0.29.1" + "hermes-estree": "0.32.0" } }, "node_modules/hey-listen": { @@ -18048,12 +17752,11 @@ "license": "MIT" }, "node_modules/hono": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.7.tgz", - "integrity": "sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==", + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.9.tgz", + "integrity": "sha512-Eaw2YTGM6WOxA6CXbckaEvslr2Ne4NFsKrvc0v97JD5awbmeBLO5w9Ho9L9kmKonrwF9RJlW6BxT1PVv/agBHQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -18092,6 +17795,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, "license": "MIT" }, "node_modules/http-errors": { @@ -18145,6 +17849,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -18169,7 +17874,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -18251,6 +17956,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -18292,12 +17998,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, "node_modules/inline-style-prefixer": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", @@ -18330,6 +18030,16 @@ "loose-envify": "^1.0.0" } }, + "node_modules/ip-address": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -18361,6 +18071,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -18401,6 +18112,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -18435,9 +18147,9 @@ } }, "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -18559,7 +18271,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -18569,6 +18281,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -18609,7 +18322,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18756,6 +18469,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18816,7 +18530,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -18914,6 +18628,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -18927,9 +18642,10 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -18942,6 +18658,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -18956,6 +18673,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -18970,6 +18688,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -18996,10 +18715,27 @@ "node": ">= 0.4" } }, + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -19026,6 +18762,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -19040,6 +18777,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -19071,6 +18809,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -19104,6 +18843,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -19164,6 +18904,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -19176,6 +18917,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -19233,14 +18975,14 @@ } }, "node_modules/jest-expo": { - "version": "54.0.17", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-54.0.17.tgz", - "integrity": "sha512-LyIhrsP4xvHEEcR1R024u/LBj3uPpAgB+UljgV+YXWkEHjprnr0KpE4tROsMNYCVTM1pPlAnPuoBmn5gnAN9KA==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", + "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", "dev": true, "license": "MIT", "dependencies": { - "@expo/config": "~12.0.13", - "@expo/json-file": "^10.0.8", + "@expo/config": "~55.0.4", + "@expo/json-file": "^10.0.12", "@jest/create-cache-key-function": "^29.2.1", "@jest/globals": "^29.2.1", "babel-jest": "^29.2.1", @@ -19250,7 +18992,7 @@ "jest-watch-typeahead": "2.2.1", "json5": "^2.2.3", "lodash": "^4.17.19", - "react-test-renderer": "19.1.0", + "react-test-renderer": "19.2.0", "server-only": "^0.0.1", "stacktrace-js": "^2.0.2" }, @@ -19269,26 +19011,19 @@ } }, "node_modules/jest-expo/node_modules/react-test-renderer": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.1.0.tgz", - "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", + "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", "dev": true, "license": "MIT", "dependencies": { - "react-is": "^19.1.0", - "scheduler": "^0.26.0" + "react-is": "^19.2.0", + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.0" + "react": "^19.2.0" } }, - "node_modules/jest-expo/node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "dev": true, - "license": "MIT" - }, "node_modules/jest-get-type": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", @@ -19327,6 +19062,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -19389,6 +19125,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -19415,6 +19152,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -19435,6 +19173,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -19448,6 +19187,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -19480,6 +19220,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -19490,6 +19231,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -19523,6 +19265,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -19567,9 +19310,10 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -19816,7 +19560,7 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -19826,7 +19570,7 @@ "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", @@ -19850,7 +19594,7 @@ "version": "3.7.8", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/js-logger": { @@ -19994,6 +19738,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -20052,7 +19797,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "devOptional": true, + "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -20121,9 +19866,9 @@ } }, "node_modules/knip": { - "version": "5.83.0", - "resolved": "https://registry.npmjs.org/knip/-/knip-5.83.0.tgz", - "integrity": "sha512-FfmaHMntpZB13B1oJQMSs1hTOZxd0TOn+FYB3oWEI02XlxTW3RH4H7d8z5Us3g0ziHCYyl7z0B1xi8ENP3QEKA==", + "version": "5.83.1", + "resolved": "https://registry.npmjs.org/knip/-/knip-5.83.1.tgz", + "integrity": "sha512-av3ZG/Nui6S/BNL8Tmj12yGxYfTnwWnslouW97m40him7o8MwiMjZBY9TPvlEWUci45aVId0/HbgTwSKIDGpMw==", "dev": true, "funding": [ { @@ -20201,7 +19946,7 @@ "version": "2.12.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "picocolors": "^1.1.1", @@ -20239,7 +19984,7 @@ "arm64", "wasm32" ], - "devOptional": true, + "dev": true, "license": "MIT", "os": [ "darwin", @@ -20286,12 +20031,12 @@ "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.27.0.tgz", - "integrity": "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", "license": "MPL-2.0", "dependencies": { - "detect-libc": "^1.0.3" + "detect-libc": "^2.0.3" }, "engines": { "node": ">= 12.0.0" @@ -20301,16 +20046,17 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.27.0", - "lightningcss-darwin-x64": "1.27.0", - "lightningcss-freebsd-x64": "1.27.0", - "lightningcss-linux-arm-gnueabihf": "1.27.0", - "lightningcss-linux-arm64-gnu": "1.27.0", - "lightningcss-linux-arm64-musl": "1.27.0", - "lightningcss-linux-x64-gnu": "1.27.0", - "lightningcss-linux-x64-musl": "1.27.0", - "lightningcss-win32-arm64-msvc": "1.27.0", - "lightningcss-win32-x64-msvc": "1.27.0" + "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" } }, "node_modules/lightningcss-android-arm64": { @@ -20334,9 +20080,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", - "integrity": "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", "cpu": [ "arm64" ], @@ -20354,9 +20100,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", - "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", "cpu": [ "x64" ], @@ -20374,9 +20120,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", - "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", "cpu": [ "x64" ], @@ -20394,9 +20140,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", - "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", "cpu": [ "arm" ], @@ -20414,9 +20160,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", - "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", "cpu": [ "arm64" ], @@ -20434,9 +20180,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", - "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", "cpu": [ "arm64" ], @@ -20454,9 +20200,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", - "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", "cpu": [ "x64" ], @@ -20474,9 +20220,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", - "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", "cpu": [ "x64" ], @@ -20494,9 +20240,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", - "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", "cpu": [ "arm64" ], @@ -20514,9 +20260,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", - "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", "cpu": [ "x64" ], @@ -20534,21 +20280,19 @@ } }, "node_modules/lightningcss/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -20702,7 +20446,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -20719,7 +20463,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-fragments": "^0.2.1", @@ -20734,7 +20478,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -20746,7 +20490,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -20760,7 +20504,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -20773,7 +20517,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -20789,7 +20533,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -20802,7 +20546,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -20817,14 +20561,14 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "cliui": "^6.0.0", @@ -20847,7 +20591,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "camelcase": "^5.0.0", @@ -20909,6 +20653,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -20921,9 +20666,10 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -20972,7 +20718,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -21103,21 +20849,6 @@ "node": ">=20.19.4" } }, - "node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", - "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", - "license": "MIT" - }, - "node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", - "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.32.0" - } - }, "node_modules/metro-cache": { "version": "0.83.3", "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", @@ -21466,21 +21197,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "license": "MIT" }, - "node_modules/metro/node_modules/hermes-estree": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", - "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", - "license": "MIT" - }, - "node_modules/metro/node_modules/hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", - "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.32.0" - } - }, "node_modules/metro/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -21540,7 +21256,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "mime": "cli.js" @@ -21583,6 +21299,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -21622,6 +21339,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.1.2" @@ -21707,6 +21425,12 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/multitars": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/multitars/-/multitars-0.2.4.tgz", + "integrity": "sha512-XgLbg1HHchFauMCQPRwMj6MSyDd5koPlTA1hM3rUFkeXzGpjU/I9fP3to7yrObE9jcN8ChIOQGrM0tV0kUZaKg==", + "license": "MIT" + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -21789,12 +21513,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "license": "MIT" }, - "node_modules/nested-error-stacks": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", - "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", - "license": "MIT" - }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -21810,7 +21528,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -21833,7 +21551,7 @@ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "deprecated": "Use your platform's native DOMException instead", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -21853,7 +21571,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", @@ -21893,7 +21611,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -21953,6 +21671,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -22010,6 +21729,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -22155,6 +21875,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -22170,7 +21891,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-wsl": "^1.1.0" @@ -22183,7 +21904,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -22210,7 +21931,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "bl": "^4.1.0", @@ -22248,35 +21969,35 @@ } }, "node_modules/oxc-resolver": { - "version": "11.17.0", - "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.17.0.tgz", - "integrity": "sha512-R5P2Tw6th+nQJdNcZGfuppBS/sM0x1EukqYffmlfX2xXLgLGCCPwu4ruEr9Sx29mrpkHgITc130Qps2JR90NdQ==", + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.17.1.tgz", + "integrity": "sha512-pyRXK9kH81zKlirHufkFhOFBZRks8iAMLwPH8gU7lvKFiuzUH9L8MxDEllazwOb8fjXMcWjY1PMDfMJ2/yh5cw==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-resolver/binding-android-arm-eabi": "11.17.0", - "@oxc-resolver/binding-android-arm64": "11.17.0", - "@oxc-resolver/binding-darwin-arm64": "11.17.0", - "@oxc-resolver/binding-darwin-x64": "11.17.0", - "@oxc-resolver/binding-freebsd-x64": "11.17.0", - "@oxc-resolver/binding-linux-arm-gnueabihf": "11.17.0", - "@oxc-resolver/binding-linux-arm-musleabihf": "11.17.0", - "@oxc-resolver/binding-linux-arm64-gnu": "11.17.0", - "@oxc-resolver/binding-linux-arm64-musl": "11.17.0", - "@oxc-resolver/binding-linux-ppc64-gnu": "11.17.0", - "@oxc-resolver/binding-linux-riscv64-gnu": "11.17.0", - "@oxc-resolver/binding-linux-riscv64-musl": "11.17.0", - "@oxc-resolver/binding-linux-s390x-gnu": "11.17.0", - "@oxc-resolver/binding-linux-x64-gnu": "11.17.0", - "@oxc-resolver/binding-linux-x64-musl": "11.17.0", - "@oxc-resolver/binding-openharmony-arm64": "11.17.0", - "@oxc-resolver/binding-wasm32-wasi": "11.17.0", - "@oxc-resolver/binding-win32-arm64-msvc": "11.17.0", - "@oxc-resolver/binding-win32-ia32-msvc": "11.17.0", - "@oxc-resolver/binding-win32-x64-msvc": "11.17.0" + "@oxc-resolver/binding-android-arm-eabi": "11.17.1", + "@oxc-resolver/binding-android-arm64": "11.17.1", + "@oxc-resolver/binding-darwin-arm64": "11.17.1", + "@oxc-resolver/binding-darwin-x64": "11.17.1", + "@oxc-resolver/binding-freebsd-x64": "11.17.1", + "@oxc-resolver/binding-linux-arm-gnueabihf": "11.17.1", + "@oxc-resolver/binding-linux-arm-musleabihf": "11.17.1", + "@oxc-resolver/binding-linux-arm64-gnu": "11.17.1", + "@oxc-resolver/binding-linux-arm64-musl": "11.17.1", + "@oxc-resolver/binding-linux-ppc64-gnu": "11.17.1", + "@oxc-resolver/binding-linux-riscv64-gnu": "11.17.1", + "@oxc-resolver/binding-linux-riscv64-musl": "11.17.1", + "@oxc-resolver/binding-linux-s390x-gnu": "11.17.1", + "@oxc-resolver/binding-linux-x64-gnu": "11.17.1", + "@oxc-resolver/binding-linux-x64-musl": "11.17.1", + "@oxc-resolver/binding-openharmony-arm64": "11.17.1", + "@oxc-resolver/binding-wasm32-wasi": "11.17.1", + "@oxc-resolver/binding-win32-arm64-msvc": "11.17.1", + "@oxc-resolver/binding-win32-ia32-msvc": "11.17.1", + "@oxc-resolver/binding-win32-x64-msvc": "11.17.1" } }, "node_modules/p-limit": { @@ -22341,6 +22062,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -22464,9 +22186,9 @@ } }, "node_modules/patch-package/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -22610,6 +22332,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -22638,6 +22361,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -22650,6 +22374,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -22663,6 +22388,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -22675,6 +22401,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -22690,6 +22417,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -22774,6 +22502,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", @@ -22791,6 +22520,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, "funding": [ { "type": "opencollective", @@ -22816,6 +22546,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, "funding": [ { "type": "opencollective", @@ -22858,6 +22589,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -22883,6 +22615,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -22899,9 +22632,9 @@ "license": "MIT" }, "node_modules/posthog-js": { - "version": "1.344.0", - "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.344.0.tgz", - "integrity": "sha512-AorrWVDTeK99SxRqeeHlF101flAmbUNfo8nHUsJ6JAhoLzJwubELpsIbVYwKa2XJMTnp1E7FrvvK6XQiocokPg==", + "version": "1.345.1", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.345.1.tgz", + "integrity": "sha512-z1fAhhole4O3jwxoIaH4EaerAB/RPAqGsp+mZZsBT2y4ATNgzAFXicjZsV7yRF0BIY3WgZ9A1S/A2BMCQOjp7g==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -22910,7 +22643,7 @@ "@opentelemetry/resources": "^2.2.0", "@opentelemetry/sdk-logs": "^0.208.0", "@posthog/core": "1.21.0", - "@posthog/types": "1.344.0", + "@posthog/types": "1.345.1", "core-js": "^3.38.1", "dompurify": "^3.3.1", "fflate": "^0.4.8", @@ -23010,6 +22743,7 @@ "version": "3.8.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -23120,18 +22854,6 @@ } } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -23195,7 +22917,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/prompts": { @@ -23291,6 +23013,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, "funding": [ { "type": "individual", @@ -23315,7 +23038,7 @@ "version": "6.14.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -23428,34 +23151,10 @@ "url": "https://opencollective.com/express" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -23502,23 +23201,17 @@ } }, "node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.0" + "react": "^19.2.0" } }, - "node_modules/react-dom/node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT" - }, "node_modules/react-error-boundary": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", @@ -23576,44 +23269,45 @@ "license": "MIT" }, "node_modules/react-native": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", - "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz", + "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==", "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.81.5", - "@react-native/codegen": "0.81.5", - "@react-native/community-cli-plugin": "0.81.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", + "@react-native/assets-registry": "0.83.1", + "@react-native/codegen": "0.83.1", + "@react-native/community-cli-plugin": "0.83.1", + "@react-native/gradle-plugin": "0.83.1", + "@react-native/js-polyfills": "0.83.1", + "@react-native/normalize-colors": "0.83.1", + "@react-native/virtualized-lists": "0.83.1", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", + "hermes-compiler": "0.14.0", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.83.1", - "metro-source-map": "^0.83.1", + "metro-runtime": "^0.83.3", + "metro-source-map": "^0.83.3", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.26.0", + "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", - "ws": "^6.2.3", + "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { @@ -23623,8 +23317,8 @@ "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.1.0", - "react": "^19.1.0" + "@types/react": "^19.1.1", + "react": "^19.2.0" }, "peerDependenciesMeta": { "@types/react": { @@ -23659,27 +23353,267 @@ "semver": "^7.6.3" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react": ">=18", - "react-native": "*", - "react-native-reanimated": ">=3.6.2", - "tailwindcss": "~3" + "node": ">=18" + }, + "peerDependencies": { + "react": ">=18", + "react-native": "*", + "react-native-reanimated": ">=3.6.2", + "tailwindcss": "~3" + }, + "peerDependenciesMeta": { + "react-native-safe-area-context": { + "optional": true + }, + "react-native-svg": { + "optional": true + } + } + }, + "node_modules/react-native-css-interop/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.27.0.tgz", + "integrity": "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.27.0", + "lightningcss-darwin-x64": "1.27.0", + "lightningcss-freebsd-x64": "1.27.0", + "lightningcss-linux-arm-gnueabihf": "1.27.0", + "lightningcss-linux-arm64-gnu": "1.27.0", + "lightningcss-linux-arm64-musl": "1.27.0", + "lightningcss-linux-x64-gnu": "1.27.0", + "lightningcss-linux-x64-musl": "1.27.0", + "lightningcss-win32-arm64-msvc": "1.27.0", + "lightningcss-win32-x64-msvc": "1.27.0" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-darwin-arm64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", + "integrity": "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-darwin-x64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", + "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-freebsd-x64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", + "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", + "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", + "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", + "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", + "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-x64-musl": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", + "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", + "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", + "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" }, - "peerDependenciesMeta": { - "react-native-safe-area-context": { - "optional": true - }, - "react-native-svg": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/react-native-css-interop/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -23705,9 +23639,9 @@ } }, "node_modules/react-native-gesture-handler": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.28.0.tgz", - "integrity": "sha512-0msfJ1vRxXKVgTgvL+1ZOoYw3/0z1R+Ked0+udoJhyplC2jbVKIJ8Z1bzWdpQRCV3QcQ87Op0zJVE5DhKK2A0A==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", + "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", "license": "MIT", "dependencies": { "@egjs/hammerjs": "^2.0.17", @@ -23743,9 +23677,9 @@ } }, "node_modules/react-native-keyboard-controller": { - "version": "1.18.5", - "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.18.5.tgz", - "integrity": "sha512-wbYN6Tcu3G5a05dhRYBgjgd74KqoYWuUmroLpigRg9cXy5uYo7prTMIvMgvLtARQtUF7BOtFggUnzgoBOgk0TQ==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.20.4.tgz", + "integrity": "sha512-IW2VatYwYhA3uRnGCOsEGARNjCYcYLUJX8KeuNz9GOMDWdLBVZWI+cy28+V4R2WvnToIIFku1NICbBSsQZi/8w==", "license": "MIT", "dependencies": { "react-native-is-edge-to-edge": "^1.2.1" @@ -23767,9 +23701,9 @@ } }, "node_modules/react-native-pager-view": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.9.1.tgz", - "integrity": "sha512-uUT0MMMbNtoSbxe9pRvdJJKEi9snjuJ3fXlZhG8F2vVMOBJVt/AFtqMPUHu9yMflmqOr08PewKzj9EPl/Yj+Gw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-8.0.0.tgz", + "integrity": "sha512-oAwlWT1lhTkIs9HhODnjNNl/owxzn9DP1MbP+az6OTUdgbmzA16Up83sBH8NRKwrH8rNm7iuWnX1qMqiiWOLhg==", "license": "MIT", "peerDependencies": { "react": "*", @@ -23829,13 +23763,12 @@ } }, "node_modules/react-native-screens": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.16.0.tgz", - "integrity": "sha512-yIAyh7F/9uWkOzCi1/2FqvNvK6Wb9Y1+Kzn16SuGfN9YFJDTbwlzGRvePCNTOX0recpLQF3kc2FmvMUhyTCH1Q==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.22.0.tgz", + "integrity": "sha512-f1AtzxmgZlKeoioWzdNdQ/4SuqZ/w370KCBnA666pN8UZ33X4PkVJ/9v9y2y5sj0cXKEcgeN3Br9lmeDRQ735A==", "license": "MIT", "dependencies": { "react-freeze": "^1.0.0", - "react-native-is-edge-to-edge": "^1.2.1", "warn-once": "^0.1.0" }, "peerDependencies": { @@ -23859,9 +23792,9 @@ } }, "node_modules/react-native-svg": { - "version": "15.12.1", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.12.1.tgz", - "integrity": "sha512-vCuZJDf8a5aNC2dlMovEv4Z0jjEUET53lm/iILFnFewa15b4atjVxU6Wirm6O9y6dEsdjDZVD7Q3QM4T1wlI8g==", + "version": "15.15.1", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.1.tgz", + "integrity": "sha512-ZUD1xwc3Hwo4cOmOLumjJVoc7lEf9oQFlHnLmgccLC19fNm6LVEdtB+Cnip6gEi0PG3wfvVzskViEtrySQP8Fw==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -24074,25 +24007,19 @@ "node": ">=10" } }, - "node_modules/react-native/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "hermes-parser": "0.32.0" } }, - "node_modules/react-native/node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT" - }, "node_modules/react-native/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -24102,20 +24029,31 @@ } }, "node_modules/react-native/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/react-refresh": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", - "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -24212,7 +24150,7 @@ "version": "19.0.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.0.0.tgz", "integrity": "sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "react-is": "^19.0.0", @@ -24222,6 +24160,13 @@ "react": "^19.0.0" } }, + "node_modules/react-test-renderer/node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "dev": true, + "license": "MIT" + }, "node_modules/react-timer-mixin": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz", @@ -24232,6 +24177,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "license": "MIT", "dependencies": { "pify": "^2.3.0" @@ -24251,7 +24197,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -24266,6 +24212,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -24278,6 +24225,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -24436,7 +24384,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/require-resolve": { @@ -24449,28 +24397,6 @@ "x-path": "^0.0.2" } }, - "node_modules/requireg": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", - "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", - "dependencies": { - "nested-error-stacks": "~2.0.1", - "rc": "~1.2.7", - "resolve": "~1.7.1" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/requireg/node_modules/resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.5" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -24501,6 +24427,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -24518,18 +24445,6 @@ "node": ">=8" } }, - "node_modules/resolve-global": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", - "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", - "license": "MIT", - "dependencies": { - "global-dirs": "^0.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -24549,6 +24464,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -24558,7 +24474,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", @@ -24740,10 +24656,9 @@ } }, "node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", - "devOptional": true, + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/semver": { @@ -24849,7 +24764,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/set-function-length": { @@ -25034,22 +24949,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sharp-cli/node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sharp-cli/node_modules/minimatch": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", @@ -25077,9 +24976,9 @@ } }, "node_modules/sharp/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -25257,7 +25156,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", @@ -25272,7 +25171,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -25285,7 +25184,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -25295,7 +25194,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/sliced": { @@ -25535,14 +25434,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/strict-url-sanitise/-/strict-url-sanitise-0.0.1.tgz", "integrity": "sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -25575,32 +25474,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string-width/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -25715,24 +25588,11 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25742,6 +25602,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -25763,7 +25624,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -25826,9 +25687,9 @@ } }, "node_modules/supabase": { - "version": "2.75.1", - "resolved": "https://registry.npmjs.org/supabase/-/supabase-2.75.1.tgz", - "integrity": "sha512-7cIOjjUSxNNaVFAmtrVc9hQAzzFYj+FHzRWe7dOfw5SPTcyjsKDRsQM3FTHW/8O33BQITxVKCL3S/oXsfMV2bA==", + "version": "2.76.6", + "resolved": "https://registry.npmjs.org/supabase/-/supabase-2.76.6.tgz", + "integrity": "sha512-VewP9LqtOhJZaZR75vcM99Q8exjPjBm9YiMvBn04zx1ikdX1DNPmzAilBJLK/ivjPDxMTlmag6+iJvJ+B+mIOA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -26005,6 +25866,7 @@ "version": "3.4.19", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -26051,6 +25913,7 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -26060,6 +25923,7 @@ "version": "7.5.7", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -26076,6 +25940,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -26093,15 +25958,6 @@ "node": ">=6.0.0" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/temp/node_modules/rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -26377,9 +26233,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -26392,7 +26248,7 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -26436,7 +26292,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/tsconfig-paths": { @@ -26482,7 +26338,7 @@ "version": "4.21.0", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "esbuild": "~0.27.0", @@ -26499,9 +26355,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", "cpu": [ "ppc64" ], @@ -26516,9 +26372,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", "cpu": [ "arm" ], @@ -26533,9 +26389,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", "cpu": [ "arm64" ], @@ -26550,9 +26406,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", "cpu": [ "x64" ], @@ -26567,9 +26423,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", "cpu": [ "arm64" ], @@ -26584,9 +26440,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", "cpu": [ "x64" ], @@ -26601,9 +26457,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", "cpu": [ "arm64" ], @@ -26618,9 +26474,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", "cpu": [ "x64" ], @@ -26635,9 +26491,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", "cpu": [ "arm" ], @@ -26652,9 +26508,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", "cpu": [ "arm64" ], @@ -26669,9 +26525,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", "cpu": [ "ia32" ], @@ -26686,9 +26542,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", "cpu": [ "loong64" ], @@ -26703,9 +26559,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", "cpu": [ "mips64el" ], @@ -26720,9 +26576,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", "cpu": [ "ppc64" ], @@ -26737,9 +26593,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", "cpu": [ "riscv64" ], @@ -26754,9 +26610,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", "cpu": [ "s390x" ], @@ -26771,9 +26627,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", "cpu": [ "x64" ], @@ -26788,9 +26644,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", "cpu": [ "arm64" ], @@ -26805,9 +26661,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", "cpu": [ "x64" ], @@ -26822,9 +26678,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", "cpu": [ "arm64" ], @@ -26839,9 +26695,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", "cpu": [ "x64" ], @@ -26856,9 +26712,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", "cpu": [ "arm64" ], @@ -26873,9 +26729,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", "cpu": [ "x64" ], @@ -26890,9 +26746,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", "cpu": [ "arm64" ], @@ -26907,9 +26763,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", "cpu": [ "ia32" ], @@ -26924,9 +26780,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", "cpu": [ "x64" ], @@ -26941,10 +26797,10 @@ } }, "node_modules/tsx/node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "devOptional": true, + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -26954,32 +26810,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, "node_modules/type-check": { @@ -27019,7 +26875,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -27117,16 +26973,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.54.0.tgz", - "integrity": "sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.55.0.tgz", + "integrity": "sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.54.0", - "@typescript-eslint/parser": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0", - "@typescript-eslint/utils": "8.54.0" + "@typescript-eslint/eslint-plugin": "8.55.0", + "@typescript-eslint/parser": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/utils": "8.55.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -27188,6 +27044,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "dev": true, "license": "MIT", "engines": { "node": ">=18.17" @@ -27239,23 +27096,11 @@ "node": ">=4" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -27418,6 +27263,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -27442,13 +27288,14 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -27546,7 +27393,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -27620,6 +27467,12 @@ "node": ">=12" } }, + "node_modules/whatwg-url-minimum": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/whatwg-url-minimum/-/whatwg-url-minimum-0.1.1.tgz", + "integrity": "sha512-u2FNVjFVFZhdjb502KzXy1gKn1mEisQRJssmSJT8CPhZdZa0AP6VCbWlXERKyGu0l09t0k50FiDiralpGhBxgA==", + "license": "MIT" + }, "node_modules/whatwg-url-without-unicode": { "version": "8.0.0-3", "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz", @@ -27726,7 +27579,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/which-typed-array": { @@ -27750,12 +27603,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wonka": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", - "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", - "license": "MIT" - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -27782,25 +27629,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -27971,7 +27799,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -28009,16 +27837,16 @@ } }, "node_modules/zod-validation-error": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", - "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.4.tgz", + "integrity": "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==", "dev": true, "license": "MIT", "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "zod": "^3.25.0 || ^4.0.0" + "zod": "^3.24.4" } }, "node_modules/zustand": { diff --git a/package.json b/package.json index fcbfed2f9..06e7612bb 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "@quidone/react-native-wheel-picker": "^1.6.1", "@react-native-async-storage/async-storage": "2.2.0", "@react-native-community/netinfo": "11.4.1", - "@react-native-community/slider": "5.0.1", + "@react-native-community/slider": "5.1.1", "@react-native-documents/picker": "^10.1.5", "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/native": "^7.1.6", @@ -101,33 +101,33 @@ "bidirectional-map": "^1.1.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "eslint-config-expo": "~10.0.0", + "eslint-config-expo": "~55.0.0", "eslint-plugin-drizzle": "^0.2.3", - "expo": "^54.0.33", - "expo-application": "~7.0.8", - "expo-audio": "~1.1.1", + "expo": "^55.0.0-preview.10", + "expo-application": "~55.0.5", + "expo-audio": "~55.0.5", "expo-av": "~16.0.8", - "expo-build-properties": "~1.0.10", - "expo-clipboard": "^8.0.7", - "expo-constants": "~18.0.13", - "expo-dev-client": "~6.0.20", - "expo-device": "~8.0.10", + "expo-build-properties": "~55.0.6", + "expo-clipboard": "~55.0.5", + "expo-constants": "~55.0.4", + "expo-dev-client": "~55.0.5", + "expo-device": "~55.0.6", "expo-drizzle-studio-plugin": "^0.2.0", - "expo-file-system": "~19.0.21", - "expo-font": "~14.0.11", - "expo-haptics": "^15.0.7", - "expo-image": "~3.0.11", - "expo-linear-gradient": "~15.0.8", - "expo-linking": "~8.0.11", - "expo-localization": "~17.0.8", - "expo-manifests": "~1.0.10", - "expo-router": "~6.0.23", - "expo-sharing": "^14.0.7", - "expo-splash-screen": "~31.0.13", - "expo-sqlite": "~16.0.10", - "expo-status-bar": "~3.0.9", - "expo-system-ui": "~6.0.9", - "expo-updates": "~29.0.16", + "expo-file-system": "~55.0.5", + "expo-font": "~55.0.3", + "expo-haptics": "~55.0.5", + "expo-image": "~55.0.3", + "expo-linear-gradient": "~55.0.5", + "expo-linking": "~55.0.4", + "expo-localization": "~55.0.5", + "expo-manifests": "~55.0.5", + "expo-router": "~55.0.0-preview.7", + "expo-sharing": "~55.0.6", + "expo-splash-screen": "~55.0.5", + "expo-sqlite": "~55.0.5", + "expo-status-bar": "~55.0.2", + "expo-system-ui": "~55.0.5", + "expo-updates": "~55.0.7", "js-logger": "^1.6.1", "lucide-react-native": "^0.510.0", "moti": "^0.30.0", @@ -135,23 +135,23 @@ "posthog-js": "^1.344.0", "posthog-react-native": "^4.31.0", "posthog-react-native-session-replay": "^1.2.4", - "react": "19.1.0", + "react": "19.2.0", "react-compiler-runtime": "^19.0.0-beta-af1b7da-20250417", - "react-dom": "19.1.0", + "react-dom": "19.2.0", "react-hook-form": "^7.54.2", - "react-native": "0.81.5", + "react-native": "0.83.1", "react-native-audio-concat": "^0.9.0", "react-native-element-dropdown": "2.12.2", - "react-native-gesture-handler": "~2.28.0", - "react-native-keyboard-controller": "1.18.5", + "react-native-gesture-handler": "~2.30.0", + "react-native-keyboard-controller": "1.20.4", "react-native-onboarding": "^1.0.6", - "react-native-pager-view": "6.9.1", + "react-native-pager-view": "8.0.0", "react-native-reanimated": "^4.2.1", "react-native-reorderable-list": "^0.18.0", "react-native-safe-area-context": "~5.6.0", - "react-native-screens": "~4.16.0", + "react-native-screens": "~4.22.0", "react-native-sortables": "^1.9.4", - "react-native-svg": "15.12.1", + "react-native-svg": "15.15.1", "react-native-url-polyfill": "^2.0.0", "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", @@ -176,10 +176,10 @@ "@types/default-gateway": "^7.2.2", "@types/jest": "^29.5.12", "@types/node": "^22.18.9", - "@types/react": "~19.1.10", + "@types/react": "~19.2.2", "@types/react-test-renderer": "^19.0.0", "babel-plugin-inline-import": "^3.0.0", - "babel-preset-expo": "^54.0.6", + "babel-preset-expo": "~55.0.0", "cross-env": "^10.1.0", "default-gateway": "^7.2.2", "dotenv": "^16.4.7", @@ -192,7 +192,7 @@ "eslint-plugin-react-hooks": "^7.0.1", "expo-atlas": "^0.4.0", "jest": "^29.2.1", - "jest-expo": "~54.0.17", + "jest-expo": "~55.0.6", "jiti": "^2.6.1", "knip": "^5.64.2", "metro-react-native-babel-transformer": "^0.77.0", @@ -218,9 +218,9 @@ } }, "schema-utils": "3.1.1", - "react": "19.1.0", - "react-dom": "19.1.0", - "@types/react": "~19.1.10", + "react": "19.2.0", + "react-dom": "19.2.0", + "@types/react": "~19.2.2", "jest-snapshot-prettier": "npm:prettier@^3.6.2" }, "private": true From 90e2bfccc19cd8cd0b8f83db81a90c665ae574ec Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 9 Feb 2026 20:57:56 -0600 Subject: [PATCH 029/143] upgrade remaining dependencies --- package-lock.json | 786 +++++++++++++++++++++++++++++++--------------- package.json | 45 ++- 2 files changed, 556 insertions(+), 275 deletions(-) diff --git a/package-lock.json b/package-lock.json index 18bd1f6be..80214ac8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,18 +16,18 @@ "@gorhom/bottom-sheet": "^5.2.8", "@hookform/resolvers": "^5.0.1", "@legendapp/list": "^2.0.12", - "@op-engineering/op-sqlite": "^14.1.4", + "@op-engineering/op-sqlite": "^15.2.5", "@powersync/attachments": "^2.4.0", - "@powersync/drizzle-driver": "^0.6.0", - "@powersync/op-sqlite": "^0.7.11", + "@powersync/drizzle-driver": "^0.7.2", + "@powersync/op-sqlite": "^0.8.0", "@powersync/react-native": "^1.25.1", "@powersync/tanstack-react-query": "^0.1.6", "@powersync/web": "^1.27.1", "@quidone/react-native-wheel-picker": "^1.6.1", "@react-native-async-storage/async-storage": "2.2.0", - "@react-native-community/netinfo": "11.4.1", - "@react-native-community/slider": "5.1.1", - "@react-native-documents/picker": "^10.1.5", + "@react-native-community/netinfo": "11.5.2", + "@react-native-community/slider": "5.1.2", + "@react-native-documents/picker": "^12.0.1", "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/native": "^7.1.6", "@react-navigation/native-stack": "^7.3.10", @@ -47,7 +47,7 @@ "@supabase/supabase-js": "^2.53.0", "@tanstack/react-query": "^5.84.0", "@tanstack/react-query-persist-client": "^5.84.0", - "babel-plugin-react-compiler": "^19.0.0-beta-af1b7da-20250417", + "babel-plugin-react-compiler": "^1.0.0", "base64-arraybuffer": "^1.0.2", "bidirectional-map": "^1.1.1", "class-variance-authority": "^0.7.1", @@ -57,13 +57,12 @@ "expo": "^55.0.0-preview.10", "expo-application": "~55.0.5", "expo-audio": "~55.0.5", - "expo-av": "~16.0.8", "expo-build-properties": "~55.0.6", "expo-clipboard": "~55.0.5", "expo-constants": "~55.0.4", "expo-dev-client": "~55.0.5", "expo-device": "~55.0.6", - "expo-drizzle-studio-plugin": "^0.2.0", + "expo-drizzle-studio-plugin": "^0.2.1", "expo-file-system": "~55.0.5", "expo-font": "~55.0.3", "expo-haptics": "~55.0.5", @@ -80,30 +79,29 @@ "expo-system-ui": "~55.0.5", "expo-updates": "~55.0.7", "js-logger": "^1.6.1", - "lucide-react-native": "^0.510.0", + "lucide-react-native": "^0.563.0", "moti": "^0.30.0", "nativewind": "^4.2.1", - "posthog-js": "^1.344.0", + "posthog-js": "^1.345.1", "posthog-react-native": "^4.31.0", "posthog-react-native-session-replay": "^1.2.4", "react": "19.2.0", - "react-compiler-runtime": "^19.0.0-beta-af1b7da-20250417", + "react-compiler-runtime": "^1.0.0", "react-dom": "19.2.0", "react-hook-form": "^7.54.2", "react-native": "0.83.1", "react-native-audio-concat": "^0.9.0", - "react-native-element-dropdown": "2.12.2", + "react-native-element-dropdown": "2.12.4", "react-native-gesture-handler": "~2.30.0", - "react-native-keyboard-controller": "1.20.4", + "react-native-keyboard-controller": "1.20.7", "react-native-onboarding": "^1.0.6", "react-native-pager-view": "8.0.0", "react-native-reanimated": "^4.2.1", "react-native-reorderable-list": "^0.18.0", "react-native-safe-area-context": "~5.6.0", - "react-native-screens": "~4.22.0", - "react-native-sortables": "^1.9.4", - "react-native-svg": "15.15.1", - "react-native-url-polyfill": "^2.0.0", + "react-native-screens": "~4.23.0", + "react-native-svg": "15.15.3", + "react-native-url-polyfill": "^3.0.0", "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", "react-native-worklets": "^0.7.2", @@ -119,23 +117,22 @@ "@babel/plugin-transform-async-generator-functions": "^7.26.8", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@eslint/compat": "^1.2.4", - "@libsql/client": "^0.14.0", + "@libsql/client": "^0.17.0", "@modelcontextprotocol/sdk": "^1.0.4", "@react-native-community/cli": "latest", "@total-typescript/ts-reset": "^0.6.1", "@types/bidirectional-map": "^1.0.4", "@types/default-gateway": "^7.2.2", - "@types/jest": "^29.5.12", - "@types/node": "^22.18.9", + "@types/jest": "^30.0.0", + "@types/node": "^25.2.2", "@types/react": "~19.2.2", "@types/react-test-renderer": "^19.0.0", "babel-plugin-inline-import": "^3.0.0", "babel-preset-expo": "~55.0.0", "cross-env": "^10.1.0", "default-gateway": "^7.2.2", - "dotenv": "^16.4.7", "drizzle-kit": "^0.31.4", - "drizzle-orm": "^0.44.4", + "drizzle-orm": "^0.45.1", "eslint": "^9.38.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-react": "^7.37.4", @@ -149,7 +146,7 @@ "metro-react-native-babel-transformer": "^0.77.0", "patch-package": "^8.0.1", "prettier": "^3.6.2", - "prettier-plugin-tailwindcss": "^0.6.14", + "prettier-plugin-tailwindcss": "^0.7.2", "react-native-svg-transformer": "^1.5.1", "react-test-renderer": "19.0.0", "sharp-cli": "^5.2.0", @@ -5771,6 +5768,16 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -5829,6 +5836,16 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/globals": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", @@ -5845,6 +5862,30 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/reporters": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", @@ -6059,23 +6100,23 @@ } }, "node_modules/@libsql/client": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.14.0.tgz", - "integrity": "sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", + "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", "dev": true, "license": "MIT", "dependencies": { - "@libsql/core": "^0.14.0", - "@libsql/hrana-client": "^0.7.0", + "@libsql/core": "^0.17.0", + "@libsql/hrana-client": "^0.9.0", "js-base64": "^3.7.5", - "libsql": "^0.4.4", + "libsql": "^0.5.22", "promise-limit": "^2.7.0" } }, "node_modules/@libsql/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.14.0.tgz", - "integrity": "sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", + "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", "dev": true, "license": "MIT", "dependencies": { @@ -6083,9 +6124,9 @@ } }, "node_modules/@libsql/darwin-arm64": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.4.7.tgz", - "integrity": "sha512-yOL742IfWUlUevnI5PdnIT4fryY3LYTdLm56bnY0wXBw7dhFcnjuA7jrH3oSVz2mjZTHujxoITgAE7V6Z+eAbg==", + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.5.22.tgz", + "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", "cpu": [ "arm64" ], @@ -6097,9 +6138,9 @@ ] }, "node_modules/@libsql/darwin-x64": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.4.7.tgz", - "integrity": "sha512-ezc7V75+eoyyH07BO9tIyJdqXXcRfZMbKcLCeF8+qWK5nP8wWuMcfOVywecsXGRbT99zc5eNra4NEx6z5PkSsA==", + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.5.22.tgz", + "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", "cpu": [ "x64" ], @@ -6111,26 +6152,72 @@ ] }, "node_modules/@libsql/hrana-client": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.7.0.tgz", - "integrity": "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", + "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", "dev": true, "license": "MIT", "dependencies": { - "@libsql/isomorphic-fetch": "^0.3.1", "@libsql/isomorphic-ws": "^0.1.5", + "cross-fetch": "^4.0.0", "js-base64": "^3.7.5", "node-fetch": "^3.3.2" } }, - "node_modules/@libsql/isomorphic-fetch": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.3.1.tgz", - "integrity": "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==", + "node_modules/@libsql/hrana-client/node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", "dev": true, "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/@libsql/hrana-client/node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { - "node": ">=18.0.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@libsql/hrana-client/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@libsql/hrana-client/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@libsql/hrana-client/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/@libsql/isomorphic-ws": { @@ -6144,10 +6231,38 @@ "ws": "^8.13.0" } }, + "node_modules/@libsql/linux-arm-gnueabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-gnueabihf/-/linux-arm-gnueabihf-0.5.22.tgz", + "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-arm-musleabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-musleabihf/-/linux-arm-musleabihf-0.5.22.tgz", + "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@libsql/linux-arm64-gnu": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.4.7.tgz", - "integrity": "sha512-WlX2VYB5diM4kFfNaYcyhw5y+UJAI3xcMkEUJZPtRDEIu85SsSFrQ+gvoKfcVh76B//ztSeEX2wl9yrjF7BBCA==", + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.5.22.tgz", + "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", "cpu": [ "arm64" ], @@ -6159,9 +6274,9 @@ ] }, "node_modules/@libsql/linux-arm64-musl": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.4.7.tgz", - "integrity": "sha512-6kK9xAArVRlTCpWeqnNMCoXW1pe7WITI378n4NpvU5EJ0Ok3aNTIC2nRPRjhro90QcnmLL1jPcrVwO4WD1U0xw==", + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.5.22.tgz", + "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", "cpu": [ "arm64" ], @@ -6173,9 +6288,9 @@ ] }, "node_modules/@libsql/linux-x64-gnu": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.4.7.tgz", - "integrity": "sha512-CMnNRCmlWQqqzlTw6NeaZXzLWI8bydaXDke63JTUCvu8R+fj/ENsLrVBtPDlxQ0wGsYdXGlrUCH8Qi9gJep0yQ==", + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.5.22.tgz", + "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", "cpu": [ "x64" ], @@ -6187,9 +6302,9 @@ ] }, "node_modules/@libsql/linux-x64-musl": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.4.7.tgz", - "integrity": "sha512-nI6tpS1t6WzGAt1Kx1n1HsvtBbZ+jHn0m7ogNNT6pQHZQj7AFFTIMeDQw/i/Nt5H38np1GVRNsFe99eSIMs9XA==", + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.5.22.tgz", + "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", "cpu": [ "x64" ], @@ -6201,9 +6316,9 @@ ] }, "node_modules/@libsql/win32-x64-msvc": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.4.7.tgz", - "integrity": "sha512-7pJzOWzPm6oJUxml+PCDRzYQ4A1hTMHAciTAHfFK4fkbDZX33nWPVG7Y3vqdKtslcwAzwmrNDc6sXy2nwWnbiw==", + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.5.22.tgz", + "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", "cpu": [ "x64" ], @@ -6395,12 +6510,13 @@ } }, "node_modules/@op-engineering/op-sqlite": { - "version": "14.1.4", - "resolved": "https://registry.npmjs.org/@op-engineering/op-sqlite/-/op-sqlite-14.1.4.tgz", - "integrity": "sha512-ZIZAqfHUKIjSxhaxWovEz4kCp6Gtoi8RPnJ36lPwTr73c7pEFNidE2vFm0dMBEj2ikm9wfYkab1/boW98SkVKA==", + "version": "15.2.5", + "resolved": "https://registry.npmjs.org/@op-engineering/op-sqlite/-/op-sqlite-15.2.5.tgz", + "integrity": "sha512-Vmgwt0AzY7qoge3X6EONhsb5NlM2yoQUF0/lseUWBelfc9BUili7/DFsFsS73cvtYWlwPpqeTGOoce5mzHozBw==", "license": "MIT", "workspaces": [ - "example" + "example", + "node" ], "peerDependencies": { "react": "*", @@ -6973,9 +7089,9 @@ } }, "node_modules/@powersync/common": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.45.0.tgz", - "integrity": "sha512-C0r0Lago5MPcGiXSQhX6CDEqmHuMLjHZJzHjk61un1cvn+7SDoJrX1KTln+HuvoLovBTKK/DUJoAGzpTCIFF5Q==", + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", + "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", "license": "Apache-2.0", "dependencies": { "async-mutex": "^0.5.0", @@ -6983,27 +7099,30 @@ } }, "node_modules/@powersync/drizzle-driver": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@powersync/drizzle-driver/-/drizzle-driver-0.6.0.tgz", - "integrity": "sha512-O1izduCdV6V9QO3ibcDyGkbvbc1fuUmQkh6UxYXClKdIdx+8+cOeWy2O97IR2Iu55XWWI6nZB4MjbZIUGHgeAw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@powersync/drizzle-driver/-/drizzle-driver-0.7.2.tgz", + "integrity": "sha512-urzkvimN44qWufmNonDdvwI3tcN9qFA0XB6BpoQDXFonkRzjunnZiUHas558PdDiw98AEJ4bD+FbtvvgJKzDcw==", "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.1" + }, "peerDependencies": { - "@powersync/common": "^1.38.0", + "@powersync/common": "^1.46.0", "drizzle-orm": "<1.0.0" } }, "node_modules/@powersync/op-sqlite": { - "version": "0.7.18", - "resolved": "https://registry.npmjs.org/@powersync/op-sqlite/-/op-sqlite-0.7.18.tgz", - "integrity": "sha512-25d+Wm/qeB6o4gButieNm372frPwLCHzmgp3jf4CSWmm+PMeu2FPTFsv+x2jsF4aVPy7fkTItCRXlvqZS3t2fQ==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@powersync/op-sqlite/-/op-sqlite-0.8.0.tgz", + "integrity": "sha512-1FNzuSipyGCtxROkhg2DG7mOZjOtPMTj+YEgHqSVFuMdrkzjx31jmf+Lw5VI+UeCWNSUNuUcD/UMrrEUAmRxBw==", "license": "Apache-2.0", "dependencies": { - "@powersync/common": "1.45.0", - "async-lock": "^1.4.0" + "@powersync/common": "1.46.0", + "async-lock": "^1.4.1" }, "peerDependencies": { - "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0", - "@powersync/common": "^1.45.0", + "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0 || ^15.0.0", + "@powersync/common": "^1.46.0", "react": "*", "react-native": "*" } @@ -7040,16 +7159,6 @@ } } }, - "node_modules/@powersync/react-native/node_modules/@powersync/common": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", - "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", - "license": "Apache-2.0", - "dependencies": { - "async-mutex": "^0.5.0", - "event-iterator": "^2.0.0" - } - }, "node_modules/@powersync/tanstack-react-query": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/@powersync/tanstack-react-query/-/tanstack-react-query-0.1.14.tgz", @@ -7065,16 +7174,6 @@ "react": "*" } }, - "node_modules/@powersync/tanstack-react-query/node_modules/@powersync/common": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", - "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", - "license": "Apache-2.0", - "dependencies": { - "async-mutex": "^0.5.0", - "event-iterator": "^2.0.0" - } - }, "node_modules/@powersync/web": { "version": "1.32.0", "resolved": "https://registry.npmjs.org/@powersync/web/-/web-1.32.0.tgz", @@ -7095,16 +7194,6 @@ "@powersync/common": "^1.46.0" } }, - "node_modules/@powersync/web/node_modules/@powersync/common": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", - "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", - "license": "Apache-2.0", - "dependencies": { - "async-mutex": "^0.5.0", - "event-iterator": "^2.0.0" - } - }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -8394,28 +8483,32 @@ } }, "node_modules/@react-native-community/netinfo": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.4.1.tgz", - "integrity": "sha512-B0BYAkghz3Q2V09BF88RA601XursIEA111tnc2JOaN7axJWmNefmfjZqw/KdSxKZp7CZUuPpjBmz/WCR9uaHYg==", + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.5.2.tgz", + "integrity": "sha512-/g0m65BtX9HU+bPiCH2517bOHpEIUsGrWFXDzi1a5nNKn5KujQgm04WhL7/OSXWKHyrT8VVtUoJA0XKRxueBpQ==", "license": "MIT", "peerDependencies": { + "react": "*", "react-native": ">=0.59" } }, "node_modules/@react-native-community/slider": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.1.tgz", - "integrity": "sha512-W98If/LnTaziU3/0h5+G1LvJaRhMc6iLQBte6UWa4WBIHDMaDPglNBIFKcCXc9Dxp83W+f+5Wv22Olq9M2HJYA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.2.tgz", + "integrity": "sha512-UV/MjCyCtSjS5BQDrrGIMmCXm309xEG6XbR0Dj65kzTraJSVDxSjQS2uBUXgX+5SZUOCzCxzv3OufOZBdtQY4w==", "license": "MIT" }, "node_modules/@react-native-documents/picker": { - "version": "10.1.7", - "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-10.1.7.tgz", - "integrity": "sha512-Tb8SPU+pHxrSJmDHBozSUStIPeyFHTHLrU3MW0N3sUAioLd5z+nmUdypfg5fs+Yzp7KTxVW06APe2HLB1ysLww==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", + "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", "license": "MIT", + "funding": { + "url": "https://github.com/react-native-documents/document-picker?sponsor=1" + }, "peerDependencies": { "react": "*", - "react-native": "*" + "react-native": ">=0.79.0" } }, "node_modules/@react-native/assets-registry": { @@ -9887,15 +9980,236 @@ } }, "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", @@ -9920,12 +10234,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.19.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.10.tgz", - "integrity": "sha512-tF5VOugLS/EuDlTBijk0MqABfP8UxgYazTLo3uIn3b4yJgg26QRbVYJYsDtHrjdDUIRfP70+VfhTTc+CE1yskw==", + "version": "25.2.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.2.tgz", + "integrity": "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==", "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/phoenix": { @@ -11248,9 +11562,9 @@ } }, "node_modules/babel-plugin-react-compiler": { - "version": "19.0.0-beta-ebf51a3-20250411", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-19.0.0-beta-ebf51a3-20250411.tgz", - "integrity": "sha512-q84bNR9JG1crykAlJUt5Ud0/5BUyMFuQww/mrwIQDFBaxsikqBDj3f/FNDsVd2iR26A1HvXKWPEIfgJDv8/V2g==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", "license": "MIT", "dependencies": { "@babel/types": "^7.26.0" @@ -11376,15 +11690,6 @@ } } }, - "node_modules/babel-preset-expo/node_modules/babel-plugin-react-compiler": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", - "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.26.0" - } - }, "node_modules/babel-preset-fbjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", @@ -13319,19 +13624,6 @@ "tslib": "^2.0.3" } }, - "node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/drizzle-kit": { "version": "0.31.9", "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.9.tgz", @@ -13349,9 +13641,9 @@ } }, "node_modules/drizzle-orm": { - "version": "0.44.7", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.44.7.tgz", - "integrity": "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==", + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", + "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", "dev": true, "license": "Apache-2.0", "peerDependencies": { @@ -15139,23 +15431,6 @@ "react-native": "*" } }, - "node_modules/expo-av": { - "version": "16.0.8", - "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-16.0.8.tgz", - "integrity": "sha512-cmVPftGR/ca7XBgs7R6ky36lF3OC0/MM/lpgX/yXqfv0jASTsh7AYX9JxHCwFmF+Z6JEB1vne9FDx4GiLcGreQ==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native-web": { - "optional": true - } - } - }, "node_modules/expo-build-properties": { "version": "55.0.6", "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-55.0.6.tgz", @@ -15695,6 +15970,48 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/expo-module-scripts/node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-module-scripts/node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/expo-module-scripts/node_modules/@types/yargs": { "version": "13.0.12", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", @@ -19976,13 +20293,14 @@ } }, "node_modules/libsql": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.4.7.tgz", - "integrity": "sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==", + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.5.22.tgz", + "integrity": "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==", "cpu": [ "x64", "arm64", - "wasm32" + "wasm32", + "arm" ], "dev": true, "license": "MIT", @@ -19996,13 +20314,15 @@ "detect-libc": "2.0.2" }, "optionalDependencies": { - "@libsql/darwin-arm64": "0.4.7", - "@libsql/darwin-x64": "0.4.7", - "@libsql/linux-arm64-gnu": "0.4.7", - "@libsql/linux-arm64-musl": "0.4.7", - "@libsql/linux-x64-gnu": "0.4.7", - "@libsql/linux-x64-musl": "0.4.7", - "@libsql/win32-x64-msvc": "0.4.7" + "@libsql/darwin-arm64": "0.5.22", + "@libsql/darwin-x64": "0.5.22", + "@libsql/linux-arm-gnueabihf": "0.5.22", + "@libsql/linux-arm-musleabihf": "0.5.22", + "@libsql/linux-arm64-gnu": "0.5.22", + "@libsql/linux-arm64-musl": "0.5.22", + "@libsql/linux-x64-gnu": "0.5.22", + "@libsql/linux-x64-musl": "0.5.22", + "@libsql/win32-x64-msvc": "0.5.22" } }, "node_modules/lighthouse-logger": { @@ -20639,12 +20959,12 @@ } }, "node_modules/lucide-react-native": { - "version": "0.510.0", - "resolved": "https://registry.npmjs.org/lucide-react-native/-/lucide-react-native-0.510.0.tgz", - "integrity": "sha512-Ggy6NyWNcb/Wp9I0Kguwab5FRjr3GYsxNi0Nmy+skur1yj9TKiF2vcXPL7zWkkcgqk8WWKiIvmN3CntWvaDR1w==", + "version": "0.563.0", + "resolved": "https://registry.npmjs.org/lucide-react-native/-/lucide-react-native-0.563.0.tgz", + "integrity": "sha512-q4tYoAMorTqv+UXRYc0MyiEAOF+4Bu73zxD63EDrnGCFL+xuj+imBm3E2rIKRmME0heVHlK+98fsi8wbL92LNQ==", "license": "ISC", "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0", + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-native": "*", "react-native-svg": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0" } @@ -22768,13 +23088,13 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.14", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.14.tgz", - "integrity": "sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.7.2.tgz", + "integrity": "sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.21.3" + "node": ">=20.19" }, "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", @@ -22787,14 +23107,12 @@ "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", - "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", - "prettier-plugin-style-order": "*", "prettier-plugin-svelte": "*" }, "peerDependenciesMeta": { @@ -22825,9 +23143,6 @@ "prettier-plugin-css-order": { "optional": true }, - "prettier-plugin-import-sort": { - "optional": true - }, "prettier-plugin-jsdoc": { "optional": true }, @@ -22846,9 +23161,6 @@ "prettier-plugin-sort-imports": { "optional": true }, - "prettier-plugin-style-order": { - "optional": true - }, "prettier-plugin-svelte": { "optional": true } @@ -23161,9 +23473,9 @@ } }, "node_modules/react-compiler-runtime": { - "version": "19.0.0-beta-ebf51a3-20250411", - "resolved": "https://registry.npmjs.org/react-compiler-runtime/-/react-compiler-runtime-19.0.0-beta-ebf51a3-20250411.tgz", - "integrity": "sha512-CetwBv7Wny+4Re6TZRPtVbNMx65CvLNDMkMp2KJ/pRmEc6WLPUoSSBuyY0bML9GPWiO/3LcWQ4iDGKitFU0qng==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-compiler-runtime/-/react-compiler-runtime-1.0.0.tgz", + "integrity": "sha512-rRfjYv66HlG8896yPUDONgKzG5BxZD1nV9U6rkm+7VCuvQc903C4MjcoZR4zPw53IKSOX9wMQVpA1IAbRtzQ7w==", "license": "MIT", "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental" @@ -23623,9 +23935,9 @@ } }, "node_modules/react-native-element-dropdown": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/react-native-element-dropdown/-/react-native-element-dropdown-2.12.2.tgz", - "integrity": "sha512-Tf8hfRuniYEXo+LGoVgIMoItKWuPLX6jbqlwAFgMbBhmWGTuV+g1OVOAx/ny16kgnwp+NhgJoWpxhVvr7HSmXA==", + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/react-native-element-dropdown/-/react-native-element-dropdown-2.12.4.tgz", + "integrity": "sha512-abZc5SVji9FIt7fjojRYrbuvp03CoeZJrgvezQoDoSOrpiTqkX69ix5m+j06W2AVncA0VWvbT+vCMam8SoVadw==", "license": "MIT", "dependencies": { "lodash": "^4.17.21" @@ -23653,19 +23965,6 @@ "react-native": "*" } }, - "node_modules/react-native-haptic-feedback": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/react-native-haptic-feedback/-/react-native-haptic-feedback-2.3.3.tgz", - "integrity": "sha512-svS4D5PxfNv8o68m9ahWfwje5NqukM3qLS48+WTdhbDkNUkOhP9rDfDSRHzlhk4zq+ISjyw95EhLeh8NkKX5vQ==", - "license": "MIT", - "optional": true, - "workspaces": [ - "example" - ], - "peerDependencies": { - "react-native": ">=0.60.0" - } - }, "node_modules/react-native-is-edge-to-edge": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz", @@ -23677,9 +23976,9 @@ } }, "node_modules/react-native-keyboard-controller": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.20.4.tgz", - "integrity": "sha512-IW2VatYwYhA3uRnGCOsEGARNjCYcYLUJX8KeuNz9GOMDWdLBVZWI+cy28+V4R2WvnToIIFku1NICbBSsQZi/8w==", + "version": "1.20.7", + "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.20.7.tgz", + "integrity": "sha512-G8S5jz1FufPrcL1vPtReATx+jJhT/j+sTqxMIb30b1z7cYEfMlkIzOCyaHgf6IMB2KA9uBmnA5M6ve2A9Ou4kw==", "license": "MIT", "dependencies": { "react-native-is-edge-to-edge": "^1.2.1" @@ -23763,9 +24062,9 @@ } }, "node_modules/react-native-screens": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.22.0.tgz", - "integrity": "sha512-f1AtzxmgZlKeoioWzdNdQ/4SuqZ/w370KCBnA666pN8UZ33X4PkVJ/9v9y2y5sj0cXKEcgeN3Br9lmeDRQ735A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", + "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", "license": "MIT", "dependencies": { "react-freeze": "^1.0.0", @@ -23776,25 +24075,10 @@ "react-native": "*" } }, - "node_modules/react-native-sortables": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/react-native-sortables/-/react-native-sortables-1.9.4.tgz", - "integrity": "sha512-a6hxT+gl14HA5Sm8UiLXJqF8KMEQVa+mUJd75OnzoVsmrxUDtjAatlMdV0kI9qTQDT/ZSFLPRmdUhOR762IA4g==", - "license": "MIT", - "optionalDependencies": { - "react-native-haptic-feedback": ">=2.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-gesture-handler": ">=2.0.0", - "react-native-reanimated": ">=3.0.0" - } - }, "node_modules/react-native-svg": { - "version": "15.15.1", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.1.tgz", - "integrity": "sha512-ZUD1xwc3Hwo4cOmOLumjJVoc7lEf9oQFlHnLmgccLC19fNm6LVEdtB+Cnip6gEi0PG3wfvVzskViEtrySQP8Fw==", + "version": "15.15.3", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", + "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -23832,9 +24116,9 @@ } }, "node_modules/react-native-url-polyfill": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-2.0.0.tgz", - "integrity": "sha512-My330Do7/DvKnEvwQc0WdcBnFPploYKp9CYlefDXzIdEaA+PAhDYllkvGeEroEzvc4Kzzj2O4yVdz8v6fjRvhA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-3.0.0.tgz", + "integrity": "sha512-aA5CiuUCUb/lbrliVCJ6lZ17/RpNJzvTO/C7gC/YmDQhTUoRD5q5HlJfwLWcxz4VgAhHwXKzhxH+wUN24tAdqg==", "license": "MIT", "dependencies": { "whatwg-url-without-unicode": "8.0.0-3" @@ -27051,9 +27335,9 @@ } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index 06e7612bb..583741033 100644 --- a/package.json +++ b/package.json @@ -65,18 +65,18 @@ "@gorhom/bottom-sheet": "^5.2.8", "@hookform/resolvers": "^5.0.1", "@legendapp/list": "^2.0.12", - "@op-engineering/op-sqlite": "^14.1.4", + "@op-engineering/op-sqlite": "^15.2.5", "@powersync/attachments": "^2.4.0", - "@powersync/drizzle-driver": "^0.6.0", - "@powersync/op-sqlite": "^0.7.11", + "@powersync/drizzle-driver": "^0.7.2", + "@powersync/op-sqlite": "^0.8.0", "@powersync/react-native": "^1.25.1", "@powersync/tanstack-react-query": "^0.1.6", "@powersync/web": "^1.27.1", "@quidone/react-native-wheel-picker": "^1.6.1", "@react-native-async-storage/async-storage": "2.2.0", - "@react-native-community/netinfo": "11.4.1", - "@react-native-community/slider": "5.1.1", - "@react-native-documents/picker": "^10.1.5", + "@react-native-community/netinfo": "11.5.2", + "@react-native-community/slider": "5.1.2", + "@react-native-documents/picker": "^12.0.1", "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/native": "^7.1.6", "@react-navigation/native-stack": "^7.3.10", @@ -96,7 +96,7 @@ "@supabase/supabase-js": "^2.53.0", "@tanstack/react-query": "^5.84.0", "@tanstack/react-query-persist-client": "^5.84.0", - "babel-plugin-react-compiler": "^19.0.0-beta-af1b7da-20250417", + "babel-plugin-react-compiler": "^1.0.0", "base64-arraybuffer": "^1.0.2", "bidirectional-map": "^1.1.1", "class-variance-authority": "^0.7.1", @@ -106,13 +106,12 @@ "expo": "^55.0.0-preview.10", "expo-application": "~55.0.5", "expo-audio": "~55.0.5", - "expo-av": "~16.0.8", "expo-build-properties": "~55.0.6", "expo-clipboard": "~55.0.5", "expo-constants": "~55.0.4", "expo-dev-client": "~55.0.5", "expo-device": "~55.0.6", - "expo-drizzle-studio-plugin": "^0.2.0", + "expo-drizzle-studio-plugin": "^0.2.1", "expo-file-system": "~55.0.5", "expo-font": "~55.0.3", "expo-haptics": "~55.0.5", @@ -129,30 +128,29 @@ "expo-system-ui": "~55.0.5", "expo-updates": "~55.0.7", "js-logger": "^1.6.1", - "lucide-react-native": "^0.510.0", + "lucide-react-native": "^0.563.0", "moti": "^0.30.0", "nativewind": "^4.2.1", - "posthog-js": "^1.344.0", + "posthog-js": "^1.345.1", "posthog-react-native": "^4.31.0", "posthog-react-native-session-replay": "^1.2.4", "react": "19.2.0", - "react-compiler-runtime": "^19.0.0-beta-af1b7da-20250417", + "react-compiler-runtime": "^1.0.0", "react-dom": "19.2.0", "react-hook-form": "^7.54.2", "react-native": "0.83.1", "react-native-audio-concat": "^0.9.0", - "react-native-element-dropdown": "2.12.2", + "react-native-element-dropdown": "2.12.4", "react-native-gesture-handler": "~2.30.0", - "react-native-keyboard-controller": "1.20.4", + "react-native-keyboard-controller": "1.20.7", "react-native-onboarding": "^1.0.6", "react-native-pager-view": "8.0.0", "react-native-reanimated": "^4.2.1", "react-native-reorderable-list": "^0.18.0", "react-native-safe-area-context": "~5.6.0", - "react-native-screens": "~4.22.0", - "react-native-sortables": "^1.9.4", - "react-native-svg": "15.15.1", - "react-native-url-polyfill": "^2.0.0", + "react-native-screens": "~4.23.0", + "react-native-svg": "15.15.3", + "react-native-url-polyfill": "^3.0.0", "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", "react-native-worklets": "^0.7.2", @@ -168,23 +166,22 @@ "@babel/plugin-transform-async-generator-functions": "^7.26.8", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@eslint/compat": "^1.2.4", - "@libsql/client": "^0.14.0", + "@libsql/client": "^0.17.0", "@modelcontextprotocol/sdk": "^1.0.4", "@react-native-community/cli": "latest", "@total-typescript/ts-reset": "^0.6.1", "@types/bidirectional-map": "^1.0.4", "@types/default-gateway": "^7.2.2", - "@types/jest": "^29.5.12", - "@types/node": "^22.18.9", + "@types/jest": "^30.0.0", + "@types/node": "^25.2.2", "@types/react": "~19.2.2", "@types/react-test-renderer": "^19.0.0", "babel-plugin-inline-import": "^3.0.0", "babel-preset-expo": "~55.0.0", "cross-env": "^10.1.0", "default-gateway": "^7.2.2", - "dotenv": "^16.4.7", "drizzle-kit": "^0.31.4", - "drizzle-orm": "^0.44.4", + "drizzle-orm": "^0.45.1", "eslint": "^9.38.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-react": "^7.37.4", @@ -198,7 +195,7 @@ "metro-react-native-babel-transformer": "^0.77.0", "patch-package": "^8.0.1", "prettier": "^3.6.2", - "prettier-plugin-tailwindcss": "^0.6.14", + "prettier-plugin-tailwindcss": "^0.7.2", "react-native-svg-transformer": "^1.5.1", "react-test-renderer": "19.0.0", "sharp-cli": "^5.2.0", From 2559c1b5c2617ac8359ca6b5f3e0eadbc320bba7 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 10:07:54 -0600 Subject: [PATCH 030/143] update tsconfig based on default expo template --- tsconfig.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 1691f3cf0..a18f99133 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,11 +4,9 @@ "strict": true, "baseUrl": ".", "paths": { - "@/*": ["./*"], - "expo-file-system/next": ["node_modules/expo-file-system/build/next"] + "@/*": ["./src/*"] }, - "noUncheckedIndexedAccess": true, - "moduleResolution": "Bundler" + "noUncheckedIndexedAccess": true }, "include": [ "**/*.ts", From 77086758763fc733a8e996b3331a2292b0bbc31b Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:39:07 -0600 Subject: [PATCH 031/143] fix: update tsconfig.json to fix @/ imports --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index a18f99133..ce7698daa 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "strict": true, "baseUrl": ".", "paths": { - "@/*": ["./src/*"] + "@/*": ["./*"] }, "noUncheckedIndexedAccess": true }, From 0bdd1244c7860027c03ab75a5f3f48f236616537 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:47:18 -0600 Subject: [PATCH 032/143] add package json override for expo 55 compatiblity with package --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 583741033..d4d5e6c9f 100644 --- a/package.json +++ b/package.json @@ -218,7 +218,10 @@ "react": "19.2.0", "react-dom": "19.2.0", "@types/react": "~19.2.2", - "jest-snapshot-prettier": "npm:prettier@^3.6.2" + "jest-snapshot-prettier": "npm:prettier@^3.6.2", + "$expo-drizzle-studio-plugin": { + "expo": "^55.0.0-preview.10" + } }, "private": true } From cc5c00e2328697ee15b5c571e6432db9adf2cebb Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:48:28 -0600 Subject: [PATCH 033/143] fix: package lock --- package-lock.json | 28161 +------------------------------------------- 1 file changed, 1 insertion(+), 28160 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80214ac8e..7eec2bfdb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,28164 +3,5 @@ "version": "2.0.13", "lockfileVersion": 3, "requires": true, - "packages": { - "": { - "name": "langquest", - "version": "2.0.13", - "hasInstallScript": true, - "dependencies": { - "@azure/core-asynciterator-polyfill": "^1.0.2", - "@blazejkustra/react-native-alert": "^1.0.0", - "@expo-google-fonts/noto-sans": "^0.4.2", - "@expo/vector-icons": "^15.0.3", - "@gorhom/bottom-sheet": "^5.2.8", - "@hookform/resolvers": "^5.0.1", - "@legendapp/list": "^2.0.12", - "@op-engineering/op-sqlite": "^15.2.5", - "@powersync/attachments": "^2.4.0", - "@powersync/drizzle-driver": "^0.7.2", - "@powersync/op-sqlite": "^0.8.0", - "@powersync/react-native": "^1.25.1", - "@powersync/tanstack-react-query": "^0.1.6", - "@powersync/web": "^1.27.1", - "@quidone/react-native-wheel-picker": "^1.6.1", - "@react-native-async-storage/async-storage": "2.2.0", - "@react-native-community/netinfo": "11.5.2", - "@react-native-community/slider": "5.1.2", - "@react-native-documents/picker": "^12.0.1", - "@react-navigation/bottom-tabs": "^7.3.10", - "@react-navigation/native": "^7.1.6", - "@react-navigation/native-stack": "^7.3.10", - "@rn-primitives/checkbox": "^1.2.0", - "@rn-primitives/label": "^1.1.0", - "@rn-primitives/portal": "^1.3.0", - "@rn-primitives/progress": "^1.2.0", - "@rn-primitives/select": "^1.1.0", - "@rn-primitives/slider": "1.2.0", - "@rn-primitives/slot": "^1.2.0", - "@rn-primitives/switch": "^1.2.0", - "@rn-primitives/tabs": "^1.2.0", - "@rn-primitives/toggle": "^1.1.0", - "@rn-primitives/toggle-group": "^1.1.0", - "@rn-primitives/tooltip": "^1.2.0", - "@rn-primitives/types": "^1.1.0", - "@supabase/supabase-js": "^2.53.0", - "@tanstack/react-query": "^5.84.0", - "@tanstack/react-query-persist-client": "^5.84.0", - "babel-plugin-react-compiler": "^1.0.0", - "base64-arraybuffer": "^1.0.2", - "bidirectional-map": "^1.1.1", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "eslint-config-expo": "~55.0.0", - "eslint-plugin-drizzle": "^0.2.3", - "expo": "^55.0.0-preview.10", - "expo-application": "~55.0.5", - "expo-audio": "~55.0.5", - "expo-build-properties": "~55.0.6", - "expo-clipboard": "~55.0.5", - "expo-constants": "~55.0.4", - "expo-dev-client": "~55.0.5", - "expo-device": "~55.0.6", - "expo-drizzle-studio-plugin": "^0.2.1", - "expo-file-system": "~55.0.5", - "expo-font": "~55.0.3", - "expo-haptics": "~55.0.5", - "expo-image": "~55.0.3", - "expo-linear-gradient": "~55.0.5", - "expo-linking": "~55.0.4", - "expo-localization": "~55.0.5", - "expo-manifests": "~55.0.5", - "expo-router": "~55.0.0-preview.7", - "expo-sharing": "~55.0.6", - "expo-splash-screen": "~55.0.5", - "expo-sqlite": "~55.0.5", - "expo-status-bar": "~55.0.2", - "expo-system-ui": "~55.0.5", - "expo-updates": "~55.0.7", - "js-logger": "^1.6.1", - "lucide-react-native": "^0.563.0", - "moti": "^0.30.0", - "nativewind": "^4.2.1", - "posthog-js": "^1.345.1", - "posthog-react-native": "^4.31.0", - "posthog-react-native-session-replay": "^1.2.4", - "react": "19.2.0", - "react-compiler-runtime": "^1.0.0", - "react-dom": "19.2.0", - "react-hook-form": "^7.54.2", - "react-native": "0.83.1", - "react-native-audio-concat": "^0.9.0", - "react-native-element-dropdown": "2.12.4", - "react-native-gesture-handler": "~2.30.0", - "react-native-keyboard-controller": "1.20.7", - "react-native-onboarding": "^1.0.6", - "react-native-pager-view": "8.0.0", - "react-native-reanimated": "^4.2.1", - "react-native-reorderable-list": "^0.18.0", - "react-native-safe-area-context": "~5.6.0", - "react-native-screens": "~4.23.0", - "react-native-svg": "15.15.3", - "react-native-url-polyfill": "^3.0.0", - "react-native-uuid": "^2.0.3", - "react-native-web": "^0.21.0", - "react-native-worklets": "^0.7.2", - "tailwind-merge": "^3.3.0", - "tailwindcss-animate": "^1.0.7", - "testflight-dev-deploy": "^0.0.8", - "vaul": "^1.1.2", - "zod": "^4.1.11", - "zustand": "^5.0.3" - }, - "devDependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-transform-async-generator-functions": "^7.26.8", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@eslint/compat": "^1.2.4", - "@libsql/client": "^0.17.0", - "@modelcontextprotocol/sdk": "^1.0.4", - "@react-native-community/cli": "latest", - "@total-typescript/ts-reset": "^0.6.1", - "@types/bidirectional-map": "^1.0.4", - "@types/default-gateway": "^7.2.2", - "@types/jest": "^30.0.0", - "@types/node": "^25.2.2", - "@types/react": "~19.2.2", - "@types/react-test-renderer": "^19.0.0", - "babel-plugin-inline-import": "^3.0.0", - "babel-preset-expo": "~55.0.0", - "cross-env": "^10.1.0", - "default-gateway": "^7.2.2", - "drizzle-kit": "^0.31.4", - "drizzle-orm": "^0.45.1", - "eslint": "^9.38.0", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-react": "^7.37.4", - "eslint-plugin-react-compiler": "^19.1.0-rc.2", - "eslint-plugin-react-hooks": "^7.0.1", - "expo-atlas": "^0.4.0", - "jest": "^29.2.1", - "jest-expo": "~55.0.6", - "jiti": "^2.6.1", - "knip": "^5.64.2", - "metro-react-native-babel-transformer": "^0.77.0", - "patch-package": "^8.0.1", - "prettier": "^3.6.2", - "prettier-plugin-tailwindcss": "^0.7.2", - "react-native-svg-transformer": "^1.5.1", - "react-test-renderer": "19.0.0", - "sharp-cli": "^5.2.0", - "supabase": "^2.48.3", - "tailwindcss": "^3.4.17", - "ts-node": "^10.9.2", - "tsx": "^4.19.2", - "typescript": "~5.9.2", - "typescript-eslint": "^8.20.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@azure/core-asynciterator-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz", - "integrity": "sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@babel/cli": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.28.6.tgz", - "integrity": "sha512-6EUNcuBbNkj08Oj4gAZ+BUU8yLCgKzgVX4gaTh09Ya2C8ICM4P+G30g4m3akRxSYAp3A/gnWchrNst7px4/nUQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.28", - "commander": "^6.2.0", - "convert-source-map": "^2.0.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.2.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0" - }, - "bin": { - "babel": "bin/babel.js", - "babel-external-helpers": "bin/babel-external-helpers.js" - }, - "engines": { - "node": ">=6.9.0" - }, - "optionalDependencies": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.6.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/cli/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@babel/cli/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/cli/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/cli/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@babel/cli/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@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.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", - "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", - "license": "MIT", - "dependencies": { - "@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.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", - "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "regexpu-core": "^6.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", - "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "debug": "^4.4.3", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.11" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", - "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", - "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", - "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", - "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", - "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", - "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", - "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", - "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", - "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", - "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", - "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-syntax-decorators": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-default-from": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz", - "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", - "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-default-from": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.28.6.tgz", - "integrity": "sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", - "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", - "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", - "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", - "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", - "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-remap-async-to-generator": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", - "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", - "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", - "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", - "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", - "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", - "license": "MIT", - "dependencies": { - "@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/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", - "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/template": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", - "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", - "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", - "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", - "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", - "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", - "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", - "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", - "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", - "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-flow": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", - "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", - "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", - "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", - "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", - "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", - "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", - "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", - "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", - "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", - "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", - "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", - "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", - "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", - "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", - "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", - "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", - "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", - "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", - "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", - "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", - "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", - "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", - "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", - "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-syntax-jsx": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", - "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", - "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", - "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", - "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", - "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", - "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", - "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", - "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", - "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", - "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", - "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", - "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", - "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", - "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", - "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", - "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", - "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^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/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.28.6", - "@babel/plugin-syntax-import-attributes": "^7.28.6", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.29.0", - "@babel/plugin-transform-async-to-generator": "^7.28.6", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.6", - "@babel/plugin-transform-class-properties": "^7.28.6", - "@babel/plugin-transform-class-static-block": "^7.28.6", - "@babel/plugin-transform-classes": "^7.28.6", - "@babel/plugin-transform-computed-properties": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-dotall-regex": "^7.28.6", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.6", - "@babel/plugin-transform-exponentiation-operator": "^7.28.6", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.28.6", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.28.6", - "@babel/plugin-transform-modules-systemjs": "^7.29.0", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", - "@babel/plugin-transform-numeric-separator": "^7.28.6", - "@babel/plugin-transform-object-rest-spread": "^7.28.6", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.28.6", - "@babel/plugin-transform-optional-chaining": "^7.28.6", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.28.6", - "@babel/plugin-transform-private-property-in-object": "^7.28.6", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.29.0", - "@babel/plugin-transform-regexp-modifiers": "^7.28.6", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.28.6", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.28.6", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.15", - "babel-plugin-polyfill-corejs3": "^0.14.0", - "babel-plugin-polyfill-regenerator": "^0.6.6", - "core-js-compat": "^3.48.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz", - "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.6", - "core-js-compat": "^3.48.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-flow": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.27.1.tgz", - "integrity": "sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-flow-strip-types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-react": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", - "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.28.0", - "@babel/plugin-transform-react-jsx": "^7.27.1", - "@babel/plugin-transform-react-jsx-development": "^7.27.1", - "@babel/plugin-transform-react-pure-annotations": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", - "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/register": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.28.6.tgz", - "integrity": "sha512-pgcbbEl/dWQYb6L6Yew6F94rdwygfuv+vJ/tXfwIOYAfPB6TNWpXUMEtEq3YuTeHRdvMIhvz13bkT9CNaS+wqA==", - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.6", - "source-map-support": "^0.5.16" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/register/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/register/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/register/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", - "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse--for-generate-function-map": { - "name": "@babel/traverse", - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@blazejkustra/react-native-alert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@blazejkustra/react-native-alert/-/react-native-alert-1.0.0.tgz", - "integrity": "sha512-bgvKlnhfS39vz38BSBdHk1smVME0Nf5tJEzgoQOIPpci8KuTBcOORa93B2PV3/S5a0QkR1d8nW2yw76HDj6zqQ==", - "license": "MIT", - "workspaces": [ - "example" - ], - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@drizzle-team/brocli": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz", - "integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@egjs/hammerjs": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", - "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", - "license": "MIT", - "dependencies": { - "@types/hammerjs": "^2.0.36" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "license": "MIT", - "optional": true, - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "license": "MIT", - "optional": true - }, - "node_modules/@epic-web/invariant": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", - "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@esbuild-kit/core-utils": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", - "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==", - "deprecated": "Merged into tsx: https://tsx.is", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.18.20", - "source-map-support": "^0.5.21" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/@esbuild-kit/esm-loader": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz", - "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==", - "deprecated": "Merged into tsx: https://tsx.is", - "dev": true, - "license": "MIT", - "dependencies": { - "@esbuild-kit/core-utils": "^3.3.2", - "get-tsconfig": "^4.7.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/compat": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz", - "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^8.40 || 9" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/@eslint/js": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@expo-google-fonts/material-symbols": { - "version": "0.4.20", - "resolved": "https://registry.npmjs.org/@expo-google-fonts/material-symbols/-/material-symbols-0.4.20.tgz", - "integrity": "sha512-6zdkqYjWcjUuM+CCaZG1Zf3ptia0vI0wAHrN3OwPUhINtY+aDWKS2LfF+xsT54RQhRP1Sn/ocMKwoKjcZWyfLQ==", - "license": "MIT AND Apache-2.0" - }, - "node_modules/@expo-google-fonts/noto-sans": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@expo-google-fonts/noto-sans/-/noto-sans-0.4.2.tgz", - "integrity": "sha512-zYD8G2ijWLxqmquoQgghNh/x9p0yxWwArD0oxO1oXY1qx5vOd4t0Kbhnu/Cx8RTy08OgA8RtxuULZFaXwVPnPw==", - "license": "MIT AND OFL-1.1" - }, - "node_modules/@expo/cli": { - "version": "55.0.7", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.7.tgz", - "integrity": "sha512-RuhoB/M0LnD5dSTkd7lkVjCR1H2lpviZTDokLWhV/HbOzlOwXehKGA5MNjse8Jc3/ZoizFrs3b9ZYmX9APCNjA==", - "license": "MIT", - "dependencies": { - "@expo/code-signing-certificates": "^0.0.6", - "@expo/config": "~55.0.4", - "@expo/config-plugins": "~55.0.4", - "@expo/devcert": "^1.2.1", - "@expo/env": "~2.1.0", - "@expo/image-utils": "^0.8.12", - "@expo/json-file": "^10.0.12", - "@expo/log-box": "55.0.6", - "@expo/metro": "~54.2.0", - "@expo/metro-config": "~55.0.5", - "@expo/osascript": "^2.4.2", - "@expo/package-manager": "^1.10.3", - "@expo/plist": "^0.5.2", - "@expo/prebuild-config": "^55.0.4", - "@expo/router-server": "^55.0.5", - "@expo/schema-utils": "^55.0.2", - "@expo/spawn-async": "^1.7.2", - "@expo/ws-tunnel": "^1.0.1", - "@expo/xcpretty": "^4.4.0", - "@react-native/dev-middleware": "0.83.1", - "accepts": "^1.3.8", - "arg": "^5.0.2", - "better-opn": "~3.0.2", - "bplist-creator": "0.1.0", - "bplist-parser": "^0.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.3.0", - "compression": "^1.7.4", - "connect": "^3.7.0", - "debug": "^4.3.4", - "dnssd-advertise": "^1.1.1", - "env-editor": "^0.4.1", - "expo-server": "^55.0.3", - "fetch-nodeshim": "^0.4.5", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "lan-network": "^0.1.6", - "minimatch": "^9.0.0", - "multitars": "^0.2.3", - "node-forge": "^1.3.3", - "npm-package-arg": "^11.0.0", - "ora": "^3.4.0", - "picomatch": "^3.0.1", - "pretty-format": "^29.7.0", - "progress": "^2.0.3", - "prompts": "^2.3.2", - "qrcode-terminal": "0.11.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "send": "^0.19.0", - "slugify": "^1.3.4", - "source-map-support": "~0.5.21", - "stacktrace-parser": "^0.1.10", - "structured-headers": "^0.4.1", - "terminal-link": "^2.1.1", - "wrap-ansi": "^7.0.0", - "ws": "^8.12.1", - "zod": "^3.25.76" - }, - "bin": { - "expo-internal": "build/bin/cli" - }, - "peerDependencies": { - "expo": "*", - "expo-router": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "expo-router": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/@expo/cli/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/cli/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@expo/cli/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@expo/cli/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/@expo/cli/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@expo/cli/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/cli/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/cli/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/cli/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/cli/node_modules/ora/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/cli/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/cli/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/@expo/code-signing-certificates": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", - "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", - "license": "MIT", - "dependencies": { - "node-forge": "^1.3.3" - } - }, - "node_modules/@expo/config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", - "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/json-file": "^10.0.12", - "deepmerge": "^4.3.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "resolve-workspace-root": "^2.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "~3.35.1" - } - }, - "node_modules/@expo/config-plugins": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", - "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^55.0.4", - "@expo/json-file": "~10.0.12", - "@expo/plist": "^0.5.2", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.5", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" - } - }, - "node_modules/@expo/config-plugins/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/config-plugins/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/config-plugins/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/config-types": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", - "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", - "license": "MIT" - }, - "node_modules/@expo/config/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/config/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/config/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/devcert": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz", - "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==", - "license": "MIT", - "dependencies": { - "@expo/sudo-prompt": "^9.3.1", - "debug": "^3.1.0" - } - }, - "node_modules/@expo/devcert/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@expo/devtools": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-55.0.2.tgz", - "integrity": "sha512-4VsFn9MUriocyuhyA+ycJP3TJhUsOFHDc270l9h3LhNpXMf6wvIdGcA0QzXkZtORXmlDybWXRP2KT1k36HcQkA==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/@expo/dom-webview": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-55.0.3.tgz", - "integrity": "sha512-bY4/rfcZ0f43DvOtMn8/kmPlmo01tex5hRoc5hKbwBwQjqWQuQt0ACwu7akR9IHI4j0WNG48eL6cZB6dZUFrzg==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/@expo/env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.1.0.tgz", - "integrity": "sha512-vbLItCcADX2WFlfQOlAXfdDL8opBjXUnbzShSY/+3zyrkSMoxwSTgrgS8JdoGla47pVRjpKtziD5HgJgMjf8Tg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "debug": "^4.3.4", - "getenv": "^2.0.0" - }, - "engines": { - "node": ">=20.12.0" - } - }, - "node_modules/@expo/fingerprint": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.3.tgz", - "integrity": "sha512-abm2rm/3Tg1gPihTyDcy7kOWnjPdtpWHSI/VpWwLaAmqqa5hFASBcr8ge58ZEWsNiozUJbfflqOp5oTQqoumAA==", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.7.2", - "arg": "^5.0.2", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "ignore": "^5.3.1", - "minimatch": "^9.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" - }, - "bin": { - "fingerprint": "bin/cli.js" - } - }, - "node_modules/@expo/fingerprint/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@expo/fingerprint/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/fingerprint/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/fingerprint/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/image-utils": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.12.tgz", - "integrity": "sha512-3KguH7kyKqq7pNwLb9j6BBdD/bjmNwXZG/HPWT6GWIXbwrvAJt2JNyYTP5agWJ8jbbuys1yuCzmkX+TU6rmI7A==", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.0.0", - "getenv": "^2.0.0", - "jimp-compact": "0.16.1", - "parse-png": "^2.1.0", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" - } - }, - "node_modules/@expo/image-utils/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/json-file": { - "version": "10.0.12", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.12.tgz", - "integrity": "sha512-inbDycp1rMAelAofg7h/mMzIe+Owx6F7pur3XdQ3EPTy00tme+4P6FWgHKUcjN8dBSrnbRNpSyh5/shzHyVCyQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "json5": "^2.2.3" - } - }, - "node_modules/@expo/local-build-cache-provider": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.3.tgz", - "integrity": "sha512-wdpqOSpaqsY5CZ4rnC49U3jsdRaOfzbl6MlD7oSRH2slKmVoD/CiHH+9x9uuLsp65mGTp0a+FMUL6JfuvxRPIw==", - "license": "MIT", - "dependencies": { - "@expo/config": "~55.0.4", - "chalk": "^4.1.2" - } - }, - "node_modules/@expo/log-box": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.6.tgz", - "integrity": "sha512-t19lLsHQT2dmdBtKohibSzNlueTYDF//h7qyF7b/SMZRcofS27y/UJsoYPJfMJbo1OdQkZyI1InZYdpzwolMsA==", - "license": "MIT", - "dependencies": { - "@expo/dom-webview": "^55.0.3", - "anser": "^1.4.9", - "stacktrace-parser": "^0.1.10" - }, - "peerDependencies": { - "@expo/dom-webview": "^55.0.3", - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/@expo/metro": { - "version": "54.2.0", - "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", - "integrity": "sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==", - "license": "MIT", - "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" - } - }, - "node_modules/@expo/metro-config": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.5.tgz", - "integrity": "sha512-U5uEtUlPUJIH7nVleO+nLVhIjlxNbm6iN/cyP/ybQ0M7lRkRWl1ADFRwpy4z5ta/cvosmBqy6tIV0u9m5X1dqA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.5", - "@expo/config": "~55.0.4", - "@expo/env": "~2.1.0", - "@expo/json-file": "~10.0.12", - "@expo/metro": "~54.2.0", - "@expo/spawn-async": "^1.7.2", - "browserslist": "^4.25.0", - "chalk": "^4.1.0", - "debug": "^4.3.2", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "hermes-parser": "^0.29.1", - "jsc-safe-url": "^0.2.4", - "lightningcss": "^1.30.1", - "minimatch": "^9.0.0", - "postcss": "~8.4.32", - "resolve-from": "^5.0.0" - }, - "peerDependencies": { - "expo": "*" - }, - "peerDependenciesMeta": { - "expo": { - "optional": true - } - } - }, - "node_modules/@expo/metro-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@expo/metro-config/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/metro-config/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/@expo/metro-config/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, - "node_modules/@expo/metro-config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/metro-runtime": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.5.tgz", - "integrity": "sha512-b8WBilddI89Sc3c9dDznvmMg7PKH8Plj39Hw6cdFoSQGULLeyA7cTAUodMe2ytSOq1n1EzuO0GPHNxwsp5wprQ==", - "license": "MIT", - "dependencies": { - "@expo/log-box": "55.0.6", - "anser": "^1.4.9", - "pretty-format": "^29.7.0", - "stacktrace-parser": "^0.1.10", - "whatwg-fetch": "^3.0.0" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-dom": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/@expo/npm-proofread": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@expo/npm-proofread/-/npm-proofread-1.0.1.tgz", - "integrity": "sha512-yDyBlNIgg+rKoKCOVM9ZyAtgqRx6gHw+JtmZTrYYW4auAfwS6kE/iInmCpVXPqRy0OhJHgXj6q5PCgWELLVMeg==", - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^5.3.0" - }, - "bin": { - "proofread": "proofread.js" - } - }, - "node_modules/@expo/npm-proofread/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@expo/osascript": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.4.2.tgz", - "integrity": "sha512-/XP7PSYF2hzOZzqfjgkoWtllyeTN8dW3aM4P6YgKcmmPikKL5FdoyQhti4eh6RK5a5VrUXJTOlTNIpIHsfB5Iw==", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.7.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/package-manager": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.10.3.tgz", - "integrity": "sha512-ZuXiK/9fCrIuLjPSe1VYmfp0Sa85kCMwd8QQpgyi5ufppYKRtLBg14QOgUqj8ZMbJTxE0xqzd0XR7kOs3vAK9A==", - "license": "MIT", - "dependencies": { - "@expo/json-file": "^10.0.12", - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.0.0", - "npm-package-arg": "^11.0.0", - "ora": "^3.4.0", - "resolve-workspace-root": "^2.0.0" - } - }, - "node_modules/@expo/package-manager/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/package-manager/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@expo/package-manager/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/@expo/package-manager/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@expo/package-manager/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/package-manager/node_modules/ora/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/package-manager/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/plist": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", - "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - } - }, - "node_modules/@expo/prebuild-config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.4.tgz", - "integrity": "sha512-1bp/S+w7KRRjegN6u0/jn2cHwzcAP1QbnA8DxW3ts1EdTIZee1X8bmR57JzRzGLuU3pTPV+gLYdUoycTiYtPHg==", - "license": "MIT", - "dependencies": { - "@expo/config": "~55.0.4", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/image-utils": "^0.8.12", - "@expo/json-file": "^10.0.12", - "@react-native/normalize-colors": "0.83.1", - "debug": "^4.3.1", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "xml2js": "0.6.0" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/@expo/prebuild-config/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/router-server": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.5.tgz", - "integrity": "sha512-b23SgYujpeA0qHu2lZ/H1XXuvc4TaBo92VikPUZ48YtETXMlRnccPv5Rp7N2rS7Na51wOqBEv9auPihk3d8N+A==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "peerDependencies": { - "@expo/metro-runtime": "^55.0.4", - "expo": "*", - "expo-constants": "^55.0.3", - "expo-font": "^55.0.3", - "expo-router": "*", - "expo-server": "^55.0.3", - "react": "*", - "react-dom": "*", - "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" - }, - "peerDependenciesMeta": { - "@expo/metro-runtime": { - "optional": true - }, - "expo-router": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-server-dom-webpack": { - "optional": true - } - } - }, - "node_modules/@expo/schema-utils": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-55.0.2.tgz", - "integrity": "sha512-QZ5WKbJOWkCrMq0/kfhV9ry8te/OaS34YgLVpG8u9y2gix96TlpRTbxM/YATjNcUR2s4fiQmPCOxkGtog4i37g==", - "license": "MIT" - }, - "node_modules/@expo/sdk-runtime-versions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", - "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", - "license": "MIT" - }, - "node_modules/@expo/server": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.5.3.tgz", - "integrity": "sha512-WXsWzeBs5v/h0PUfHyNLLz07rwwO5myQ1A5DGYewyyGLmsyl61yVCe8AgAlp1wkiMsqhj2hZqI2u3K10QnCMrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "debug": "^4.3.4", - "source-map-support": "~0.5.21", - "undici": "^6.18.2" - } - }, - "node_modules/@expo/spawn-async": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", - "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/sudo-prompt": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz", - "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==", - "license": "MIT" - }, - "node_modules/@expo/vector-icons": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.0.3.tgz", - "integrity": "sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==", - "license": "MIT", - "peerDependencies": { - "expo-font": ">=14.0.4", - "react": "*", - "react-native": "*" - } - }, - "node_modules/@expo/ws-tunnel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-1.0.6.tgz", - "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==", - "license": "MIT" - }, - "node_modules/@expo/xcpretty": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.4.0.tgz", - "integrity": "sha512-o2qDlTqJ606h4xR36H2zWTywmZ3v3842K6TU8Ik2n1mfW0S580VHlt3eItVYdLYz+klaPp7CXqanja8eASZjRw==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "chalk": "^4.1.0", - "js-yaml": "^4.1.0" - }, - "bin": { - "excpretty": "build/cli.js" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz", - "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz", - "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.4", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.7.tgz", - "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.7.5" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT" - }, - "node_modules/@gorhom/bottom-sheet": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/@gorhom/bottom-sheet/-/bottom-sheet-5.2.8.tgz", - "integrity": "sha512-+N27SMpbBxXZQ/IA2nlEV6RGxL/qSFHKfdFKcygvW+HqPG5jVNb1OqehLQsGfBP+Up42i0gW5ppI+DhpB7UCzA==", - "license": "MIT", - "dependencies": { - "@gorhom/portal": "1.0.14", - "invariant": "^2.2.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-native": "*", - "react": "*", - "react-native": "*", - "react-native-gesture-handler": ">=2.16.1", - "react-native-reanimated": ">=3.16.0 || >=4.0.0-" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-native": { - "optional": true - } - } - }, - "node_modules/@gorhom/portal": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@gorhom/portal/-/portal-1.0.14.tgz", - "integrity": "sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==", - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.1" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@hono/node-server": { - "version": "1.19.9", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz", - "integrity": "sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.14.1" - }, - "peerDependencies": { - "hono": "^4" - } - }, - "node_modules/@hookform/resolvers": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", - "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==", - "license": "MIT", - "dependencies": { - "@standard-schema/utils": "^0.3.0" - }, - "peerDependencies": { - "react-hook-form": "^7.55.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz", - "integrity": "sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz", - "integrity": "sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", - "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", - "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", - "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", - "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", - "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", - "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", - "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", - "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", - "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz", - "integrity": "sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz", - "integrity": "sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz", - "integrity": "sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz", - "integrity": "sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz", - "integrity": "sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz", - "integrity": "sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz", - "integrity": "sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.4.3" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz", - "integrity": "sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz", - "integrity": "sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz", - "integrity": "sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@isaacs/ttlcache": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", - "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "license": "MIT", - "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": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "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.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "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 - } - } - }, - "node_modules/@jest/create-cache-key-function": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", - "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "license": "MIT", - "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.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "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 - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@legendapp/list": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@legendapp/list/-/list-2.0.19.tgz", - "integrity": "sha512-zDWg8yg0smKxxk+M7gwAbZAnf5uczohPA+IjqLSkImz7+e9ytxeT0Mq35RBO9RTKODOXfV/aIgm1uqUHLBEdmg==", - "license": "MIT", - "dependencies": { - "use-sync-external-store": "^1.5.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@libsql/client": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", - "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@libsql/core": "^0.17.0", - "@libsql/hrana-client": "^0.9.0", - "js-base64": "^3.7.5", - "libsql": "^0.5.22", - "promise-limit": "^2.7.0" - } - }, - "node_modules/@libsql/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", - "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-base64": "^3.7.5" - } - }, - "node_modules/@libsql/darwin-arm64": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.5.22.tgz", - "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@libsql/darwin-x64": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.5.22.tgz", - "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@libsql/hrana-client": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", - "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@libsql/isomorphic-ws": "^0.1.5", - "cross-fetch": "^4.0.0", - "js-base64": "^3.7.5", - "node-fetch": "^3.3.2" - } - }, - "node_modules/@libsql/hrana-client/node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/@libsql/hrana-client/node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@libsql/hrana-client/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@libsql/hrana-client/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/@libsql/hrana-client/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/@libsql/isomorphic-ws": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", - "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ws": "^8.5.4", - "ws": "^8.13.0" - } - }, - "node_modules/@libsql/linux-arm-gnueabihf": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm-gnueabihf/-/linux-arm-gnueabihf-0.5.22.tgz", - "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-arm-musleabihf": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm-musleabihf/-/linux-arm-musleabihf-0.5.22.tgz", - "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-arm64-gnu": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.5.22.tgz", - "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-arm64-musl": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.5.22.tgz", - "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-x64-gnu": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.5.22.tgz", - "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-x64-musl": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.5.22.tgz", - "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/win32-x64-msvc": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.5.22.tgz", - "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", - "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@hono/node-server": "^1.19.9", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.2.1", - "express-rate-limit": "^8.2.1", - "hono": "^4.11.4", - "jose": "^6.1.3", - "json-schema-typed": "^8.0.2", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@cfworker/json-schema": "^4.1.1", - "zod": "^3.25 || ^4.0" - }, - "peerDependenciesMeta": { - "@cfworker/json-schema": { - "optional": true - }, - "zod": { - "optional": false - } - } - }, - "node_modules/@motionone/animation": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", - "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", - "license": "MIT", - "dependencies": { - "@motionone/easing": "^10.18.0", - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" - } - }, - "node_modules/@motionone/dom": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", - "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", - "license": "MIT", - "dependencies": { - "@motionone/animation": "^10.12.0", - "@motionone/generators": "^10.12.0", - "@motionone/types": "^10.12.0", - "@motionone/utils": "^10.12.0", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" - } - }, - "node_modules/@motionone/easing": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", - "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", - "license": "MIT", - "dependencies": { - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" - } - }, - "node_modules/@motionone/generators": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", - "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", - "license": "MIT", - "dependencies": { - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" - } - }, - "node_modules/@motionone/types": { - "version": "10.17.1", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", - "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", - "license": "MIT" - }, - "node_modules/@motionone/utils": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", - "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", - "license": "MIT", - "dependencies": { - "@motionone/types": "^10.17.1", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - } - }, - "node_modules/@neon-rs/load": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", - "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "license": "MIT", - "optional": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@op-engineering/op-sqlite": { - "version": "15.2.5", - "resolved": "https://registry.npmjs.org/@op-engineering/op-sqlite/-/op-sqlite-15.2.5.tgz", - "integrity": "sha512-Vmgwt0AzY7qoge3X6EONhsb5NlM2yoQUF0/lseUWBelfc9BUili7/DFsFsS73cvtYWlwPpqeTGOoce5mzHozBw==", - "license": "MIT", - "workspaces": [ - "example", - "node" - ], - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", - "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", - "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", - "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/otlp-exporter-base": "0.208.0", - "@opentelemetry/otlp-transformer": "0.208.0", - "@opentelemetry/sdk-logs": "0.208.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", - "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/otlp-transformer": "0.208.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", - "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", - "@opentelemetry/sdk-logs": "0.208.0", - "@opentelemetry/sdk-metrics": "2.2.0", - "@opentelemetry/sdk-trace-base": "2.2.0", - "protobufjs": "^7.3.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", - "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.5.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", - "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", - "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", - "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.9.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", - "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", - "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@oxc-resolver/binding-android-arm-eabi": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.17.1.tgz", - "integrity": "sha512-+VuZyMYYaap5uDAU1xDU3Kul0FekLqpBS8kI5JozlWfYQKnc/HsZg2gHPkQrj0SC9lt74WMNCfOzZZJlYXSdEQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@oxc-resolver/binding-android-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.17.1.tgz", - "integrity": "sha512-YlDDTjvOEKhom/cRSVsXsMVeXVIAM9PJ/x2mfe08rfuS0iIEfJd8PngKbEIhG72WPxleUa+vkEZj9ncmC14z3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.17.1.tgz", - "integrity": "sha512-HOYYLSY4JDk14YkXaz/ApgJYhgDP4KsG8EZpgpOxdszGW9HmIMMY/vXqVKYW74dSH+GQkIXYxBrEh3nv+XODVg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.17.1.tgz", - "integrity": "sha512-JHPJbsa5HvPq2/RIdtGlqfaG9zV2WmgvHrKTYmlW0L5esqtKCBuetFudXTBzkNcyD69kSZLzH92AzTr6vFHMFg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.17.1.tgz", - "integrity": "sha512-UD1FRC8j8xZstFXYsXwQkNmmg7vUbee006IqxokwDUUA+xEgKZDpLhBEiVKM08Urb+bn7Q0gn6M1pyNR0ng5mg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.17.1.tgz", - "integrity": "sha512-wFWC1wyf2ROFWTxK5x0Enm++DSof3EBQ/ypyAesMDLiYxOOASDoMOZG1ylWUnlKaCt5W7eNOWOzABpdfFf/ssA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.17.1.tgz", - "integrity": "sha512-k/hUif0GEBk/csSqCfTPXb8AAVs1NNWCa/skBghvNbTtORcWfOVqJ3mM+2pE189+enRm4UnryLREu5ysI0kXEQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.17.1.tgz", - "integrity": "sha512-Cwm6A071ww60QouJ9LoHAwBgEoZzHQ0Qaqk2E7WLfBdiQN9mLXIDhnrpn04hlRElRPhLiu/dtg+o5PPLvaINXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.17.1.tgz", - "integrity": "sha512-+hwlE2v3m0r3sk93SchJL1uyaKcPjf+NGO/TD2DZUDo+chXx7FfaEj0nUMewigSt7oZ2sQN9Z4NJOtUa75HE5Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.17.1.tgz", - "integrity": "sha512-bO+rsaE5Ox8cFyeL5Ct5tzot1TnQpFa/Wmu5k+hqBYSH2dNVDGoi0NizBN5QV8kOIC6O5MZr81UG4yW/2FyDTA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.17.1.tgz", - "integrity": "sha512-B/P+hxKQ1oX4YstI9Lyh4PGzqB87Ddqj/A4iyRBbPdXTcxa+WW3oRLx1CsJKLmHPdDk461Hmbghq1Bm3pl+8Aw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.17.1.tgz", - "integrity": "sha512-ulp2H3bFXzd/th2maH+QNKj5qgOhJ3v9Yspdf1svTw3CDOuuTl6sRKsWQ7MUw0vnkSNvQndtflBwVXgzZvURsQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.17.1.tgz", - "integrity": "sha512-LAXYVe3rKk09Zo9YKF2ZLBcH8sz8Oj+JIyiUxiHtq0hiYLMsN6dOpCf2hzQEjPAmsSEA/hdC1PVKeXo+oma8mQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.17.1.tgz", - "integrity": "sha512-3RAhxipMKE8RCSPn7O//sj440i+cYTgYbapLeOoDvQEt6R1QcJjTsFgI4iz99FhVj3YbPxlZmcLB5VW+ipyRTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.17.1.tgz", - "integrity": "sha512-wpjMEubGU8r9VjZTLdZR3aPHaBqTl8Jl8F4DBbgNoZ+yhkhQD1/MGvY70v2TLnAI6kAHSvcqgfvaqKDa2iWsPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-openharmony-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.17.1.tgz", - "integrity": "sha512-XIE4w17RYAVIgx+9Gs3deTREq5tsmalbatYOOBGNdH7n0DfTE600c7wYXsp7ANc3BPDXsInnOzXDEPCvO1F6cg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.17.1.tgz", - "integrity": "sha512-Lqi5BlHX3zS4bpSOkIbOKVf7DIk6Gvmdifr2OuOI58eUUyP944M8/OyaB09cNpPy9Vukj7nmmhOzj8pwLgAkIg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.17.1.tgz", - "integrity": "sha512-l6lTcLBQVj1HNquFpXSsrkCIM8X5Hlng5YNQJrg00z/KyovvDV5l3OFhoRyZ+aLBQ74zUnMRaJZC7xcBnHyeNg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.17.1.tgz", - "integrity": "sha512-VTzVtfnCCsU/6GgvursWoyZrhe3Gj/RyXzDWmh4/U1Y3IW0u1FZbp+hCIlBL16pRPbDc5YvXVtCOnA41QOrOoQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.17.1.tgz", - "integrity": "sha512-jRPVU+6/12baj87q2+UGRh30FBVBzqKdJ7rP/mSqiL1kpNQB9yZ1j0+m3sru1m+C8hiFK7lBFwjUtYUBI7+UpQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@posthog/core": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.21.0.tgz", - "integrity": "sha512-0a2JUIX1vhduP2El/6/J8s5AeYAurIoufQGFgMiGnJE5ajd63o9LFocu2vFYYBnIOmy75y4ADNeW8zSl1keEQQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.6" - } - }, - "node_modules/@posthog/types": { - "version": "1.345.1", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.345.1.tgz", - "integrity": "sha512-IbdkrE1sluCq3PP8k4fiflujBiLzjGxaWQCMtLEHCZP3Ey9DSFK76FsO4aM1KastkQ20wk0C7dPSr3t9ddjBcA==", - "license": "MIT" - }, - "node_modules/@powersync/attachments": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@powersync/attachments/-/attachments-2.4.2.tgz", - "integrity": "sha512-RXAzMVd1MCZm4VqP6V3rvp29xGCVHzfktV+tWVgSmS3GhvHL3mp70h7D/kcHOcHcPtCASXaasKDxXbuswlbaBw==", - "license": "Apache-2.0", - "peerDependencies": { - "@powersync/common": "^1.46.0" - } - }, - "node_modules/@powersync/common": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", - "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", - "license": "Apache-2.0", - "dependencies": { - "async-mutex": "^0.5.0", - "event-iterator": "^2.0.0" - } - }, - "node_modules/@powersync/drizzle-driver": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@powersync/drizzle-driver/-/drizzle-driver-0.7.2.tgz", - "integrity": "sha512-urzkvimN44qWufmNonDdvwI3tcN9qFA0XB6BpoQDXFonkRzjunnZiUHas558PdDiw98AEJ4bD+FbtvvgJKzDcw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.1" - }, - "peerDependencies": { - "@powersync/common": "^1.46.0", - "drizzle-orm": "<1.0.0" - } - }, - "node_modules/@powersync/op-sqlite": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@powersync/op-sqlite/-/op-sqlite-0.8.0.tgz", - "integrity": "sha512-1FNzuSipyGCtxROkhg2DG7mOZjOtPMTj+YEgHqSVFuMdrkzjx31jmf+Lw5VI+UeCWNSUNuUcD/UMrrEUAmRxBw==", - "license": "Apache-2.0", - "dependencies": { - "@powersync/common": "1.46.0", - "async-lock": "^1.4.1" - }, - "peerDependencies": { - "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0 || ^15.0.0", - "@powersync/common": "^1.46.0", - "react": "*", - "react-native": "*" - } - }, - "node_modules/@powersync/react": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@powersync/react/-/react-1.8.2.tgz", - "integrity": "sha512-15z8JKt66dq2bqX2P7QQ71eUIx3DWLc5WMdB/PDc9MIAHf1SERqKfzbzWGxKplQGHC/GogDA7G8IDoRadhNXOA==", - "license": "Apache-2.0", - "peerDependencies": { - "@powersync/common": "^1.41.1", - "react": "*" - } - }, - "node_modules/@powersync/react-native": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@powersync/react-native/-/react-native-1.29.0.tgz", - "integrity": "sha512-U7wg1v4WA/STdyeHVb2Z2SUEVG6fM7JZZvYt+7xL6bd3ORLxloAIxIrORFZcsOYzaKjDL9D+R8wkSXFy2s5vbg==", - "license": "Apache-2.0", - "dependencies": { - "@powersync/common": "1.46.0", - "@powersync/react": "1.8.2", - "async-mutex": "^0.5.0" - }, - "peerDependencies": { - "@journeyapps/react-native-quick-sqlite": "^2.5.0", - "@powersync/common": "^1.46.0", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@journeyapps/react-native-quick-sqlite": { - "optional": true - } - } - }, - "node_modules/@powersync/tanstack-react-query": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@powersync/tanstack-react-query/-/tanstack-react-query-0.1.14.tgz", - "integrity": "sha512-mx1TR+Syh3PtoGaajPbHIZe5S8oJLtxBfmNaTZaHzhwchcrZR/EoJfiS+7hdwwx3mb3YOjKmZbqAx1YKlZwUgw==", - "license": "Apache-2.0", - "dependencies": { - "@powersync/common": "1.46.0", - "@powersync/react": "1.8.2", - "@tanstack/react-query": "^5.70.0" - }, - "peerDependencies": { - "@powersync/common": "^1.46.0", - "react": "*" - } - }, - "node_modules/@powersync/web": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@powersync/web/-/web-1.32.0.tgz", - "integrity": "sha512-AYXF+0x5DTfyjPc2Eh89GZLTSanCZYqxsE/js1C9yRzI9+e3NkAjnX7r9n3FFkJS9PSlHlctDMxyb5x2epvMJg==", - "license": "Apache-2.0", - "dependencies": { - "@powersync/common": "1.46.0", - "async-mutex": "^0.5.0", - "bson": "^6.10.4", - "comlink": "^4.4.2", - "commander": "^12.1.0" - }, - "bin": { - "powersync-web": "bin/powersync.cjs" - }, - "peerDependencies": { - "@journeyapps/wa-sqlite": "^1.4.1", - "@powersync/common": "^1.46.0" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, - "node_modules/@quidone/react-native-wheel-picker": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@quidone/react-native-wheel-picker/-/react-native-wheel-picker-1.6.1.tgz", - "integrity": "sha512-EFmrqM5k8OUr8k44cU4YRg2WPQwwG+ZtUr04qESNqhOFlvktFCrq6wH2PwnMzBel0Z+9t2PgsMh/2uoTse5RfA==", - "license": "MIT", - "dependencies": { - "@rozhkov/react-useful-hooks": "^1.0.10", - "date-fns": "^4.1.0" - }, - "engines": { - "node": ">= 16.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-native": ">=0.71.6" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", - "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", - "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", - "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-checkbox": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", - "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", - "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", - "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-focus-guards": "1.1.3", - "@radix-ui/react-focus-scope": "1.1.7", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", - "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", - "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-escape-keydown": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", - "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", - "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", - "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", - "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", - "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popper": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", - "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", - "license": "MIT", - "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-rect": "1.1.1", - "@radix-ui/react-use-size": "1.1.1", - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", - "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", - "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", - "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.8.tgz", - "integrity": "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-context": "1.1.3", - "@radix-ui/react-primitive": "2.1.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.3.tgz", - "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", - "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-slot": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", - "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", - "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-select": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", - "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-focus-guards": "1.1.3", - "@radix-ui/react-focus-scope": "1.1.7", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.8", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-visually-hidden": "1.2.3", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slider": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", - "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-switch": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", - "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", - "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.11", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", - "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", - "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.11", - "@radix-ui/react-toggle": "1.1.10", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", - "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.8", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-visually-hidden": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", - "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", - "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", - "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", - "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", - "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", - "license": "MIT", - "dependencies": { - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", - "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", - "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", - "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", - "license": "MIT" - }, - "node_modules/@react-native-async-storage/async-storage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", - "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", - "license": "MIT", - "dependencies": { - "merge-options": "^3.0.4" - }, - "peerDependencies": { - "react-native": "^0.0.0-0 || >=0.65 <1.0" - } - }, - "node_modules/@react-native-community/cli": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", - "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-clean": "20.1.1", - "@react-native-community/cli-config": "20.1.1", - "@react-native-community/cli-doctor": "20.1.1", - "@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.4.1", - "deepmerge": "^4.3.0", - "execa": "^5.0.0", - "find-up": "^5.0.0", - "fs-extra": "^8.1.0", - "graceful-fs": "^4.1.3", - "picocolors": "^1.1.1", - "prompts": "^2.4.2", - "semver": "^7.5.2" - }, - "bin": { - "rnc-cli": "build/bin.js" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@react-native-community/cli-clean": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", - "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-glob": "^3.3.2", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-config": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", - "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "cosmiconfig": "^9.0.0", - "deepmerge": "^4.3.0", - "fast-glob": "^3.3.2", - "joi": "^17.2.1", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-config-android": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", - "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "fast-glob": "^3.3.2", - "fast-xml-parser": "^4.4.1", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-config-apple": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", - "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-glob": "^3.3.2", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-doctor": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", - "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-config": "20.1.1", - "@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.8", - "deepmerge": "^4.3.0", - "envinfo": "^7.13.0", - "execa": "^5.0.0", - "node-stream-zip": "^1.9.1", - "ora": "^5.4.1", - "picocolors": "^1.1.1", - "semver": "^7.5.2", - "wcwidth": "^1.0.1", - "yaml": "^2.2.1" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", - "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-config-android": "20.1.1", - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "logkitty": "^0.7.1", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-platform-apple": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", - "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-config-apple": "20.1.1", - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-xml-parser": "^4.4.1", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", - "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-platform-apple": "20.1.1" - } - }, - "node_modules/@react-native-community/cli-server-api": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", - "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "body-parser": "^1.20.3", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.1", - "nocache": "^3.0.1", - "open": "^6.2.0", - "pretty-format": "^29.7.0", - "serve-static": "^1.13.1", - "strict-url-sanitise": "0.0.1", - "ws": "^6.2.3" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/@react-native-community/cli-tools": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", - "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vscode/sudo-prompt": "^9.0.0", - "appdirsjs": "^1.2.4", - "execa": "^5.0.0", - "find-up": "^5.0.0", - "launch-editor": "^2.9.1", - "mime": "^2.4.1", - "ora": "^5.4.1", - "picocolors": "^1.1.1", - "prompts": "^2.4.2", - "semver": "^7.5.2" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native-community/cli-types": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", - "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", - "dev": true, - "license": "MIT", - "dependencies": { - "joi": "^17.2.1" - } - }, - "node_modules/@react-native-community/cli/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@react-native-community/cli/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native-community/netinfo": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.5.2.tgz", - "integrity": "sha512-/g0m65BtX9HU+bPiCH2517bOHpEIUsGrWFXDzi1a5nNKn5KujQgm04WhL7/OSXWKHyrT8VVtUoJA0XKRxueBpQ==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": ">=0.59" - } - }, - "node_modules/@react-native-community/slider": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.2.tgz", - "integrity": "sha512-UV/MjCyCtSjS5BQDrrGIMmCXm309xEG6XbR0Dj65kzTraJSVDxSjQS2uBUXgX+5SZUOCzCxzv3OufOZBdtQY4w==", - "license": "MIT" - }, - "node_modules/@react-native-documents/picker": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", - "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", - "license": "MIT", - "funding": { - "url": "https://github.com/react-native-documents/document-picker?sponsor=1" - }, - "peerDependencies": { - "react": "*", - "react-native": ">=0.79.0" - } - }, - "node_modules/@react-native/assets-registry": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", - "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", - "license": "MIT", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", - "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.83.1" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/babel-preset": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", - "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.4", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.25.4", - "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-react-display-name": "^7.24.7", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.25.2", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.83.1", - "babel-plugin-syntax-hermes-parser": "0.32.0", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", - "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.32.0" - } - }, - "node_modules/@react-native/codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", - "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/parser": "^7.25.3", - "glob": "^7.1.1", - "hermes-parser": "0.32.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/community-cli-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", - "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", - "license": "MIT", - "dependencies": { - "@react-native/dev-middleware": "0.83.1", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "metro": "^0.83.3", - "metro-config": "^0.83.3", - "metro-core": "^0.83.3", - "semver": "^7.1.3" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@react-native-community/cli": "*", - "@react-native/metro-config": "*" - }, - "peerDependenciesMeta": { - "@react-native-community/cli": { - "optional": true - }, - "@react-native/metro-config": { - "optional": true - } - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", - "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.6", - "fb-dotslash": "0.5.8" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/dev-middleware": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", - "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", - "license": "MIT", - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.83.1", - "@react-native/debugger-shell": "0.83.1", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^7.5.10" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", - "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", - "license": "MIT", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/js-polyfills": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", - "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", - "license": "MIT", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/normalize-colors": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", - "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", - "license": "MIT" - }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", - "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", - "license": "MIT", - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@types/react": "^19.2.0", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@react-navigation/bottom-tabs": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.12.0.tgz", - "integrity": "sha512-/GtOfVWRligHG0mvX39I1FGdUWeWl0GVF2okEziQSQj0bOTrLIt7y44C3r/aCLkEpTVltCPGM3swqGTH3UfRCw==", - "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0" - }, - "peerDependencies": { - "@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" - } - }, - "node_modules/@react-navigation/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", - "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", - "license": "MIT", - "dependencies": { - "@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-is": "^19.1.0", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" - }, - "peerDependencies": { - "react": ">= 18.2.0" - } - }, - "node_modules/@react-navigation/elements": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", - "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", - "license": "MIT", - "dependencies": { - "color": "^4.2.3", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" - }, - "peerDependencies": { - "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0" - }, - "peerDependenciesMeta": { - "@react-native-masked-view/masked-view": { - "optional": true - } - } - }, - "node_modules/@react-navigation/native": { - "version": "7.1.28", - "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", - "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", - "license": "MIT", - "dependencies": { - "@react-navigation/core": "^7.14.0", - "escape-string-regexp": "^4.0.0", - "fast-deep-equal": "^3.1.3", - "nanoid": "^3.3.11", - "use-latest-callback": "^0.2.4" - }, - "peerDependencies": { - "react": ">= 18.2.0", - "react-native": "*" - } - }, - "node_modules/@react-navigation/native-stack": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.12.0.tgz", - "integrity": "sha512-XmNJsPshjkNsahgbxNgGWQUq4s1l6HqH/Fei4QsjBNn/0mTvVrRVZwJ1XrY9YhWYvyiYkAN6/OmarWQaQJ0otQ==", - "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0", - "warn-once": "^0.1.1" - }, - "peerDependencies": { - "@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" - } - }, - "node_modules/@react-navigation/routers": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", - "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11" - } - }, - "node_modules/@rn-primitives/checkbox": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/checkbox/-/checkbox-1.2.0.tgz", - "integrity": "sha512-FU/c81eoo6zGm4J4uCccjnqijrQ0grMkt6W3xhnOFkxqxiU2QrnlXN7ddhm2yN+s8CNnke4bOj/xr78wIaYfiw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-checkbox": "^1.3.2", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/hooks": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/hooks/-/hooks-1.3.0.tgz", - "integrity": "sha512-BR97reSu7uVDpyMeQdRJHT0w8KdS6jdYnOL6xQtqS2q3H6N7vXBlX4LFERqJZphD+aziJFIAJ3HJF1vtt6XlpQ==", - "license": "MIT", - "dependencies": { - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/label": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/label/-/label-1.2.0.tgz", - "integrity": "sha512-eThBr6vn2jS81ZS4JNcg0+02TkEircH4bZmjF4IZUDl4XRpevwK95NyOkbfhGYmpVbAuisAVxDmvNOQ4OVjfug==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-label": "^2.1.7", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/portal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/portal/-/portal-1.3.0.tgz", - "integrity": "sha512-a2DSce7TcSfcs0cCngLadAJOvx/+mdH9NRu+GxkX8NPRsGGhJvDEOqouMgDqLwx7z9mjXoUaZcwaVcemUSW9/A==", - "license": "MIT", - "dependencies": { - "zustand": "^5.0.4" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/progress": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/progress/-/progress-1.2.0.tgz", - "integrity": "sha512-bbO4WGSNAd2idYDW0ma4xCX9UFOjNK3U4F4hLRhMKglz3c/QVYfpKvlGQ0Y0d7kpelA7MQizvFeqGGYfxSuisw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-progress": "^1.1.7", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/select/-/select-1.2.0.tgz", - "integrity": "sha512-W3qFkdSAFPnjNMM7II5MiLCItjWOGXr8f+3obPtLAHcWrcsX/d1KogmplWXwmhBvVStCgE1OpJAD3DE2CHx9Rw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-select": "^2.2.5", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "@rn-primitives/portal": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/slider": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/slider/-/slider-1.2.0.tgz", - "integrity": "sha512-JRxTQelfEdG7tWA+7v5YY/9hUeZXe99BrfRH4b/kUbdMdzMp+MEEvJ6y1iqUlNIys5B6uuTWLnFjI8IhG/MkXw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slider": "^1.3.5", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/slot/-/slot-1.2.0.tgz", - "integrity": "sha512-cpbn+JLjSeq3wcA4uqgFsUimMrWYWx2Ks7r5rkwd1ds1utxynsGkLOKpYVQkATwWrYhtcoF1raxIKEqXuMN+/w==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/switch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/switch/-/switch-1.2.0.tgz", - "integrity": "sha512-M4r4LvLUFgn3SIkrMuEkDIxnRbHPLZF2cvKhdHmsk1vk6DSIw3WxYEA+0GkU6a8wnOCFzWRl4kHh5+x86bo1/w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-switch": "^1.2.5", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/tabs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/tabs/-/tabs-1.2.0.tgz", - "integrity": "sha512-sKqVYQD1s46eS8kGBsCGxJrtZ4my+sjXD5m2auGSdTJmJ8dNYqZJEI1caiMm64ZvRuQDe2bFsekAFGexBD4qUQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-tabs": "^1.1.12", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/toggle": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/toggle/-/toggle-1.2.0.tgz", - "integrity": "sha512-pVhlIdGCOaxBmcrSUYF3EUTeqOoLHCYEuj/qo64Ai89DnI5aSmReBgpttY5v/r0gNrku9dJZfrOe+uGzWNUn8Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-toggle": "^1.1.9", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/toggle-group": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/toggle-group/-/toggle-group-1.2.0.tgz", - "integrity": "sha512-xCbYZzGzCbr/3pu3xE9pEKzuXU5LHT0ZlK9WMdECQUHLRjSI2A6KnUiZJ+JqZ3lzcVlgCE2lZeZXmpvVyBXnNQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-toggle-group": "^1.1.10", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0", - "@rn-primitives/utils": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/tooltip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/tooltip/-/tooltip-1.2.0.tgz", - "integrity": "sha512-Fn1Y/maW1o64QI+nmBj2jBI/KdCEXv8kVGbDjjDFI68KUxDjuig/hACLiD7fEbLBhZqB/QnHUSRsnPUUOOVGdA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-tooltip": "^1.2.7", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "@rn-primitives/portal": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/types": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/types/-/types-1.2.0.tgz", - "integrity": "sha512-b+6zKgdKVqAfaFPSfhwlQL0dnPQXPpW890m3eguC0VDI1eOsoEvUfVb6lmgH4bum9MmI0xymq4tOUI/fsKLoCQ==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-vLXV5NuxIHDeb4Bw57FzdUh89/g8gz6GERm8TsbJaSUPsDXfnC/ffeYiZJb0LxNteKE3Nr8na4Jy2n26tFil7w==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rozhkov/react-useful-hooks": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@rozhkov/react-useful-hooks/-/react-useful-hooks-1.0.10.tgz", - "integrity": "sha512-aEDZDiqkpPJX8WqLqcnPGjXzRpCFiZmbtdr5RVUOciNbbANhdNu+oIxJv3g7ezMcgsYhgWp2/XGxU+g/ClsBew==", - "license": "MIT", - "dependencies": { - "default-values": "^1.0.2" - }, - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "license": "MIT" - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@standard-schema/utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", - "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", - "license": "MIT" - }, - "node_modules/@supabase/auth-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.95.3.tgz", - "integrity": "sha512-vD2YoS8E2iKIX0F7EwXTmqhUpaNsmbU6X2R0/NdFcs02oEfnHyNP/3M716f3wVJ2E5XHGiTFXki6lRckhJ0Thg==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/functions-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.95.3.tgz", - "integrity": "sha512-uTuOAKzs9R/IovW1krO0ZbUHSJnsnyJElTXIRhjJTqymIVGcHzkAYnBCJqd7468Fs/Foz1BQ7Dv6DCl05lr7ig==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/postgrest-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.95.3.tgz", - "integrity": "sha512-LTrRBqU1gOovxRm1vRXPItSMPBmEFqrfTqdPTRtzOILV4jPSueFz6pES5hpb4LRlkFwCPRmv3nQJ5N625V2Xrg==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/realtime-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.95.3.tgz", - "integrity": "sha512-D7EAtfU3w6BEUxDACjowWNJo/ZRo7sDIuhuOGKHIm9FHieGeoJV5R6GKTLtga/5l/6fDr2u+WcW/m8I9SYmaIw==", - "license": "MIT", - "dependencies": { - "@types/phoenix": "^1.6.6", - "@types/ws": "^8.18.1", - "tslib": "2.8.1", - "ws": "^8.18.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/storage-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.95.3.tgz", - "integrity": "sha512-4GxkJiXI3HHWjxpC3sDx1BVrV87O0hfX+wvJdqGv67KeCu+g44SPnII8y0LL/Wr677jB7tpjAxKdtVWf+xhc9A==", - "license": "MIT", - "dependencies": { - "iceberg-js": "^0.8.1", - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/supabase-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.95.3.tgz", - "integrity": "sha512-Fukw1cUTQ6xdLiHDJhKKPu6svEPaCEDvThqCne3OaQyZvuq2qjhJAd91kJu3PXLG18aooCgYBaB6qQz35hhABg==", - "license": "MIT", - "dependencies": { - "@supabase/auth-js": "2.95.3", - "@supabase/functions-js": "2.95.3", - "@supabase/postgrest-js": "2.95.3", - "@supabase/realtime-js": "2.95.3", - "@supabase/storage-js": "2.95.3" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", - "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", - "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", - "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", - "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", - "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", - "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-preset": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", - "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", - "@svgr/babel-plugin-transform-svg-component": "8.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/core": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", - "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^8.1.3", - "snake-case": "^3.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/core/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@svgr/core/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", - "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.21.3", - "entities": "^4.4.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/@svgr/plugin-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", - "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "@svgr/hast-util-to-babel-ast": "8.0.0", - "svg-parser": "^2.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", - "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^8.1.3", - "deepmerge": "^4.3.1", - "svgo": "^3.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@tanstack/query-core": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", - "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/query-persist-client-core": { - "version": "5.91.19", - "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.91.19.tgz", - "integrity": "sha512-whrASqbVq8261Ue+/ZzpHsrLDYVfRaENs4HTdLuYKxawkGWzdMfV7BmOdWl8ZF0mEBEbrQR8V6oE3R635JF2Fw==", - "license": "MIT", - "dependencies": { - "@tanstack/query-core": "5.90.20" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/react-query": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", - "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", - "license": "MIT", - "dependencies": { - "@tanstack/query-core": "5.90.20" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^18 || ^19" - } - }, - "node_modules/@tanstack/react-query-persist-client": { - "version": "5.90.22", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.22.tgz", - "integrity": "sha512-BrD3Y/SsrSIDl+t/gpYvjvGHXd7m7oF+GIqktKE8LmTgt7bS1lYHd/CLkVxMPixTU53gHHVFfPNGmY7Hv4L/7g==", - "license": "MIT", - "dependencies": { - "@tanstack/query-persist-client-core": "5.91.19" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "@tanstack/react-query": "^5.90.20", - "react": "^18 || ^19" - } - }, - "node_modules/@testing-library/react-hooks": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz", - "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@types/react": ">=16.9.0", - "@types/react-dom": ">=16.9.0", - "@types/react-test-renderer": ">=16.9.0", - "react-error-boundary": "^3.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0", - "react-test-renderer": ">=16.9.0" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-test-renderer": { - "optional": true - } - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@total-typescript/ts-reset": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.6.1.tgz", - "integrity": "sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node18": { - "version": "18.2.6", - "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz", - "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==", - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/bidirectional-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/bidirectional-map/-/bidirectional-map-1.0.4.tgz", - "integrity": "sha512-jxMzw5jyGHm46E0CHRWAarV6pVI8DvmIs/+bmOzo/grJy1Iga8LDFRB7lyFaBwARLLaAwfaqJr2Tuaog204npw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@types/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-35C93fYQlnLKLASkMPoxRvok4fENwB3By9clRLd2I/08n/XRl0pCdf7EB17K5oMMwZu8NBYA8i66jH5r/LYBKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hammerjs": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", - "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@types/jest/node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-matcher-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.2.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.2.tgz", - "integrity": "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/phoenix": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", - "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "19.2.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", - "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", - "license": "MIT", - "dependencies": { - "csstype": "^3.2.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/@types/react-test-renderer": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", - "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", - "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/type-utils": "8.55.0", - "@typescript-eslint/utils": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.55.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", - "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", - "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.55.0", - "@typescript-eslint/types": "^8.55.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", - "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", - "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", - "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/utils": "8.55.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", - "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", - "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.55.0", - "@typescript-eslint/tsconfig-utils": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "debug": "^4.4.3", - "minimatch": "^9.0.5", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", - "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", - "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.55.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vscode/sudo-prompt": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", - "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "license": "BSD-3-Clause" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/anser": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", - "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "license": "MIT" - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-fragments": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", - "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "colorette": "^1.0.7", - "slice-ansi": "^2.0.0", - "strip-ansi": "^5.0.0" - } - }, - "node_modules/ansi-fragments/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-fragments/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/appdirsjs": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", - "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "dev": true, - "license": "MIT" - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/aria-hidden": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", - "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "license": "MIT" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" - }, - "node_modules/assign-deep": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/assign-deep/-/assign-deep-0.4.8.tgz", - "integrity": "sha512-uxqXJCnNZDEjPnsaLKVzmh/ST5+Pqoz0wi06HDfHKx1ASNpSbbvz2qW2Gl8ZyHwr5jnm11X2S5eMQaP1lMZmCg==", - "license": "MIT", - "dependencies": { - "assign-symbols": "^0.1.1", - "is-primitive": "^2.0.0", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-0.1.1.tgz", - "integrity": "sha512-gwzH8QS/GV4pQsf6XOrlpBC6aDE8uJeZvymbEJ0W9TuDYqYOZc4RodvKDH98HCc+KFPYil1kD2XT0X0JWeOzQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-lock": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", - "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", - "license": "MIT" - }, - "node_modules/async-mutex": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", - "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/await-lock": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", - "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", - "license": "MIT" - }, - "node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "license": "MIT", - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "license": "MIT", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-inline-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz", - "integrity": "sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "require-resolve": "0.0.2" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", - "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.6", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", - "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.6" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-react-compiler": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", - "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.26.0" - } - }, - "node_modules/babel-plugin-react-native-web": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", - "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", - "license": "MIT" - }, - "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", - "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.29.1" - } - }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-plugin-transform-flow-enums": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", - "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-flow": "^7.12.1" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-expo": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.4.tgz", - "integrity": "sha512-GGPhL1bpJOFOQFRTkkVyhitf1CRtNjdVq2F1Ps7CWfw0fK/AmzAGO79cnnHuD24GhnwQe7C+Eip5U6ALbvPE3w==", - "license": "MIT", - "dependencies": { - "@babel/generator": "^7.20.5", - "@babel/helper-module-imports": "^7.25.9", - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.83.1", - "babel-plugin-react-compiler": "^1.0.0", - "babel-plugin-react-native-web": "~0.21.0", - "babel-plugin-syntax-hermes-parser": "^0.29.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "debug": "^4.3.4", - "resolve-from": "^5.0.0" - }, - "peerDependencies": { - "@babel/runtime": "^7.20.0", - "expo": "*", - "expo-widgets": "^55.0.0-alpha.6", - "react-refresh": ">=0.14.0 <1.0.0" - }, - "peerDependenciesMeta": { - "@babel/runtime": { - "optional": true - }, - "expo": { - "optional": true - }, - "expo-widgets": { - "optional": true - } - } - }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", - "license": "MIT", - "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/better-opn/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bidirectional-map": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bidirectional-map/-/bidirectional-map-1.1.1.tgz", - "integrity": "sha512-qfpqHKQbSpc5Eev0W35FZoPnoNUvItDrHbVU0YYKkAOBCZ4Dp3CYi9tjAQcdmqN6ui/9+ioIkb9m0uz8EZqPkA==", - "license": "ISC" - }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bin-links": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz", - "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==", - "dev": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^8.0.0", - "npm-normalize-package-bin": "^5.0.0", - "proc-log": "^6.0.0", - "read-cmd-shim": "^6.0.0", - "write-file-atomic": "^7.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/bin-links/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/bin-links/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", - "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, - "license": "MIT", - "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.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/bplist-creator": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", - "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", - "license": "MIT", - "dependencies": { - "stream-buffers": "2.2.x" - } - }, - "node_modules/bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", - "license": "MIT", - "dependencies": { - "big-integer": "1.6.x" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/bson": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", - "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", - "license": "Apache-2.0", - "engines": { - "node": ">=16.20.1" - } - }, - "node_modules/bubble-stream-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz", - "integrity": "sha512-Rqf0ly5H4HGt+ki/n3m7GxoR2uIGtNqezPlOLX8Vuo13j5/tfPuVvAr84eoGF7sYm6lKdbGnT/3q8qmzuT5Y9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.3.3", - "sliced": "^1.0.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001769", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", - "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/chromium-edge-launcher": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", - "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", - "dependencies": { - "clsx": "^2.1.1" - }, - "funding": { - "url": "https://polar.sh/cva" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cmd-shim": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", - "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "license": "MIT" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comlink": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", - "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", - "license": "Apache-2.0" - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/comment-json": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", - "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", - "license": "MIT", - "dependencies": { - "array-timsort": "^1.0.3", - "core-util-is": "^1.0.3", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "license": "MIT" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/core-js": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", - "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", - "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-env": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", - "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" - }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/cross-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/cross-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/cross-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-in-js-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", - "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", - "license": "MIT", - "dependencies": { - "hyphenate-style-name": "^1.0.3" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "~2.2.0" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/date-fns": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", - "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, - "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "license": "MIT" - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dedent": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", - "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^7.1.1" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-values": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/default-values/-/default-values-1.0.2.tgz", - "integrity": "sha512-OaZEvojjexigvv1IT6N0rKUD5Af7fG11a0jg87jySv5xzjc2+IEW9oWNvqxWLHGhShRRZ0QopCGzGjJv/aY+mw==", - "license": "MIT" - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/dnssd-advertise": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", - "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", - "license": "MIT" - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dompurify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", - "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/drizzle-kit": { - "version": "0.31.9", - "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.9.tgz", - "integrity": "sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@drizzle-team/brocli": "^0.10.2", - "@esbuild-kit/esm-loader": "^2.5.5", - "esbuild": "^0.25.4", - "esbuild-register": "^3.5.0" - }, - "bin": { - "drizzle-kit": "bin.cjs" - } - }, - "node_modules/drizzle-orm": { - "version": "0.45.1", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", - "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "@aws-sdk/client-rds-data": ">=3", - "@cloudflare/workers-types": ">=4", - "@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": "*", - "@tidbcloud/serverless": "*", - "@types/better-sqlite3": "*", - "@types/pg": "*", - "@types/sql.js": "*", - "@upstash/redis": ">=1.34.7", - "@vercel/postgres": ">=0.8.0", - "@xata.io/client": "*", - "better-sqlite3": ">=7", - "bun-types": "*", - "expo-sqlite": ">=14.0.0", - "gel": ">=2", - "knex": "*", - "kysely": "*", - "mysql2": ">=2", - "pg": ">=8", - "postgres": ">=3", - "sql.js": ">=1", - "sqlite3": ">=5" - }, - "peerDependenciesMeta": { - "@aws-sdk/client-rds-data": { - "optional": true - }, - "@cloudflare/workers-types": { - "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 - }, - "@tidbcloud/serverless": { - "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 - }, - "knex": { - "optional": true - }, - "kysely": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "postgres": { - "optional": true - }, - "prisma": { - "optional": true - }, - "sql.js": { - "optional": true - }, - "sqlite3": { - "optional": true - } - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.286", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", - "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-editor": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", - "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/envinfo": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", - "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/errorhandler": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", - "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "escape-html": "~1.0.3" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", - "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.1", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.1.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.3.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.5", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "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" - } - }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "peerDependencies": { - "esbuild": ">=0.12 <1" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-expo": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-55.0.0.tgz", - "integrity": "sha512-YvhaKrp1g7pR/qjdI12E5nw9y0DJZWgYr815vyW8wskGLsFvxATY3mtKL8zm3ZYzWj3Bvc37tRIS661TEkrv9A==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^8.18.2", - "@typescript-eslint/parser": "^8.18.2", - "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-expo": "^1.0.0", - "eslint-plugin-import": "^2.30.0", - "eslint-plugin-react": "^7.37.3", - "eslint-plugin-react-hooks": "^5.1.0", - "globals": "^16.0.0" - }, - "peerDependencies": { - "eslint": ">=8.10" - } - }, - "node_modules/eslint-config-expo/node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", - "license": "MIT", - "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" - } - }, - "node_modules/eslint-config-expo/node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-config-universe": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-universe/-/eslint-config-universe-12.1.0.tgz", - "integrity": "sha512-nAT0/rcOyYvsy0tY1yq0/BchUQImRCpORONzCvLkjixRBH5CbkMddb/V8ZlOLPgkfu3lp+sByRmSXNfoupTj2w==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0" - }, - "peerDependencies": { - "eslint": ">=8.10", - "prettier": ">=3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-universe/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/eslint-config-universe/node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-config-universe/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-universe/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-config-universe/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-config-universe/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", - "license": "ISC", - "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-drizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-drizzle/-/eslint-plugin-drizzle-0.2.3.tgz", - "integrity": "sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==", - "license": "Apache-2.0", - "peerDependencies": { - "eslint": ">=8.0.0" - } - }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-expo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-1.0.0.tgz", - "integrity": "sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "^8.29.1", - "@typescript-eslint/utils": "^8.29.1", - "eslint": "^9.24.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "eslint": ">=8.10" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "license": "MIT", - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", - "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.12" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-compiler": { - "version": "19.1.0-rc.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.1.0-rc.2.tgz", - "integrity": "sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "hermes-parser": "^0.25.1", - "zod": "^3.22.4", - "zod-validation-error": "^3.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" - }, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-react-compiler/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-react-compiler/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.25.1" - } - }, - "node_modules/eslint-plugin-react-compiler/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", - "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "hermes-parser": "^0.25.1", - "zod": "^3.25.0 || ^4.0.0", - "zod-validation-error": "^3.5.0 || ^4.0.0" - }, - "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" - } - }, - "node_modules/eslint-plugin-react-hooks/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-react-hooks/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.25.1" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", - "license": "MIT" - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventsource": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eventsource-parser": "^3.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "license": "MIT", - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expo": { - "version": "55.0.0-preview.10", - "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.10.tgz", - "integrity": "sha512-BtHgdcu/XS4yYSJTB4HHbYogT2qHl6S4usFqUPhoFfVu/F440VU3J98uUqbDLh5I8OcsZ2PbhjRpOy7uR+MExg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.0", - "@expo/cli": "55.0.7", - "@expo/config": "~55.0.4", - "@expo/config-plugins": "~55.0.4", - "@expo/devtools": "55.0.2", - "@expo/fingerprint": "0.16.3", - "@expo/local-build-cache-provider": "55.0.3", - "@expo/log-box": "55.0.6", - "@expo/metro": "~54.2.0", - "@expo/metro-config": "55.0.5", - "@expo/vector-icons": "^15.0.2", - "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~55.0.4", - "expo-asset": "~55.0.4", - "expo-constants": "~55.0.4", - "expo-file-system": "~55.0.5", - "expo-font": "~55.0.3", - "expo-keep-awake": "~55.0.2", - "expo-modules-autolinking": "55.0.3", - "expo-modules-core": "55.0.8", - "pretty-format": "^29.7.0", - "react-refresh": "^0.14.2", - "whatwg-url-minimum": "^0.1.1" - }, - "bin": { - "expo": "bin/cli", - "expo-modules-autolinking": "bin/autolinking", - "fingerprint": "bin/fingerprint" - }, - "peerDependencies": { - "@expo/dom-webview": "*", - "@expo/metro-runtime": "*", - "react": "*", - "react-native": "*", - "react-native-webview": "*" - }, - "peerDependenciesMeta": { - "@expo/dom-webview": { - "optional": true - }, - "@expo/metro-runtime": { - "optional": true - }, - "react-native-webview": { - "optional": true - } - } - }, - "node_modules/expo-application": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-55.0.5.tgz", - "integrity": "sha512-+TSHZMobYEe96CcKRYaNMdO9CcuKpO/hCjBcB0SeoOkEwDbfPyY3KcdoVW6fU7xyPZYN0wucCnLgTXKqAeB5sQ==", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-asset": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.4.tgz", - "integrity": "sha512-eaPPe9Sw4V0nL/KkEvuWpyeeSoGhP2fu1ZA7wkldqywhMVhhY+7kerMkQ7nPgJVtevIfkQRw7wD8ghZEzrKzmg==", - "license": "MIT", - "dependencies": { - "@expo/image-utils": "^0.8.12", - "expo-constants": "~55.0.4" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-atlas": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/expo-atlas/-/expo-atlas-0.4.3.tgz", - "integrity": "sha512-nN2bouxFvMsqZqLl0ka+eI9Ofida0PcuoE4v+7fHlgyp95X2cCL8Acf0nRKXmmIBEYazdw0d7BAOZfC0b41oxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@expo/server": "^0.5.0", - "arg": "^5.0.2", - "chalk": "^4.1.2", - "compression": "^1.7.4", - "connect": "^3.7.0", - "express": "^4.19.2", - "freeport-async": "^2.0.0", - "getenv": "^2.0.0", - "morgan": "^1.10.0", - "open": "^8.4.2", - "serve-static": "^1.15.0", - "stream-json": "^1.8.0" - }, - "bin": { - "expo-atlas": "build/src/cli/bin.js" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-atlas/node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/expo-atlas/node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/expo-atlas/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expo-atlas/node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/expo-atlas/node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/expo-atlas/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/expo-atlas/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-atlas/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/expo-atlas/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-atlas/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/expo-audio": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.5.tgz", - "integrity": "sha512-B2UpahrjHDSi4BPP9rwZIDm1aNBzZ+KwVj09nIoQo2XC5ng2DuHBUFZF5cISX7gmUjS2HhsXtV5/CvKJLUt+6g==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "expo-asset": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-build-properties": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-55.0.6.tgz", - "integrity": "sha512-DfNRMAOGK3a2yao5RmCgNIz4bvCBFS8uHBHwYbd6RZos0n3Qqs96/l+Y9XMWJ/j7xVlXrTacw2wwwstqBGbwYA==", - "license": "MIT", - "dependencies": { - "@expo/schema-utils": "^55.0.2", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-build-properties/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-clipboard": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-55.0.5.tgz", - "integrity": "sha512-uzGQikfr46+E8bL//tzo+049VYFUzcc3vFgIqImjPrwF5oboKVkOvzsnwhTIQNC++fyU5i3jkLcGd+YK5EwcmA==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-constants": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.4.tgz", - "integrity": "sha512-zdPxsYnL8LrW91sXivdBIH5nouTDUG0npMZxaYhvEO/2p60iN0W4jK3n2sRFrPl31WctLWSs4ato/wIKnRuUFA==", - "license": "MIT", - "dependencies": { - "@expo/config": "~55.0.4", - "@expo/env": "~2.1.0" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*" - } - }, - "node_modules/expo-dev-client": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-55.0.5.tgz", - "integrity": "sha512-p0xkyrCYXztUrVl6fqIrhUVR30Cxp5PbP9Vv1IXl2po8OkFDQklu5y908NBN/oeWpgv1lSgKpRTdZ1G2nsJ7IQ==", - "license": "MIT", - "dependencies": { - "expo-dev-launcher": "55.0.6", - "expo-dev-menu": "55.0.5", - "expo-dev-menu-interface": "55.0.1", - "expo-manifests": "~55.0.5", - "expo-updates-interface": "~55.1.1" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-dev-launcher": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-55.0.6.tgz", - "integrity": "sha512-Zrmdc0cgvizmX9Wd+Kc5iz0T5QQ2DSsx1Sedww9Ra4qQlUcL2GzoVnDqqw63zI5ax+rnMbBVWyiQUqHN1w/l/A==", - "license": "MIT", - "dependencies": { - "@expo/schema-utils": "^55.0.2", - "expo-dev-menu": "55.0.5", - "expo-manifests": "~55.0.5" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-dev-menu": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-55.0.5.tgz", - "integrity": "sha512-NCNvsUl+GaVD/FgzEiHtNBLoj4LCE2xE40FKsYsV25csNAp2JizeR5eSIAKW2NX4UTWvgdqOQMIoXhERt7pZBw==", - "license": "MIT", - "dependencies": { - "expo-dev-menu-interface": "55.0.1" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-dev-menu-interface": { - "version": "55.0.1", - "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-55.0.1.tgz", - "integrity": "sha512-FkNtwq1q6NmYoy28pj+ZLuHmirJgc039pQbJ167MZJIaprLcMN1yy67qA7xBHK+FNJ8AN8kGCtMTPByg5UC72A==", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-device": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-55.0.6.tgz", - "integrity": "sha512-GCO3shHTn8zk5FUBywra3qyFXv08uNQpJSGeNg/gBBJw+GVpgtZ/9mhB3gVh3daueCV+PWRFWn14QT3lW6PwqQ==", - "license": "MIT", - "dependencies": { - "ua-parser-js": "^0.7.33" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-drizzle-studio-plugin": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/expo-drizzle-studio-plugin/-/expo-drizzle-studio-plugin-0.2.1.tgz", - "integrity": "sha512-AjMC7SOutMAv/MkeJSp/26gnHLAA17SG8EtsjIKW6tDcBkq4plDVhjMLusoGe9f0vzYK8KrOvWjEWZ/R+KvIGg==", - "license": "MIT", - "peerDependencies": { - "expo": ">=53.0.5", - "expo-sqlite": ">=15.2.9" - } - }, - "node_modules/expo-eas-client": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-55.0.2.tgz", - "integrity": "sha512-fjOgSXaZFBK2Xmzn/uw0DTF3BsYv97JEa4PYXXqVCEvNJPwJB1cV1eX6Xyq6iKGIhMPH9k62sOc+oUdt094WCw==", - "license": "MIT" - }, - "node_modules/expo-file-system": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.5.tgz", - "integrity": "sha512-ZD9uJS4tmmyPBHcW7j90+CUsdvfavXdSHSQWG22g7Zm1x02E5elHKOAhsv9gFDGsMDc1nvgR+IvrWlokjkXVSQ==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react-native": "*" - } - }, - "node_modules/expo-font": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", - "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", - "license": "MIT", - "dependencies": { - "fontfaceobserver": "^2.1.0" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-glass-effect": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-55.0.5.tgz", - "integrity": "sha512-ui3yOuntcqLukx32mPLcnYucRGN0zWk67euC45t6WlM6IPjXsRo6Z830drjKE7LPWbpWlRbOkdM6BpoAj+yDCQ==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-haptics": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-55.0.5.tgz", - "integrity": "sha512-8bUIjxLtET5290p0WKyMQ8S3lvxMFEOdbA3GHt07QhgPf0eqeCtsH8/+g+ojtVT9RieZM9dZBHiqofdKpwCQfg==", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-image": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", - "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", - "license": "MIT", - "dependencies": { - "sf-symbols-typescript": "^2.2.0" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native-web": { - "optional": true - } - } - }, - "node_modules/expo-json-utils": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-55.0.0.tgz", - "integrity": "sha512-aupt/o5PDAb8dXDCb0JcRdkqnTLxe/F+La7jrnyd/sXlYFfRgBJLFOa1SqVFXm1E/Xam1SE/yw6eAb+DGY7Arg==", - "license": "MIT" - }, - "node_modules/expo-keep-awake": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", - "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*" - } - }, - "node_modules/expo-linear-gradient": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-55.0.5.tgz", - "integrity": "sha512-zesU+u1/chAFCq+hYtV1xy/5XeKbDWTytOrvJlI3cfxUXV3Ezm9hP3xV6iCzbc72a5ROJYyXLAvMuoM4Pl9ZOg==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-linking": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-55.0.4.tgz", - "integrity": "sha512-n4gKPzxskShfkiXZoMMOcgyJ/JgwmyOCLSBxBBg3dsBetg+KGTB5vZw7oLCu/MsWuKfbsbc/eyuvzzDyWTrpJw==", - "license": "MIT", - "dependencies": { - "expo-constants": "~55.0.4", - "invariant": "^2.2.4" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-localization": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-55.0.5.tgz", - "integrity": "sha512-1AQvwtTqIH1aBZUiGI7kKFs5bTrfJOqYu4wCwmbB18P99dUZ8R4AfYzwmqI3aT/v1LggH5P7WjoW/NI+f40jpg==", - "license": "MIT", - "dependencies": { - "rtl-detect": "^1.0.2" - }, - "peerDependencies": { - "expo": "*", - "react": "*" - } - }, - "node_modules/expo-manifests": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-55.0.5.tgz", - "integrity": "sha512-GXSVnEkAJ1o71L/WshV/NmDda/vnD4poDDKi/oSYSMd8him2u0GfqqzCsgec6Odlqz5fMqXO4JgoBaWKtzn8Aw==", - "license": "MIT", - "dependencies": { - "@expo/config": "~55.0.4", - "expo-json-utils": "~55.0.0" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-module-scripts": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/expo-module-scripts/-/expo-module-scripts-3.5.4.tgz", - "integrity": "sha512-grEDrWiUyB5X1F5slHu7lUEbU7sDj1CbokUmKezTt/Zbz34xQFwCuHQlmv4Tl2LPyjJVHZls3VnEytfJ+5yYUw==", - "license": "MIT", - "dependencies": { - "@babel/cli": "^7.23.4", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/preset-env": "^7.23.8", - "@babel/preset-typescript": "^7.23.3", - "@expo/npm-proofread": "^1.0.1", - "@testing-library/react-hooks": "^7.0.1", - "@tsconfig/node18": "^18.2.2", - "@types/jest": "^29.2.1", - "babel-plugin-dynamic-import-node": "^2.3.3", - "babel-preset-expo": "~11.0.15", - "commander": "^2.19.0", - "eslint-config-universe": "^12.0.0", - "find-yarn-workspace-root": "^2.0.0", - "glob": "^7.1.7", - "jest-expo": "~51.0.0-unreleased", - "jest-snapshot-prettier": "npm:prettier@^2", - "jest-watch-typeahead": "2.2.1", - "ts-jest": "~29.0.4", - "typescript": "^5.1.3" - }, - "bin": { - "expo-module": "bin/expo-module.js" - } - }, - "node_modules/expo-module-scripts/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/expo-module-scripts/node_modules/@babel/generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", - "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.2.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "node_modules/expo-module-scripts/node_modules/@expo/config": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.4.tgz", - "integrity": "sha512-g5ns5u1JSKudHYhjo1zaSfkJ/iZIcWmUmIQptMJZ6ag1C0ShL2sj8qdfU8MmAMuKLOgcIfSaiWlQnm4X3VJVkg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~8.0.8", - "@expo/config-types": "^51.0.3", - "@expo/json-file": "^8.3.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "3.34.0" - } - }, - "node_modules/expo-module-scripts/node_modules/@expo/config-plugins": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.11.tgz", - "integrity": "sha512-oALE1HwnLFthrobAcC9ocnR9KXLzfWEjgIe4CPe+rDsfC6GDs8dGYCXfRFoCEzoLN4TGYs9RdZ8r0KoCcNrm2A==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^51.0.3", - "@expo/json-file": "~8.3.0", - "@expo/plist": "^0.1.0", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slash": "^3.0.0", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" - } - }, - "node_modules/expo-module-scripts/node_modules/@expo/config-plugins/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-module-scripts/node_modules/@expo/config-types": { - "version": "51.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.3.tgz", - "integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-module-scripts/node_modules/@expo/json-file": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", - "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/expo-module-scripts/node_modules/@expo/plist": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", - "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "~0.7.7", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" - } - }, - "node_modules/expo-module-scripts/node_modules/@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/expo-module-scripts/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", - "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", - "license": "MIT", - "dependencies": { - "@react-native/codegen": "0.74.87" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/expo-module-scripts/node_modules/@react-native/babel-preset": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", - "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "@react-native/babel-plugin-codegen": "0.74.87", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/expo-module-scripts/node_modules/@react-native/codegen": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", - "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.0", - "glob": "^7.1.1", - "hermes-parser": "0.19.1", - "invariant": "^2.2.4", - "jscodeshift": "^0.14.0", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/expo-module-scripts/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/expo-module-scripts/node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/expo-module-scripts/node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expo-module-scripts/node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expo-module-scripts/node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/@types/yargs": { - "version": "13.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", - "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/expo-module-scripts/node_modules/@xmldom/xmldom": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", - "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", - "deprecated": "this version is no longer supported, please update to at least 0.8.*", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/expo-module-scripts/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/expo-module-scripts/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler": { - "version": "0.0.0-experimental-592953e-20240517", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-592953e-20240517.tgz", - "integrity": "sha512-OjG1SVaeQZaJrqkMFJatg8W/MTow8Ak5rx2SI0ETQBO1XvOk/XZGMbltNCPdFJLKghBYoBjC+Y3Ap/Xr7B01mA==", - "license": "MIT", - "dependencies": { - "@babel/generator": "7.2.0", - "@babel/types": "^7.19.0", - "chalk": "4", - "invariant": "^2.2.4", - "pretty-format": "^24", - "zod": "^3.22.4", - "zod-validation-error": "^2.1.0" - } - }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-native-web": { - "version": "0.19.13", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", - "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/babel-preset-expo": { - "version": "11.0.15", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.15.tgz", - "integrity": "sha512-rgiMTYwqIPULaO7iZdqyL7aAff9QLOX6OWUtLZBlOrOTreGY1yHah/5+l8MvI6NVc/8Zj5LY4Y5uMSnJIuzTLw==", - "license": "MIT", - "dependencies": { - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.74.87", - "babel-plugin-react-compiler": "0.0.0-experimental-592953e-20240517", - "babel-plugin-react-native-web": "~0.19.10", - "react-refresh": "^0.14.2" - } - }, - "node_modules/expo-module-scripts/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/expo-module-scripts/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/getenv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", - "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/expo-module-scripts/node_modules/hermes-estree": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", - "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/hermes-parser": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", - "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.19.1" - } - }, - "node_modules/expo-module-scripts/node_modules/jest-expo": { - "version": "51.0.4", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.4.tgz", - "integrity": "sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug==", - "license": "MIT", - "dependencies": { - "@expo/config": "~9.0.0-beta.0", - "@expo/json-file": "^8.3.0", - "@jest/create-cache-key-function": "^29.2.1", - "babel-jest": "^29.2.1", - "find-up": "^5.0.0", - "jest-environment-jsdom": "^29.2.1", - "jest-watch-select-projects": "^2.0.0", - "jest-watch-typeahead": "2.2.1", - "json5": "^2.2.3", - "lodash": "^4.17.19", - "react-test-renderer": "18.2.0", - "stacktrace-js": "^2.0.2" - }, - "bin": { - "jest": "bin/jest.js" - } - }, - "node_modules/expo-module-scripts/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-module-scripts/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/expo-module-scripts/node_modules/pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/expo-module-scripts/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/react-test-renderer": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", - "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", - "license": "MIT", - "dependencies": { - "react-is": "^18.2.0", - "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/expo-module-scripts/node_modules/react-test-renderer/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/expo-module-scripts/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-module-scripts/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expo-module-scripts/node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-module-scripts/node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/expo-module-scripts/node_modules/xmlbuilder": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", - "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/expo-module-scripts/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/expo-module-scripts/node_modules/zod-validation-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", - "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "zod": "^3.18.0" - } - }, - "node_modules/expo-modules-autolinking": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", - "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0" - }, - "bin": { - "expo-modules-autolinking": "bin/expo-modules-autolinking.js" - } - }, - "node_modules/expo-modules-autolinking/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/expo-modules-core": { - "version": "55.0.8", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.8.tgz", - "integrity": "sha512-WWcbsDmxqz7YQjr0dDRCpiwrWYoz/T4mxUh7ZbUzj8SzsUGrvmvczPj2kAS7hHviimRyfZcTenAh22Wuw/abBA==", - "license": "MIT", - "dependencies": { - "invariant": "^2.2.4" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-router": { - "version": "55.0.0-preview.7", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-55.0.0-preview.7.tgz", - "integrity": "sha512-nrigtPHg5/5ZIeY0Qjo6/wM7N27bTbq22FuNrTgGsNOt5V8sPkvs8lsMl6OsnvEZCKJ2xFYPkL3UGSEvGVxT9A==", - "license": "MIT", - "dependencies": { - "@expo/metro-runtime": "^55.0.5", - "@expo/schema-utils": "^55.0.2", - "@radix-ui/react-slot": "1.2.0", - "@radix-ui/react-tabs": "^1.1.12", - "@react-navigation/bottom-tabs": "7.10.1", - "@react-navigation/native": "7.1.28", - "@react-navigation/native-stack": "7.10.1", - "client-only": "^0.0.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "expo-glass-effect": "^55.0.5", - "expo-image": "^55.0.3", - "expo-server": "^55.0.3", - "expo-symbols": "^55.0.3", - "fast-deep-equal": "^3.1.3", - "invariant": "^2.2.4", - "nanoid": "^3.3.8", - "query-string": "^7.1.3", - "react-fast-compare": "^3.2.2", - "react-native-is-edge-to-edge": "^1.1.6", - "semver": "~7.6.3", - "server-only": "^0.0.1", - "sf-symbols-typescript": "^2.1.0", - "shallowequal": "^1.1.0", - "use-latest-callback": "^0.2.1", - "vaul": "^1.1.2" - }, - "peerDependencies": { - "@expo/log-box": "55.0.6", - "@expo/metro-runtime": "^55.0.5", - "@react-navigation/drawer": "^7.7.2", - "@testing-library/react-native": ">= 12.0.0", - "expo": "*", - "expo-constants": "^55.0.4", - "expo-linking": "^55.0.4", - "react": "*", - "react-dom": "*", - "react-native": "*", - "react-native-gesture-handler": "*", - "react-native-reanimated": "*", - "react-native-safe-area-context": ">= 5.4.0", - "react-native-screens": "*", - "react-native-web": "*", - "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" - }, - "peerDependenciesMeta": { - "@react-navigation/drawer": { - "optional": true - }, - "@testing-library/react-native": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-native-gesture-handler": { - "optional": true - }, - "react-native-reanimated": { - "optional": true - }, - "react-native-web": { - "optional": true - }, - "react-server-dom-webpack": { - "optional": true - } - } - }, - "node_modules/expo-router/node_modules/@radix-ui/react-slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", - "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/expo-router/node_modules/@react-navigation/bottom-tabs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", - "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", - "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0" - }, - "peerDependencies": { - "@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" - } - }, - "node_modules/expo-router/node_modules/@react-navigation/native-stack": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.10.1.tgz", - "integrity": "sha512-8jt7olKysn07HuKKSjT/ahZZTV+WaZa96o9RI7gAwh7ATlUDY02rIRttwvCyjovhSjD9KCiuJ+Hd4kwLidHwJw==", - "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0", - "warn-once": "^0.1.1" - }, - "peerDependencies": { - "@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" - } - }, - "node_modules/expo-router/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-server": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", - "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", - "license": "MIT", - "engines": { - "node": ">=20.16.0" - } - }, - "node_modules/expo-sharing": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-55.0.6.tgz", - "integrity": "sha512-4X88AnVZTWUjCEYNvHFtd2UMEX43G2zFJBxVANI8RzAjDny4QrzTgdCEFNg0ufZyGMxZL3V5gzUkXVP5y7IEYg==", - "license": "MIT", - "dependencies": { - "@expo/config-plugins": "^55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/plist": "^0.5.2" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-splash-screen": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-55.0.5.tgz", - "integrity": "sha512-Q8PSVonkFEMUykDMBw9kdwNOtc9cMD7Vlz+MU4PYBTHrVQB5EDONnecmDwFDPYF8wc57ef73wkYxuVmrQO533A==", - "license": "MIT", - "dependencies": { - "@expo/prebuild-config": "^55.0.4" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-sqlite": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-55.0.5.tgz", - "integrity": "sha512-tYaktd5dQc3fEsmRSSvPBW80o6sq3mzLyOpQ9smMFWSGKvcSJsfvpbE6c8axgdhRMb3OMF4UAhASui+kL9GONQ==", - "license": "MIT", - "dependencies": { - "await-lock": "^2.2.2" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-status-bar": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-55.0.2.tgz", - "integrity": "sha512-iV/Az9SqwY2j5e/tZ7Fz7vwolfXp0xFTScET4lnS615oLQfdhyI2HOTg4CL4q7UVlSDW3HN4rCkDK2oASNVO7g==", - "license": "MIT", - "dependencies": { - "react-native-is-edge-to-edge": "^1.2.1" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-structured-headers": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-55.0.0.tgz", - "integrity": "sha512-udaNvuWb45/Sryq9FLC/blwgOChhznuqlTrUzVjC0T83pMdcmscKJX23lnNDW6hCec8p81Y3z1DIFwIyk0g/PQ==", - "license": "MIT" - }, - "node_modules/expo-symbols": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-55.0.3.tgz", - "integrity": "sha512-r3AnrAAPw/zqha6dBdkJV7ueELy/yyeEKU38qzFFz37w1mhcXobuXahnfPSnY54lKrTbqrSiFMj/aGh25ElnoQ==", - "license": "MIT", - "dependencies": { - "@expo-google-fonts/material-symbols": "^0.4.1", - "sf-symbols-typescript": "^2.0.0" - }, - "peerDependencies": { - "expo": "*", - "expo-font": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-system-ui": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-55.0.5.tgz", - "integrity": "sha512-tcE0SJCfKZgESWUNBleqNIdgFZj6Y41WvgOpwMDhke9Fezwsput1MWz2L2QyHoeo1bUE5KuNuI5+nCWdecSnAQ==", - "license": "MIT", - "dependencies": { - "@react-native/normalize-colors": "0.83.1", - "debug": "^4.3.2" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native-web": { - "optional": true - } - } - }, - "node_modules/expo-updates": { - "version": "55.0.7", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-55.0.7.tgz", - "integrity": "sha512-AkpyXJ2nRfKSB1MF3qkHYQeuG7Or9FMWcQAbrkIzETGeA3jpfPo0APvuq5PJjZf1VDX2AN3zznmYjrQ/MSODTA==", - "license": "MIT", - "dependencies": { - "@expo/code-signing-certificates": "^0.0.6", - "@expo/plist": "^0.5.2", - "@expo/spawn-async": "^1.7.2", - "arg": "4.1.0", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "expo-eas-client": "~55.0.2", - "expo-manifests": "~55.0.5", - "expo-structured-headers": "~55.0.0", - "expo-updates-interface": "~55.1.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "ignore": "^5.3.1", - "resolve-from": "^5.0.0" - }, - "bin": { - "expo-updates": "bin/cli.js" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-updates-interface": { - "version": "55.1.1", - "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-55.1.1.tgz", - "integrity": "sha512-++rlh9dNRUgm+uqN+x4vB/8ELidt0gc3kbwec55YzRizdD845kn5ufjTcGpkGs9SbAYHsP0eh8axlKHpY/v7Kg==", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-updates/node_modules/arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", - "license": "MIT" - }, - "node_modules/expo-updates/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-updates/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "license": "Apache-2.0" - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express-rate-limit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", - "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "ip-address": "10.0.1" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/express-rate-limit" - }, - "peerDependencies": { - "express": ">= 4.11" - } - }, - "node_modules/express/node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^1.1.1" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-dotslash": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", - "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", - "license": "(MIT OR Apache-2.0)", - "bin": { - "dotslash": "bin/dotslash" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fbjs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", - "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", - "license": "MIT", - "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^1.0.35" - } - }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "license": "MIT" - }, - "node_modules/fbjs/node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "license": "MIT", - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/fbjs/node_modules/ua-parser-js": { - "version": "1.0.41", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", - "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "license": "MIT", - "bin": { - "ua-parser-js": "script/cli.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fd-package-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz", - "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "walk-up-path": "^4.0.0" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/fetch-nodeshim": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", - "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", - "license": "MIT" - }, - "node_modules/fflate": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", - "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", - "license": "MIT" - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/find-cache-dir/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "license": "ISC" - }, - "node_modules/flow-enums-runtime": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", - "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", - "license": "MIT" - }, - "node_modules/flow-parser": { - "version": "0.299.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.299.0.tgz", - "integrity": "sha512-phGMRoNt6SNglPHGRbCyWm9/pxfe6t/t4++EIYPaBGWT6e0lphLBgUMrvpL62NbRo9R549o3oqrbKHq82kANCw==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/fontfaceobserver": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", - "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", - "license": "BSD-2-Clause" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formatly": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz", - "integrity": "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fd-package-json": "^2.0.0" - }, - "bin": { - "formatly": "bin/index.mjs" - }, - "engines": { - "node": ">=18.3.0" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/framer-motion": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", - "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", - "license": "MIT", - "dependencies": { - "@motionone/dom": "10.12.0", - "framesync": "6.0.1", - "hey-listen": "^1.0.8", - "popmotion": "11.0.3", - "style-value-types": "5.0.0", - "tslib": "^2.1.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": ">=16.8 || ^17.0.0 || ^18.0.0", - "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/framesync": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", - "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/freeport-async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", - "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "license": "MIT" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/getenv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", - "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "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", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hermes-compiler": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", - "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", - "license": "MIT" - }, - "node_modules/hermes-estree": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", - "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", - "license": "MIT" - }, - "node_modules/hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", - "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.32.0" - } - }, - "node_modules/hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", - "license": "MIT" - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/hono": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.9.tgz", - "integrity": "sha512-Eaw2YTGM6WOxA6CXbckaEvslr2Ne4NFsKrvc0v97JD5awbmeBLO5w9Ho9L9kmKonrwF9RJlW6BxT1PVv/agBHQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/hyphenate-style-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", - "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", - "license": "BSD-3-Clause" - }, - "node_modules/iceberg-js": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", - "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", - "license": "MIT", - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=16.x" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "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.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/inline-style-prefixer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", - "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", - "license": "MIT", - "dependencies": { - "css-in-js-utils": "^3.1.0" - } - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "license": "MIT" - }, - "node_modules/is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^9.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "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 - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.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.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "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 - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "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.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "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 - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-expo": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", - "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@expo/config": "~55.0.4", - "@expo/json-file": "^10.0.12", - "@jest/create-cache-key-function": "^29.2.1", - "@jest/globals": "^29.2.1", - "babel-jest": "^29.2.1", - "jest-environment-jsdom": "^29.2.1", - "jest-snapshot": "^29.2.1", - "jest-watch-select-projects": "^2.0.0", - "jest-watch-typeahead": "2.2.1", - "json5": "^2.2.3", - "lodash": "^4.17.19", - "react-test-renderer": "19.2.0", - "server-only": "^0.0.1", - "stacktrace-js": "^2.0.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*", - "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" - }, - "peerDependenciesMeta": { - "react-server-dom-webpack": { - "optional": true - } - } - }, - "node_modules/jest-expo/node_modules/react-test-renderer": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", - "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "react-is": "^19.2.0", - "scheduler": "^0.27.0" - }, - "peerDependencies": { - "react": "^19.2.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "license": "MIT", - "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": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "license": "MIT", - "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": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "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.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot-prettier": { - "name": "prettier", - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-select-projects": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jest-watch-select-projects/-/jest-watch-select-projects-2.0.0.tgz", - "integrity": "sha512-j00nW4dXc2NiCW6znXgFLF9g8PJ0zP25cpQ1xRro/HU2GBfZQFZD0SoXnAlaoKkIY4MlfTMkKGbNXFpvCdjl1w==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.3.0", - "chalk": "^3.0.0", - "prompts": "^2.2.1" - } - }, - "node_modules/jest-watch-select-projects/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz", - "integrity": "sha512-jYpYmUnTzysmVnwq49TAxlmtOAwp8QIqvZyoofQFn8fiWhEDZj33ZXzg3JA4nGnzWFm1hbWf3ADpteUokvXgFA==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^6.0.0", - "chalk": "^4.0.0", - "jest-regex-util": "^29.0.0", - "jest-watcher": "^29.0.0", - "slash": "^5.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "jest": "^27.0.0 || ^28.0.0 || ^29.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-escapes": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", - "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/char-regex": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", - "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "license": "MIT", - "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jimp-compact": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", - "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", - "license": "MIT" - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/jose": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", - "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-base64": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", - "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/js-logger": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/js-logger/-/js-logger-1.6.1.tgz", - "integrity": "sha512-yTgMCPXVjhmg28CuUH8CKjU+cIKL/G+zTu4Fn4lQxs8mRFH/03QTNvEFngcxfg/gRDiQAOoyCKmMTOm9ayOzXA==", - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsc-safe-url": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", - "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", - "license": "0BSD" - }, - "node_modules/jscodeshift": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", - "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.21.0", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/jscodeshift/node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-typed": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", - "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/json-stable-stringify": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz", - "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "isarray": "^2.0.5", - "jsonify": "^0.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "dev": true, - "license": "Public Domain", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/knip": { - "version": "5.83.1", - "resolved": "https://registry.npmjs.org/knip/-/knip-5.83.1.tgz", - "integrity": "sha512-av3ZG/Nui6S/BNL8Tmj12yGxYfTnwWnslouW97m40him7o8MwiMjZBY9TPvlEWUci45aVId0/HbgTwSKIDGpMw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/webpro" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/knip" - } - ], - "license": "ISC", - "dependencies": { - "@nodelib/fs.walk": "^1.2.3", - "fast-glob": "^3.3.3", - "formatly": "^0.3.0", - "jiti": "^2.6.0", - "js-yaml": "^4.1.1", - "minimist": "^1.2.8", - "oxc-resolver": "^11.15.0", - "picocolors": "^1.1.1", - "picomatch": "^4.0.1", - "smol-toml": "^1.5.2", - "strip-json-comments": "5.0.3", - "zod": "^4.1.11" - }, - "bin": { - "knip": "bin/knip.js", - "knip-bun": "bin/knip-bun.js" - }, - "engines": { - "node": ">=18.18.0" - }, - "peerDependencies": { - "@types/node": ">=18", - "typescript": ">=5.0.4 <7" - } - }, - "node_modules/knip/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/knip/node_modules/strip-json-comments": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", - "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lan-network": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.1.7.tgz", - "integrity": "sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==", - "license": "MIT", - "bin": { - "lan-network": "dist/lan-network-cli.js" - } - }, - "node_modules/launch-editor": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", - "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^1.1.1", - "shell-quote": "^1.8.3" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libsql": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.5.22.tgz", - "integrity": "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==", - "cpu": [ - "x64", - "arm64", - "wasm32", - "arm" - ], - "dev": true, - "license": "MIT", - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "@neon-rs/load": "^0.0.4", - "detect-libc": "2.0.2" - }, - "optionalDependencies": { - "@libsql/darwin-arm64": "0.5.22", - "@libsql/darwin-x64": "0.5.22", - "@libsql/linux-arm-gnueabihf": "0.5.22", - "@libsql/linux-arm-musleabihf": "0.5.22", - "@libsql/linux-arm64-gnu": "0.5.22", - "@libsql/linux-arm64-musl": "0.5.22", - "@libsql/linux-x64-gnu": "0.5.22", - "@libsql/linux-x64-musl": "0.5.22", - "@libsql/win32-x64-msvc": "0.5.22" - } - }, - "node_modules/lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", - "license": "Apache-2.0", - "dependencies": { - "debug": "^2.6.9", - "marky": "^1.2.2" - } - }, - "node_modules/lighthouse-logger/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/lighthouse-logger/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/lightningcss": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", - "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "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" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", - "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", - "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", - "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", - "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", - "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", - "cpu": [ - "arm" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", - "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", - "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", - "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", - "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", - "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", - "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss/node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "license": "MIT" - }, - "node_modules/lodash._baseflatten": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz", - "integrity": "sha512-fESngZd+X4k+GbTxdMutf8ohQa0s3sJEHIcwtu4/LsIQ2JTDzdRxDCMQjW+ezzwRitLmHnacVVmosCbxifefbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "node_modules/lodash._basefor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", - "integrity": "sha512-6bc3b8grkpMgDcVJv9JYZAk/mHgcqMljzm7OsbmcE2FGUMmmLQTPHlh/dFqR8LA0GQ7z4K67JSotVKu5058v1A==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._pickbyarray": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash._pickbyarray/-/lodash._pickbyarray-3.0.2.tgz", - "integrity": "sha512-tHzBIfgugzI7HV0y8MJS1z/ryWDh8NyD6AV+so9vlplRnhD4qBuwoyDt7g241ad3F43YDFghCN+R3iaFd4Azvw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash._pickbycallback": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._pickbycallback/-/lodash._pickbycallback-3.0.0.tgz", - "integrity": "sha512-DVP27YmN0lB+j/Tgd/+gtxfmW/XihgWpQpHptBuwyp2fD9zEBRwwcnw6Qej16LUV8LRFuTqyoc0i6ON97d/C5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._basefor": "^3.0.0", - "lodash.keysin": "^3.0.0" - } - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "license": "MIT" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.keysin": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", - "integrity": "sha512-YDB/5xkL3fBKFMDaC+cfGV00pbiJ6XoJIfRmBhv7aR6wWtbCW6IzkiWnTfkiHTF6ALD7ff83dAtB3OEaSoyQPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "license": "MIT" - }, - "node_modules/lodash.pick": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-3.1.0.tgz", - "integrity": "sha512-Y04wnFghB7l1dkYINfjdMLpeAGM1IYEjlsGFxvjeewCbVQUlD9jw3M20ThuNrsf6yGmuPLwj60PKP+D6gZ+o2w==", - "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash._baseflatten": "^3.0.0", - "lodash._bindcallback": "^3.0.0", - "lodash._pickbyarray": "^3.0.0", - "lodash._pickbycallback": "^3.0.0", - "lodash.restparam": "^3.0.0" - } - }, - "node_modules/lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/logkitty": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", - "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-fragments": "^0.2.1", - "dayjs": "^1.8.15", - "yargs": "^15.1.0" - }, - "bin": { - "logkitty": "bin/logkitty.js" - } - }, - "node_modules/logkitty/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/logkitty/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/logkitty/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/logkitty/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/logkitty/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/logkitty/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/logkitty/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/logkitty/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/logkitty/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/long": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", - "license": "Apache-2.0" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lucide-react-native": { - "version": "0.563.0", - "resolved": "https://registry.npmjs.org/lucide-react-native/-/lucide-react-native-0.563.0.tgz", - "integrity": "sha512-q4tYoAMorTqv+UXRYc0MyiEAOF+4Bu73zxD63EDrnGCFL+xuj+imBm3E2rIKRmME0heVHlK+98fsi8wbL92LNQ==", - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-native": "*", - "react-native-svg": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/marky": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", - "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", - "license": "Apache-2.0" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "license": "CC0-1.0" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "license": "MIT" - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "license": "MIT", - "dependencies": { - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/metro": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", - "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "error-stack-parser": "^2.0.6", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.32.0", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "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-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", - "mime-types": "^2.1.27", - "nullthrows": "^1.1.1", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "throat": "^5.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-babel-transformer": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", - "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.32.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-cache": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", - "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", - "license": "MIT", - "dependencies": { - "exponential-backoff": "^3.1.1", - "flow-enums-runtime": "^0.0.6", - "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.3" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-cache-key": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", - "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-cache/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/metro-cache/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/metro-config": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", - "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", - "license": "MIT", - "dependencies": { - "connect": "^3.6.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.83.3", - "metro-cache": "0.83.3", - "metro-core": "0.83.3", - "metro-runtime": "0.83.3", - "yaml": "^2.6.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-core": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", - "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.3" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-file-map": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", - "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "fb-watchman": "^2.0.0", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-minify-terser": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", - "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "terser": "^5.15.0" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-react-native-babel-preset": { - "version": "0.77.0", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.77.0.tgz", - "integrity": "sha512-HPPD+bTxADtoE4y/4t1txgTQ1LVR6imOBy7RMHUsqMVTbekoi8Ph5YI9vKX2VMPtVWeFt0w9YnCSLPa76GcXsA==", - "deprecated": "Use @react-native/babel-preset instead", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.4.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/metro-react-native-babel-preset/node_modules/react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro-react-native-babel-transformer": { - "version": "0.77.0", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.77.0.tgz", - "integrity": "sha512-uCV1Kt4ebY9/hT7ayDGMDgIsrbyxiBHNP+q0LGxscOx3D/QODv1z+WhfC4Hy0/1wDCGV3l0EQrfLqM+7qpjsWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "hermes-parser": "0.14.0", - "metro-react-native-babel-preset": "0.77.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/metro-react-native-babel-transformer/node_modules/hermes-estree": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.14.0.tgz", - "integrity": "sha512-L6M67+0/eSEbt6Ha2XOBFXL++7MR34EOJMgm+j7YCaI4L/jZqrVAg6zYQKzbs1ZCFDLvEQpOgLlapTX4gpFriA==", - "dev": true, - "license": "MIT" - }, - "node_modules/metro-react-native-babel-transformer/node_modules/hermes-parser": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.14.0.tgz", - "integrity": "sha512-pt+8uRiJhVlErY3fiXB3gKhZ72RxM6E1xRMpvfZ5n6Z5TQKQQXKorgRCRzoe02mmvLKBJFP5nPDGv75MWAgCTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.14.0" - } - }, - "node_modules/metro-resolver": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", - "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-runtime": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", - "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.0", - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-source-map": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", - "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-symbolicate": "0.83.3", - "nullthrows": "^1.1.1", - "ob1": "0.83.3", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro-symbolicate": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", - "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-source-map": "0.83.3", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-symbolicate/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro-transform-plugins": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", - "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro-transform-worker": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", - "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "metro": "0.83.3", - "metro-babel-transformer": "0.83.3", - "metro-cache": "0.83.3", - "metro-cache-key": "0.83.3", - "metro-minify-terser": "0.83.3", - "metro-source-map": "0.83.3", - "metro-transform-plugins": "0.83.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/metro/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "license": "MIT" - }, - "node_modules/metro/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/morgan": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", - "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.1.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/morgan/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/moti": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/moti/-/moti-0.30.0.tgz", - "integrity": "sha512-YN78mcefo8kvJaL+TZNyusq6YA2aMFvBPl8WiLPy4eb4wqgOFggJOjP9bUr2YO8PrAt0uusmRG8K4RPL4OhCsA==", - "license": "MIT", - "dependencies": { - "framer-motion": "^6.5.1" - }, - "peerDependencies": { - "react-native-reanimated": "*" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/multitars": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/multitars/-/multitars-0.2.4.tgz", - "integrity": "sha512-XgLbg1HHchFauMCQPRwMj6MSyDd5koPlTA1hM3rUFkeXzGpjU/I9fP3to7yrObE9jcN8ChIOQGrM0tV0kUZaKg==", - "license": "MIT" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/nativewind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/nativewind/-/nativewind-4.2.1.tgz", - "integrity": "sha512-10uUB2Dlli3MH3NDL5nMHqJHz1A3e/E6mzjTj6cl7hHECClJ7HpE6v+xZL+GXdbwQSnWE+UWMIMsNz7yOQkAJQ==", - "license": "MIT", - "dependencies": { - "comment-json": "^4.2.5", - "debug": "^4.3.7", - "react-native-css-interop": "0.2.1" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "tailwindcss": ">3.3.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/nocache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", - "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/node-dir": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.10.5" - } - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-forge": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", - "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "license": "MIT" - }, - "node_modules/node-stream-zip": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", - "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/antelle" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", - "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-package-arg": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", - "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", - "license": "ISC", - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "license": "MIT" - }, - "node_modules/nwsapi": { - "version": "2.2.23", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", - "license": "MIT" - }, - "node_modules/ob1": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", - "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/open/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/oxc-resolver": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.17.1.tgz", - "integrity": "sha512-pyRXK9kH81zKlirHufkFhOFBZRks8iAMLwPH8gU7lvKFiuzUH9L8MxDEllazwOb8fjXMcWjY1PMDfMJ2/yh5cw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - }, - "optionalDependencies": { - "@oxc-resolver/binding-android-arm-eabi": "11.17.1", - "@oxc-resolver/binding-android-arm64": "11.17.1", - "@oxc-resolver/binding-darwin-arm64": "11.17.1", - "@oxc-resolver/binding-darwin-x64": "11.17.1", - "@oxc-resolver/binding-freebsd-x64": "11.17.1", - "@oxc-resolver/binding-linux-arm-gnueabihf": "11.17.1", - "@oxc-resolver/binding-linux-arm-musleabihf": "11.17.1", - "@oxc-resolver/binding-linux-arm64-gnu": "11.17.1", - "@oxc-resolver/binding-linux-arm64-musl": "11.17.1", - "@oxc-resolver/binding-linux-ppc64-gnu": "11.17.1", - "@oxc-resolver/binding-linux-riscv64-gnu": "11.17.1", - "@oxc-resolver/binding-linux-riscv64-musl": "11.17.1", - "@oxc-resolver/binding-linux-s390x-gnu": "11.17.1", - "@oxc-resolver/binding-linux-x64-gnu": "11.17.1", - "@oxc-resolver/binding-linux-x64-musl": "11.17.1", - "@oxc-resolver/binding-openharmony-arm64": "11.17.1", - "@oxc-resolver/binding-wasm32-wasi": "11.17.1", - "@oxc-resolver/binding-win32-arm64-msvc": "11.17.1", - "@oxc-resolver/binding-win32-ia32-msvc": "11.17.1", - "@oxc-resolver/binding-win32-x64-msvc": "11.17.1" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-png": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", - "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", - "license": "MIT", - "dependencies": { - "pngjs": "^3.3.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/patch-package": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz", - "integrity": "sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "ci-info": "^3.7.0", - "cross-spawn": "^7.0.3", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^10.0.0", - "json-stable-stringify": "^1.0.2", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "semver": "^7.5.3", - "slash": "^2.0.0", - "tmp": "^0.2.4", - "yaml": "^2.2.2" - }, - "bin": { - "patch-package": "index.js" - }, - "engines": { - "node": ">=14", - "npm": ">5" - } - }, - "node_modules/patch-package/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/patch-package/node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/patch-package/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/patch-package/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/patch-package/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-extra": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/path-extra/-/path-extra-1.0.3.tgz", - "integrity": "sha512-vYm3+GCkjUlT1rDvZnDVhNLXIRvwFPaN8ebHAFcuMJM/H0RBOPD7JrcldiNLd9AS3dhAyUHLa4Hny5wp1A+Ffw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkce-challenge": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", - "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.20.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/plist": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", - "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - }, - "engines": { - "node": ">=10.4.0" - } - }, - "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/popmotion": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz", - "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==", - "license": "MIT", - "dependencies": { - "framesync": "6.0.1", - "hey-listen": "^1.0.8", - "style-value-types": "5.0.0", - "tslib": "^2.1.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", - "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.1.1" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/posthog-js": { - "version": "1.345.1", - "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.345.1.tgz", - "integrity": "sha512-z1fAhhole4O3jwxoIaH4EaerAB/RPAqGsp+mZZsBT2y4ATNgzAFXicjZsV7yRF0BIY3WgZ9A1S/A2BMCQOjp7g==", - "license": "SEE LICENSE IN LICENSE", - "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.208.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", - "@opentelemetry/resources": "^2.2.0", - "@opentelemetry/sdk-logs": "^0.208.0", - "@posthog/core": "1.21.0", - "@posthog/types": "1.345.1", - "core-js": "^3.38.1", - "dompurify": "^3.3.1", - "fflate": "^0.4.8", - "preact": "^10.28.2", - "query-selector-shadow-dom": "^1.0.1", - "web-vitals": "^5.1.0" - } - }, - "node_modules/posthog-react-native": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/posthog-react-native/-/posthog-react-native-4.31.0.tgz", - "integrity": "sha512-JCC2GUU7FgayjR7jfp53FptYebdVVzUO4v4saN94E74UB8NUbJhrbaVE0Qq6+yxAhVWRW97m6bCpUkxrzYRC2w==", - "license": "MIT", - "dependencies": { - "@posthog/core": "1.21.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": ">=1.0.0", - "@react-navigation/native": ">= 5.0.0", - "expo-application": ">= 4.0.0", - "expo-device": ">= 4.0.0", - "expo-file-system": ">= 13.0.0", - "expo-localization": ">= 11.0.0", - "posthog-react-native-session-replay": ">= 1.2.0", - "react-native-device-info": ">= 10.0.0", - "react-native-localize": ">= 3.0.0", - "react-native-navigation": ">= 6.0.0", - "react-native-safe-area-context": ">= 4.0.0", - "react-native-svg": ">= 15.0.0" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - }, - "@react-navigation/native": { - "optional": true - }, - "expo-application": { - "optional": true - }, - "expo-device": { - "optional": true - }, - "expo-file-system": { - "optional": true - }, - "expo-localization": { - "optional": true - }, - "posthog-react-native-session-replay": { - "optional": true - }, - "react-native-device-info": { - "optional": true - }, - "react-native-localize": { - "optional": true - }, - "react-native-navigation": { - "optional": true - }, - "react-native-safe-area-context": { - "optional": true - } - } - }, - "node_modules/posthog-react-native-session-replay": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/posthog-react-native-session-replay/-/posthog-react-native-session-replay-1.2.4.tgz", - "integrity": "sha512-kPPDTJAHhEJBp5/aCNlO3bjBhcQlXmTOhrDfsZa1FuW44csldVK33DYA2Xr1eQDh/LW0xH3P3IupE+vpc9MRXQ==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/preact": { - "version": "10.28.3", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.3.tgz", - "integrity": "sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", - "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/prettier-plugin-tailwindcss": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.7.2.tgz", - "integrity": "sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.19" - }, - "peerDependencies": { - "@ianvs/prettier-plugin-sort-imports": "*", - "@prettier/plugin-hermes": "*", - "@prettier/plugin-oxc": "*", - "@prettier/plugin-pug": "*", - "@shopify/prettier-plugin-liquid": "*", - "@trivago/prettier-plugin-sort-imports": "*", - "@zackad/prettier-plugin-twig": "*", - "prettier": "^3.0", - "prettier-plugin-astro": "*", - "prettier-plugin-css-order": "*", - "prettier-plugin-jsdoc": "*", - "prettier-plugin-marko": "*", - "prettier-plugin-multiline-arrays": "*", - "prettier-plugin-organize-attributes": "*", - "prettier-plugin-organize-imports": "*", - "prettier-plugin-sort-imports": "*", - "prettier-plugin-svelte": "*" - }, - "peerDependenciesMeta": { - "@ianvs/prettier-plugin-sort-imports": { - "optional": true - }, - "@prettier/plugin-hermes": { - "optional": true - }, - "@prettier/plugin-oxc": { - "optional": true - }, - "@prettier/plugin-pug": { - "optional": true - }, - "@shopify/prettier-plugin-liquid": { - "optional": true - }, - "@trivago/prettier-plugin-sort-imports": { - "optional": true - }, - "@zackad/prettier-plugin-twig": { - "optional": true - }, - "prettier-plugin-astro": { - "optional": true - }, - "prettier-plugin-css-order": { - "optional": true - }, - "prettier-plugin-jsdoc": { - "optional": true - }, - "prettier-plugin-marko": { - "optional": true - }, - "prettier-plugin-multiline-arrays": { - "optional": true - }, - "prettier-plugin-organize-attributes": { - "optional": true - }, - "prettier-plugin-organize-imports": { - "optional": true - }, - "prettier-plugin-sort-imports": { - "optional": true - }, - "prettier-plugin-svelte": { - "optional": true - } - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "license": "MIT", - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/promise-limit": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", - "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==", - "dev": true, - "license": "ISC" - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/protobufjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", - "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/qrcode-terminal": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", - "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/query-selector-shadow-dom": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", - "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", - "license": "MIT" - }, - "node_modules/query-string": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", - "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", - "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.2", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "license": "MIT" - }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "license": "MIT", - "dependencies": { - "inherits": "~2.0.3" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-compiler-runtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/react-compiler-runtime/-/react-compiler-runtime-1.0.0.tgz", - "integrity": "sha512-rRfjYv66HlG8896yPUDONgKzG5BxZD1nV9U6rkm+7VCuvQc903C4MjcoZR4zPw53IKSOX9wMQVpA1IAbRtzQ7w==", - "license": "MIT", - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental" - } - }, - "node_modules/react-devtools-core": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", - "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", - "license": "MIT", - "dependencies": { - "shell-quote": "^1.6.1", - "ws": "^7" - } - }, - "node_modules/react-devtools-core/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.27.0" - }, - "peerDependencies": { - "react": "^19.2.0" - } - }, - "node_modules/react-error-boundary": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", - "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - }, - "peerDependencies": { - "react": ">=16.13.1" - } - }, - "node_modules/react-fast-compare": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", - "license": "MIT" - }, - "node_modules/react-freeze": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", - "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": ">=17.0.0" - } - }, - "node_modules/react-hook-form": { - "version": "7.71.1", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.71.1.tgz", - "integrity": "sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/react-hook-form" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18 || ^19" - } - }, - "node_modules/react-is": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", - "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", - "license": "MIT" - }, - "node_modules/react-native": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz", - "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==", - "license": "MIT", - "dependencies": { - "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.83.1", - "@react-native/codegen": "0.83.1", - "@react-native/community-cli-plugin": "0.83.1", - "@react-native/gradle-plugin": "0.83.1", - "@react-native/js-polyfills": "0.83.1", - "@react-native/normalize-colors": "0.83.1", - "@react-native/virtualized-lists": "0.83.1", - "abort-controller": "^3.0.0", - "anser": "^1.4.9", - "ansi-regex": "^5.0.0", - "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.32.0", - "base64-js": "^1.5.1", - "commander": "^12.0.0", - "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", - "hermes-compiler": "0.14.0", - "invariant": "^2.2.4", - "jest-environment-node": "^29.7.0", - "memoize-one": "^5.0.0", - "metro-runtime": "^0.83.3", - "metro-source-map": "^0.83.3", - "nullthrows": "^1.1.1", - "pretty-format": "^29.7.0", - "promise": "^8.3.0", - "react-devtools-core": "^6.1.5", - "react-refresh": "^0.14.0", - "regenerator-runtime": "^0.13.2", - "scheduler": "0.27.0", - "semver": "^7.1.3", - "stacktrace-parser": "^0.1.10", - "whatwg-fetch": "^3.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" - }, - "bin": { - "react-native": "cli.js" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@types/react": "^19.1.1", - "react": "^19.2.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-native-audio-concat": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-native-audio-concat/-/react-native-audio-concat-0.9.0.tgz", - "integrity": "sha512-R/n1IgFS/q2i+2Gs87XUbLzR94hug+lo8ydmESfCWFuc/SLYsHRD7kjhj83SjOsz7t6m/ll7VN4x6Vf7ig0sqg==", - "license": "MIT", - "workspaces": [ - "example" - ], - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-css-interop": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/react-native-css-interop/-/react-native-css-interop-0.2.1.tgz", - "integrity": "sha512-B88f5rIymJXmy1sNC/MhTkb3xxBej1KkuAt7TiT9iM7oXz3RM8Bn+7GUrfR02TvSgKm4cg2XiSuLEKYfKwNsjA==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.3.7", - "lightningcss": "~1.27.0", - "semver": "^7.6.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react": ">=18", - "react-native": "*", - "react-native-reanimated": ">=3.6.2", - "tailwindcss": "~3" - }, - "peerDependenciesMeta": { - "react-native-safe-area-context": { - "optional": true - }, - "react-native-svg": { - "optional": true - } - } - }, - "node_modules/react-native-css-interop/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.27.0.tgz", - "integrity": "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==", - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.27.0", - "lightningcss-darwin-x64": "1.27.0", - "lightningcss-freebsd-x64": "1.27.0", - "lightningcss-linux-arm-gnueabihf": "1.27.0", - "lightningcss-linux-arm64-gnu": "1.27.0", - "lightningcss-linux-arm64-musl": "1.27.0", - "lightningcss-linux-x64-gnu": "1.27.0", - "lightningcss-linux-x64-musl": "1.27.0", - "lightningcss-win32-arm64-msvc": "1.27.0", - "lightningcss-win32-x64-msvc": "1.27.0" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-darwin-arm64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", - "integrity": "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-darwin-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", - "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-freebsd-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", - "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", - "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", - "cpu": [ - "arm" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", - "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", - "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-linux-x64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", - "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-linux-x64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", - "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", - "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/lightningcss-win32-x64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", - "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/react-native-css-interop/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/react-native-element-dropdown": { - "version": "2.12.4", - "resolved": "https://registry.npmjs.org/react-native-element-dropdown/-/react-native-element-dropdown-2.12.4.tgz", - "integrity": "sha512-abZc5SVji9FIt7fjojRYrbuvp03CoeZJrgvezQoDoSOrpiTqkX69ix5m+j06W2AVncA0VWvbT+vCMam8SoVadw==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - }, - "engines": { - "node": ">= 16.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-gesture-handler": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", - "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", - "license": "MIT", - "dependencies": { - "@egjs/hammerjs": "^2.0.17", - "hoist-non-react-statics": "^3.3.0", - "invariant": "^2.2.4" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-is-edge-to-edge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz", - "integrity": "sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-keyboard-controller": { - "version": "1.20.7", - "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.20.7.tgz", - "integrity": "sha512-G8S5jz1FufPrcL1vPtReATx+jJhT/j+sTqxMIb30b1z7cYEfMlkIzOCyaHgf6IMB2KA9uBmnA5M6ve2A9Ou4kw==", - "license": "MIT", - "dependencies": { - "react-native-is-edge-to-edge": "^1.2.1" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-reanimated": ">=3.0.0" - } - }, - "node_modules/react-native-onboarding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/react-native-onboarding/-/react-native-onboarding-1.0.6.tgz", - "integrity": "sha512-vI/UlspW2N2Y+Q7jEAPskRXqgsJcdn48SDXU8sI91Tnc5xL/EkOQukrIxthSVIt10CRel++LgJws+B6bGk7Z2A==", - "license": "MIT", - "dependencies": { - "assign-deep": "^0.4.5", - "react-native-swiper": "git+https://github.com/FuYaoDe/react-native-swiper.git" - } - }, - "node_modules/react-native-pager-view": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-8.0.0.tgz", - "integrity": "sha512-oAwlWT1lhTkIs9HhODnjNNl/owxzn9DP1MbP+az6OTUdgbmzA16Up83sBH8NRKwrH8rNm7iuWnX1qMqiiWOLhg==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-reanimated": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.2.1.tgz", - "integrity": "sha512-/NcHnZMyOvsD/wYXug/YqSKw90P9edN0kEPL5lP4PFf1aQ4F1V7MKe/E0tvfkXKIajy3Qocp5EiEnlcrK/+BZg==", - "license": "MIT", - "dependencies": { - "react-native-is-edge-to-edge": "1.2.1", - "semver": "7.7.3" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-worklets": ">=0.7.0" - } - }, - "node_modules/react-native-reanimated/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/react-native-reorderable-list": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/react-native-reorderable-list/-/react-native-reorderable-list-0.18.0.tgz", - "integrity": "sha512-zjN7UvKGxSOnIXrB+9W4WE7e2D/fP61U2EaAk5JUSIjj6pw8W9cYRQ6E6TQV6BaztJ4bDTPRV2LUiOS3WAj6jA==", - "license": "MIT", - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-gesture-handler": ">=2.12.0", - "react-native-reanimated": ">=3.12.0" - } - }, - "node_modules/react-native-safe-area-context": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", - "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-screens": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", - "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", - "license": "MIT", - "dependencies": { - "react-freeze": "^1.0.0", - "warn-once": "^0.1.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-svg": { - "version": "15.15.3", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", - "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", - "license": "MIT", - "dependencies": { - "css-select": "^5.1.0", - "css-tree": "^1.1.3", - "warn-once": "0.1.1" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-svg-transformer": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/react-native-svg-transformer/-/react-native-svg-transformer-1.5.3.tgz", - "integrity": "sha512-M4uFg5pUt35OMgjD4rWWbwd6PmxV96W7r/gQTTa+iZA5B+jO6aURhzAZGLHSrg1Kb91cKG0Rildy9q1WJvYstg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@svgr/core": "^8.1.0", - "@svgr/plugin-jsx": "^8.1.0", - "@svgr/plugin-svgo": "^8.1.0", - "path-dirname": "^1.0.2" - }, - "peerDependencies": { - "react-native": ">=0.59.0", - "react-native-svg": ">=12.0.0" - } - }, - "node_modules/react-native-swiper": { - "version": "1.4.4", - "resolved": "git+ssh://git@github.com/FuYaoDe/react-native-swiper.git#a6417ff41a8b2d490bdcc4541015ab35736d4595", - "license": "ISC", - "dependencies": { - "react-timer-mixin": "^0.13.3" - } - }, - "node_modules/react-native-url-polyfill": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-3.0.0.tgz", - "integrity": "sha512-aA5CiuUCUb/lbrliVCJ6lZ17/RpNJzvTO/C7gC/YmDQhTUoRD5q5HlJfwLWcxz4VgAhHwXKzhxH+wUN24tAdqg==", - "license": "MIT", - "dependencies": { - "whatwg-url-without-unicode": "8.0.0-3" - }, - "peerDependencies": { - "react-native": "*" - } - }, - "node_modules/react-native-uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/react-native-uuid/-/react-native-uuid-2.0.3.tgz", - "integrity": "sha512-f/YfIS2f5UB+gut7t/9BKGSCYbRA9/74A5R1MDp+FLYsuS+OSWoiM/D8Jko6OJB6Jcu3v6ONuddvZKHdIGpeiw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/react-native-web": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.21.2.tgz", - "integrity": "sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.6", - "@react-native/normalize-colors": "^0.74.1", - "fbjs": "^3.0.4", - "inline-style-prefixer": "^7.0.1", - "memoize-one": "^6.0.0", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "styleq": "^0.1.3" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, - "node_modules/react-native-web/node_modules/@react-native/normalize-colors": { - "version": "0.74.89", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz", - "integrity": "sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==", - "license": "MIT" - }, - "node_modules/react-native-web/node_modules/memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", - "license": "MIT" - }, - "node_modules/react-native-worklets": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.2.tgz", - "integrity": "sha512-DuLu1kMV/Uyl9pQHp3hehAlThoLw7Yk2FwRTpzASOmI+cd4845FWn3m2bk9MnjUw8FBRIyhwLqYm2AJaXDXsog==", - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-arrow-functions": "7.27.1", - "@babel/plugin-transform-class-properties": "7.27.1", - "@babel/plugin-transform-classes": "7.28.4", - "@babel/plugin-transform-nullish-coalescing-operator": "7.27.1", - "@babel/plugin-transform-optional-chaining": "7.27.1", - "@babel/plugin-transform-shorthand-properties": "7.27.1", - "@babel/plugin-transform-template-literals": "7.27.1", - "@babel/plugin-transform-unicode-regex": "7.27.1", - "@babel/preset-typescript": "7.27.1", - "convert-source-map": "2.0.0", - "semver": "7.7.3" - }, - "peerDependencies": { - "@babel/core": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-classes": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", - "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/react-native-worklets/node_modules/@babel/preset-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", - "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/react-native-worklets/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", - "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.32.0" - } - }, - "node_modules/react-native/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/react-native/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-remove-scroll": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", - "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.3", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.2", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-shallow-renderer": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", - "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-shallow-renderer/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/react-style-singleton": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-test-renderer": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.0.0.tgz", - "integrity": "sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA==", - "dev": true, - "license": "MIT", - "dependencies": { - "react-is": "^19.0.0", - "scheduler": "^0.25.0" - }, - "peerDependencies": { - "react": "^19.0.0" - } - }, - "node_modules/react-test-renderer/node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-timer-mixin": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz", - "integrity": "sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q==", - "license": "MIT" - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cmd-shim": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-6.0.0.tgz", - "integrity": "sha512-1zM5HuOfagXCBWMN83fuFI/x+T/UhZ7k+KIzhrHXcQoeX5+7gmaDYjELQHmmzIodumBHeByBJT4QYS7ufAgs7A==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/recast": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "license": "MIT", - "dependencies": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", - "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", - "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.2", - "regjsgen": "^0.8.0", - "regjsparser": "^0.13.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.2.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.1.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, - "license": "ISC" - }, - "node_modules/require-resolve": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/require-resolve/-/require-resolve-0.0.2.tgz", - "integrity": "sha512-eafQVaxdQsWUB8HybwognkdcIdKdQdQBwTxH48FuE6WI0owZGKp63QYr1MRp73PoX0AcyB7MDapZThYUY8FD0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "x-path": "^0.0.2" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/resolve-workspace-root": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", - "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", - "license": "MIT" - }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/rtl-detect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", - "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", - "license": "BSD-3-Clause" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=11.0.0" - } - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "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.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/send/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/server-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", - "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", - "license": "MIT" - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "license": "MIT" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/sf-symbols-typescript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", - "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shallow-clone/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "license": "MIT" - }, - "node_modules/sharp": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.2.tgz", - "integrity": "sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.4", - "semver": "^7.7.2" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.2", - "@img/sharp-darwin-x64": "0.34.2", - "@img/sharp-libvips-darwin-arm64": "1.1.0", - "@img/sharp-libvips-darwin-x64": "1.1.0", - "@img/sharp-libvips-linux-arm": "1.1.0", - "@img/sharp-libvips-linux-arm64": "1.1.0", - "@img/sharp-libvips-linux-ppc64": "1.1.0", - "@img/sharp-libvips-linux-s390x": "1.1.0", - "@img/sharp-libvips-linux-x64": "1.1.0", - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", - "@img/sharp-libvips-linuxmusl-x64": "1.1.0", - "@img/sharp-linux-arm": "0.34.2", - "@img/sharp-linux-arm64": "0.34.2", - "@img/sharp-linux-s390x": "0.34.2", - "@img/sharp-linux-x64": "0.34.2", - "@img/sharp-linuxmusl-arm64": "0.34.2", - "@img/sharp-linuxmusl-x64": "0.34.2", - "@img/sharp-wasm32": "0.34.2", - "@img/sharp-win32-arm64": "0.34.2", - "@img/sharp-win32-ia32": "0.34.2", - "@img/sharp-win32-x64": "0.34.2" - } - }, - "node_modules/sharp-cli": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/sharp-cli/-/sharp-cli-5.2.0.tgz", - "integrity": "sha512-0DQyABFTWkla4FYvjguCQloSgm2htOPfGFur88HXiGu8BPfhb77frWn+E87w8Oog0eSHF4/uMt5AFhpvfY/Zrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bubble-stream-error": "1.0.x", - "glob": "11.0.x", - "is-directory": "0.3.x", - "lodash.pick": "3.1.0", - "sharp": "0.34.2", - "yargs": "^17.6.2" - }, - "bin": { - "sharp": "bin/cli.js" - }, - "engines": { - "node": ">=18.17" - } - }, - "node_modules/sharp-cli/node_modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", - "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", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sharp-cli/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sharp/node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/sharp/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/simple-plist": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", - "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", - "license": "MIT", - "dependencies": { - "bplist-creator": "0.1.0", - "bplist-parser": "0.3.1", - "plist": "^3.0.5" - } - }, - "node_modules/simple-plist/node_modules/bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", - "license": "MIT", - "dependencies": { - "big-integer": "1.6.x" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "license": "MIT" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", - "dev": true, - "license": "MIT" - }, - "node_modules/slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/smol-toml": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", - "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "license": "MIT" - }, - "node_modules/stack-generator": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", - "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "license": "MIT" - }, - "node_modules/stacktrace-gps": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz", - "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==", - "license": "MIT", - "dependencies": { - "source-map": "0.5.6", - "stackframe": "^1.3.4" - } - }, - "node_modules/stacktrace-gps/node_modules/source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stacktrace-js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", - "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", - "license": "MIT", - "dependencies": { - "error-stack-parser": "^2.0.6", - "stack-generator": "^2.0.5", - "stacktrace-gps": "^3.0.4" - } - }, - "node_modules/stacktrace-parser": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", - "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/stream-buffers": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", - "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", - "license": "Unlicense", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/stream-chain": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", - "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stream-json": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", - "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "stream-chain": "^2.2.5" - } - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strict-url-sanitise": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/strict-url-sanitise/-/strict-url-sanitise-0.0.1.tgz", - "integrity": "sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==", - "dev": true, - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "node_modules/structured-headers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", - "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", - "license": "MIT" - }, - "node_modules/style-value-types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", - "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==", - "license": "MIT", - "dependencies": { - "hey-listen": "^1.0.8", - "tslib": "^2.1.0" - } - }, - "node_modules/styleq": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", - "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==", - "license": "MIT" - }, - "node_modules/sucrase": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", - "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "tinyglobby": "^0.2.11", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/supabase": { - "version": "2.76.6", - "resolved": "https://registry.npmjs.org/supabase/-/supabase-2.76.6.tgz", - "integrity": "sha512-VewP9LqtOhJZaZR75vcM99Q8exjPjBm9YiMvBn04zx1ikdX1DNPmzAilBJLK/ivjPDxMTlmag6+iJvJ+B+mIOA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "bin-links": "^6.0.0", - "https-proxy-agent": "^7.0.2", - "node-fetch": "^3.3.2", - "tar": "7.5.7" - }, - "bin": { - "supabase": "bin/supabase" - }, - "engines": { - "npm": ">=8" - } - }, - "node_modules/supabase/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/supabase/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/svgo": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", - "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^5.1.0", - "css-tree": "^2.3.1", - "css-what": "^6.1.0", - "csso": "^5.0.5", - "picocolors": "^1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/svgo" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/svgo/node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/svgo/node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "license": "MIT" - }, - "node_modules/synckit": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", - "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/tailwind-merge": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz", - "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/tailwindcss": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", - "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.7", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss-animate": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", - "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", - "license": "MIT", - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" - } - }, - "node_modules/tailwindcss/node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/tar": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", - "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/temp": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", - "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", - "license": "MIT", - "dependencies": { - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", - "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/testflight-dev-deploy": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/testflight-dev-deploy/-/testflight-dev-deploy-0.0.8.tgz", - "integrity": "sha512-mgrtIYvrbtCwzpORP3XluQQ7U6QR13saZr8VHXqNm+VR7Ig/KFsV5bCM71roEr1HtiaZ8pFUOf8S6KWuyp/R4Q==", - "license": "ISC", - "dependencies": { - "expo-module-scripts": "^3.0.4" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "license": "BSD-3-Clause" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" - }, - "node_modules/ts-jest": { - "version": "29.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", - "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", - "license": "MIT", - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsx": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", - "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.27.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.55.0.tgz", - "integrity": "sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.55.0", - "@typescript-eslint/parser": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/utils": "8.55.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.41", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz", - "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "license": "MIT", - "bin": { - "ua-parser-js": "script/cli.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", - "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", - "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", - "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-latest-callback": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", - "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vaul": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", - "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-dialog": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" - } - }, - "node_modules/vlq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", - "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "license": "MIT" - }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/walk-up-path": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", - "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/warn-once": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", - "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==", - "license": "MIT" - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/web-vitals": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.1.0.tgz", - "integrity": "sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==", - "license": "Apache-2.0" - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT" - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url-minimum": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/whatwg-url-minimum/-/whatwg-url-minimum-0.1.1.tgz", - "integrity": "sha512-u2FNVjFVFZhdjb502KzXy1gKn1mEisQRJssmSJT8CPhZdZa0AP6VCbWlXERKyGu0l09t0k50FiDiralpGhBxgA==", - "license": "MIT" - }, - "node_modules/whatwg-url-without-unicode": { - "version": "8.0.0-3", - "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz", - "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==", - "license": "MIT", - "dependencies": { - "buffer": "^5.4.3", - "punycode": "^2.1.1", - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/x-path": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/x-path/-/x-path-0.0.2.tgz", - "integrity": "sha512-zQ4WFI0XfJN1uEkkrB19Y4TuXOlHqKSxUJo0Yt+axPjRm8tCG6SJ6+Wo3/+Kjg4c2c8IvBXuJ0uYoshxNn4qMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-extra": "^1.0.2" - } - }, - "node_modules/xcode": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", - "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", - "license": "Apache-2.0", - "dependencies": { - "simple-plist": "^1.1.0", - "uuid": "^7.0.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "node_modules/xml2js": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", - "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xml2js/node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "license": "MIT" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", - "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-to-json-schema": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", - "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", - "dev": true, - "license": "ISC", - "peerDependencies": { - "zod": "^3.25 || ^4" - } - }, - "node_modules/zod-validation-error": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.4.tgz", - "integrity": "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "zod": "^3.24.4" - } - }, - "node_modules/zustand": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.11.tgz", - "integrity": "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==", - "license": "MIT", - "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "immer": ">=9.0.6", - "react": ">=18.0.0", - "use-sync-external-store": ">=1.2.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - }, - "use-sync-external-store": { - "optional": true - } - } - } - } + "packages": {} } From c66f14b8b66761666231a01f7344003bf514f323 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:50:06 -0600 Subject: [PATCH 034/143] fix syntax in package.json --- package-lock.json | 29520 +++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 29520 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7eec2bfdb..6525a14cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,5 +3,29523 @@ "version": "2.0.13", "lockfileVersion": 3, "requires": true, - "packages": {} + "packages": { + "": { + "name": "langquest", + "version": "2.0.13", + "hasInstallScript": true, + "dependencies": { + "@azure/core-asynciterator-polyfill": "^1.0.2", + "@blazejkustra/react-native-alert": "^1.0.0", + "@expo-google-fonts/noto-sans": "^0.4.2", + "@expo/vector-icons": "^15.0.3", + "@gorhom/bottom-sheet": "^5.2.8", + "@hookform/resolvers": "^5.0.1", + "@legendapp/list": "^2.0.12", + "@op-engineering/op-sqlite": "^15.2.5", + "@powersync/attachments": "^2.4.0", + "@powersync/drizzle-driver": "^0.7.2", + "@powersync/op-sqlite": "^0.8.0", + "@powersync/react-native": "^1.25.1", + "@powersync/tanstack-react-query": "^0.1.6", + "@powersync/web": "^1.27.1", + "@quidone/react-native-wheel-picker": "^1.6.1", + "@react-native-async-storage/async-storage": "2.2.0", + "@react-native-community/netinfo": "11.5.2", + "@react-native-community/slider": "5.1.2", + "@react-native-documents/picker": "^12.0.1", + "@react-navigation/bottom-tabs": "^7.3.10", + "@react-navigation/native": "^7.1.6", + "@react-navigation/native-stack": "^7.3.10", + "@rn-primitives/checkbox": "^1.2.0", + "@rn-primitives/label": "^1.1.0", + "@rn-primitives/portal": "^1.3.0", + "@rn-primitives/progress": "^1.2.0", + "@rn-primitives/select": "^1.1.0", + "@rn-primitives/slider": "1.2.0", + "@rn-primitives/slot": "^1.2.0", + "@rn-primitives/switch": "^1.2.0", + "@rn-primitives/tabs": "^1.2.0", + "@rn-primitives/toggle": "^1.1.0", + "@rn-primitives/toggle-group": "^1.1.0", + "@rn-primitives/tooltip": "^1.2.0", + "@rn-primitives/types": "^1.1.0", + "@supabase/supabase-js": "^2.53.0", + "@tanstack/react-query": "^5.84.0", + "@tanstack/react-query-persist-client": "^5.84.0", + "babel-plugin-react-compiler": "^1.0.0", + "base64-arraybuffer": "^1.0.2", + "bidirectional-map": "^1.1.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "eslint-config-expo": "~55.0.0", + "eslint-plugin-drizzle": "^0.2.3", + "expo": "^55.0.0-preview.10", + "expo-application": "~55.0.5", + "expo-audio": "~55.0.5", + "expo-build-properties": "~55.0.6", + "expo-clipboard": "~55.0.5", + "expo-constants": "~55.0.4", + "expo-dev-client": "~55.0.5", + "expo-device": "~55.0.6", + "expo-drizzle-studio-plugin": "^0.2.1", + "expo-file-system": "~55.0.5", + "expo-font": "~55.0.3", + "expo-haptics": "~55.0.5", + "expo-image": "~55.0.3", + "expo-linear-gradient": "~55.0.5", + "expo-linking": "~55.0.4", + "expo-localization": "~55.0.5", + "expo-manifests": "~55.0.5", + "expo-router": "~55.0.0-preview.7", + "expo-sharing": "~55.0.6", + "expo-splash-screen": "~55.0.5", + "expo-sqlite": "~55.0.5", + "expo-status-bar": "~55.0.2", + "expo-system-ui": "~55.0.5", + "expo-updates": "~55.0.7", + "js-logger": "^1.6.1", + "lucide-react-native": "^0.563.0", + "moti": "^0.30.0", + "nativewind": "^4.2.1", + "posthog-js": "^1.345.1", + "posthog-react-native": "^4.31.0", + "posthog-react-native-session-replay": "^1.2.4", + "react": "19.2.0", + "react-compiler-runtime": "^1.0.0", + "react-dom": "19.2.0", + "react-hook-form": "^7.54.2", + "react-native": "0.83.1", + "react-native-audio-concat": "^0.9.0", + "react-native-element-dropdown": "2.12.4", + "react-native-gesture-handler": "~2.30.0", + "react-native-keyboard-controller": "1.20.7", + "react-native-onboarding": "^1.0.6", + "react-native-pager-view": "8.0.0", + "react-native-reanimated": "^4.2.1", + "react-native-reorderable-list": "^0.18.0", + "react-native-safe-area-context": "~5.6.0", + "react-native-screens": "~4.23.0", + "react-native-svg": "15.15.3", + "react-native-url-polyfill": "^3.0.0", + "react-native-uuid": "^2.0.3", + "react-native-web": "^0.21.0", + "react-native-worklets": "^0.7.2", + "tailwind-merge": "^3.3.0", + "tailwindcss-animate": "^1.0.7", + "testflight-dev-deploy": "^0.0.8", + "vaul": "^1.1.2", + "zod": "^4.1.11", + "zustand": "^5.0.3" + }, + "devDependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@eslint/compat": "^1.2.4", + "@libsql/client": "^0.17.0", + "@modelcontextprotocol/sdk": "^1.0.4", + "@react-native-community/cli": "latest", + "@total-typescript/ts-reset": "^0.6.1", + "@types/bidirectional-map": "^1.0.4", + "@types/default-gateway": "^7.2.2", + "@types/jest": "^30.0.0", + "@types/node": "^25.2.2", + "@types/react": "~19.2.2", + "@types/react-test-renderer": "^19.0.0", + "babel-plugin-inline-import": "^3.0.0", + "babel-preset-expo": "~55.0.0", + "cross-env": "^10.1.0", + "default-gateway": "^7.2.2", + "drizzle-kit": "^0.31.4", + "drizzle-orm": "^0.45.1", + "eslint": "^9.38.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-compiler": "^19.1.0-rc.2", + "eslint-plugin-react-hooks": "^7.0.1", + "expo-atlas": "^0.4.0", + "jest": "^29.2.1", + "jest-expo": "~55.0.6", + "jiti": "^2.6.1", + "knip": "^5.64.2", + "metro-react-native-babel-transformer": "^0.77.0", + "patch-package": "^8.0.1", + "prettier": "^3.6.2", + "prettier-plugin-tailwindcss": "^0.7.2", + "react-native-svg-transformer": "^1.5.1", + "react-test-renderer": "19.0.0", + "sharp-cli": "^5.2.0", + "supabase": "^2.48.3", + "tailwindcss": "^3.4.17", + "ts-node": "^10.9.2", + "tsx": "^4.19.2", + "typescript": "~5.9.2", + "typescript-eslint": "^8.20.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@azure/core-asynciterator-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz", + "integrity": "sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@babel/cli": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.28.6.tgz", + "integrity": "sha512-6EUNcuBbNkj08Oj4gAZ+BUU8yLCgKzgVX4gaTh09Ya2C8ICM4P+G30g4m3akRxSYAp3A/gnWchrNst7px4/nUQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.28", + "commander": "^6.2.0", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.6.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/cli/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@babel/cli/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/cli/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/cli/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/cli/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@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.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@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.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", + "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz", + "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.28.6.tgz", + "integrity": "sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", + "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "license": "MIT", + "dependencies": { + "@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/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^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/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz", + "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.27.1.tgz", + "integrity": "sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-flow-strip-types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.28.6.tgz", + "integrity": "sha512-pgcbbEl/dWQYb6L6Yew6F94rdwygfuv+vJ/tXfwIOYAfPB6TNWpXUMEtEq3YuTeHRdvMIhvz13bkT9CNaS+wqA==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse--for-generate-function-map": { + "name": "@babel/traverse", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@blazejkustra/react-native-alert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@blazejkustra/react-native-alert/-/react-native-alert-1.0.0.tgz", + "integrity": "sha512-bgvKlnhfS39vz38BSBdHk1smVME0Nf5tJEzgoQOIPpci8KuTBcOORa93B2PV3/S5a0QkR1d8nW2yw76HDj6zqQ==", + "license": "MIT", + "workspaces": [ + "example" + ], + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@drizzle-team/brocli": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz", + "integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "license": "MIT", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "license": "MIT", + "optional": true + }, + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@esbuild-kit/core-utils": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", + "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==", + "deprecated": "Merged into tsx: https://tsx.is", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.18.20", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/@esbuild-kit/esm-loader": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz", + "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==", + "deprecated": "Merged into tsx: https://tsx.is", + "dev": true, + "license": "MIT", + "dependencies": { + "@esbuild-kit/core-utils": "^3.3.2", + "get-tsconfig": "^4.7.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/compat": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz", + "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.40 || 9" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@expo-google-fonts/material-symbols": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@expo-google-fonts/material-symbols/-/material-symbols-0.4.21.tgz", + "integrity": "sha512-nsbtsdihVp8AxFfkv0po3z59iSmeKt33cv/wgPxiFdOx2HI5xRgAi63f/4dW6bYbC2PF5Jv6rF7afqbqTrdUhg==", + "license": "MIT AND Apache-2.0" + }, + "node_modules/@expo-google-fonts/noto-sans": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@expo-google-fonts/noto-sans/-/noto-sans-0.4.2.tgz", + "integrity": "sha512-zYD8G2ijWLxqmquoQgghNh/x9p0yxWwArD0oxO1oXY1qx5vOd4t0Kbhnu/Cx8RTy08OgA8RtxuULZFaXwVPnPw==", + "license": "MIT AND OFL-1.1" + }, + "node_modules/@expo/cli": { + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.7.tgz", + "integrity": "sha512-RuhoB/M0LnD5dSTkd7lkVjCR1H2lpviZTDokLWhV/HbOzlOwXehKGA5MNjse8Jc3/ZoizFrs3b9ZYmX9APCNjA==", + "license": "MIT", + "dependencies": { + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.1.0", + "@expo/image-utils": "^0.8.12", + "@expo/json-file": "^10.0.12", + "@expo/log-box": "55.0.6", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "~55.0.5", + "@expo/osascript": "^2.4.2", + "@expo/package-manager": "^1.10.3", + "@expo/plist": "^0.5.2", + "@expo/prebuild-config": "^55.0.4", + "@expo/router-server": "^55.0.5", + "@expo/schema-utils": "^55.0.2", + "@expo/spawn-async": "^1.7.2", + "@expo/ws-tunnel": "^1.0.1", + "@expo/xcpretty": "^4.4.0", + "@react-native/dev-middleware": "0.83.1", + "accepts": "^1.3.8", + "arg": "^5.0.2", + "better-opn": "~3.0.2", + "bplist-creator": "0.1.0", + "bplist-parser": "^0.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "compression": "^1.7.4", + "connect": "^3.7.0", + "debug": "^4.3.4", + "dnssd-advertise": "^1.1.1", + "env-editor": "^0.4.1", + "expo-server": "^55.0.3", + "fetch-nodeshim": "^0.4.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "lan-network": "^0.1.6", + "minimatch": "^9.0.0", + "multitars": "^0.2.3", + "node-forge": "^1.3.3", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "picomatch": "^3.0.1", + "pretty-format": "^29.7.0", + "progress": "^2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "send": "^0.19.0", + "slugify": "^1.3.4", + "source-map-support": "~0.5.21", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "terminal-link": "^2.1.1", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1", + "zod": "^3.25.76" + }, + "bin": { + "expo-internal": "build/bin/cli" + }, + "peerDependencies": { + "expo": "*", + "expo-router": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "expo-router": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@expo/cli/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@expo/cli/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@expo/cli/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@expo/cli/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@expo/cli/node_modules/glob": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", + "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/cli/node_modules/glob/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/cli/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/cli/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/cli/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", + "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", + "license": "MIT", + "dependencies": { + "node-forge": "^1.3.3" + } + }, + "node_modules/@expo/config": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", + "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "^10.0.12", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" + } + }, + "node_modules/@expo/config-plugins": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", + "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^55.0.4", + "@expo/json-file": "~10.0.12", + "@expo/plist": "^0.5.2", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/glob": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", + "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config-plugins/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/config-types": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", + "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", + "license": "MIT" + }, + "node_modules/@expo/config/node_modules/glob": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", + "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/devcert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz", + "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==", + "license": "MIT", + "dependencies": { + "@expo/sudo-prompt": "^9.3.1", + "debug": "^3.1.0" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/devtools": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-55.0.2.tgz", + "integrity": "sha512-4VsFn9MUriocyuhyA+ycJP3TJhUsOFHDc270l9h3LhNpXMf6wvIdGcA0QzXkZtORXmlDybWXRP2KT1k36HcQkA==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@expo/dom-webview": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-55.0.3.tgz", + "integrity": "sha512-bY4/rfcZ0f43DvOtMn8/kmPlmo01tex5hRoc5hKbwBwQjqWQuQt0ACwu7akR9IHI4j0WNG48eL6cZB6dZUFrzg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.1.0.tgz", + "integrity": "sha512-vbLItCcADX2WFlfQOlAXfdDL8opBjXUnbzShSY/+3zyrkSMoxwSTgrgS8JdoGla47pVRjpKtziD5HgJgMjf8Tg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "getenv": "^2.0.0" + }, + "engines": { + "node": ">=20.12.0" + } + }, + "node_modules/@expo/fingerprint": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.3.tgz", + "integrity": "sha512-abm2rm/3Tg1gPihTyDcy7kOWnjPdtpWHSI/VpWwLaAmqqa5hFASBcr8ge58ZEWsNiozUJbfflqOp5oTQqoumAA==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "minimatch": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + }, + "bin": { + "fingerprint": "bin/cli.js" + } + }, + "node_modules/@expo/fingerprint/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@expo/fingerprint/node_modules/glob": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", + "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.12.tgz", + "integrity": "sha512-3KguH7kyKqq7pNwLb9j6BBdD/bjmNwXZG/HPWT6GWIXbwrvAJt2JNyYTP5agWJ8jbbuys1yuCzmkX+TU6rmI7A==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + } + }, + "node_modules/@expo/image-utils/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/json-file": { + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.12.tgz", + "integrity": "sha512-inbDycp1rMAelAofg7h/mMzIe+Owx6F7pur3XdQ3EPTy00tme+4P6FWgHKUcjN8dBSrnbRNpSyh5/shzHyVCyQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/local-build-cache-provider": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.3.tgz", + "integrity": "sha512-wdpqOSpaqsY5CZ4rnC49U3jsdRaOfzbl6MlD7oSRH2slKmVoD/CiHH+9x9uuLsp65mGTp0a+FMUL6JfuvxRPIw==", + "license": "MIT", + "dependencies": { + "@expo/config": "~55.0.4", + "chalk": "^4.1.2" + } + }, + "node_modules/@expo/log-box": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.6.tgz", + "integrity": "sha512-t19lLsHQT2dmdBtKohibSzNlueTYDF//h7qyF7b/SMZRcofS27y/UJsoYPJfMJbo1OdQkZyI1InZYdpzwolMsA==", + "license": "MIT", + "dependencies": { + "@expo/dom-webview": "^55.0.3", + "anser": "^1.4.9", + "stacktrace-parser": "^0.1.10" + }, + "peerDependencies": { + "@expo/dom-webview": "^55.0.3", + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/metro": { + "version": "54.2.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", + "integrity": "sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==", + "license": "MIT", + "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" + } + }, + "node_modules/@expo/metro-config": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.5.tgz", + "integrity": "sha512-U5uEtUlPUJIH7nVleO+nLVhIjlxNbm6iN/cyP/ybQ0M7lRkRWl1ADFRwpy4z5ta/cvosmBqy6tIV0u9m5X1dqA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@expo/config": "~55.0.4", + "@expo/env": "~2.1.0", + "@expo/json-file": "~10.0.12", + "@expo/metro": "~54.2.0", + "@expo/spawn-async": "^1.7.2", + "browserslist": "^4.25.0", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "hermes-parser": "^0.29.1", + "jsc-safe-url": "^0.2.4", + "lightningcss": "^1.30.1", + "minimatch": "^9.0.0", + "postcss": "~8.4.32", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "expo": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } + } + }, + "node_modules/@expo/metro-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@expo/metro-config/node_modules/glob": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", + "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/@expo/metro-config/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.29.1" + } + }, + "node_modules/@expo/metro-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-runtime": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.5.tgz", + "integrity": "sha512-b8WBilddI89Sc3c9dDznvmMg7PKH8Plj39Hw6cdFoSQGULLeyA7cTAUodMe2ytSOq1n1EzuO0GPHNxwsp5wprQ==", + "license": "MIT", + "dependencies": { + "@expo/log-box": "55.0.6", + "anser": "^1.4.9", + "pretty-format": "^29.7.0", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-dom": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/@expo/npm-proofread": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@expo/npm-proofread/-/npm-proofread-1.0.1.tgz", + "integrity": "sha512-yDyBlNIgg+rKoKCOVM9ZyAtgqRx6gHw+JtmZTrYYW4auAfwS6kE/iInmCpVXPqRy0OhJHgXj6q5PCgWELLVMeg==", + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^5.3.0" + }, + "bin": { + "proofread": "proofread.js" + } + }, + "node_modules/@expo/npm-proofread/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@expo/osascript": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.4.2.tgz", + "integrity": "sha512-/XP7PSYF2hzOZzqfjgkoWtllyeTN8dW3aM4P6YgKcmmPikKL5FdoyQhti4eh6RK5a5VrUXJTOlTNIpIHsfB5Iw==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.10.3.tgz", + "integrity": "sha512-ZuXiK/9fCrIuLjPSe1VYmfp0Sa85kCMwd8QQpgyi5ufppYKRtLBg14QOgUqj8ZMbJTxE0xqzd0XR7kOs3vAK9A==", + "license": "MIT", + "dependencies": { + "@expo/json-file": "^10.0.12", + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "resolve-workspace-root": "^2.0.0" + } + }, + "node_modules/@expo/package-manager/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/package-manager/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@expo/package-manager/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@expo/package-manager/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@expo/package-manager/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/package-manager/node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/package-manager/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/plist": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/@expo/prebuild-config": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.4.tgz", + "integrity": "sha512-1bp/S+w7KRRjegN6u0/jn2cHwzcAP1QbnA8DxW3ts1EdTIZee1X8bmR57JzRzGLuU3pTPV+gLYdUoycTiYtPHg==", + "license": "MIT", + "dependencies": { + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/image-utils": "^0.8.12", + "@expo/json-file": "^10.0.12", + "@react-native/normalize-colors": "0.83.1", + "debug": "^4.3.1", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "xml2js": "0.6.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/@expo/prebuild-config/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/router-server": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.5.tgz", + "integrity": "sha512-b23SgYujpeA0qHu2lZ/H1XXuvc4TaBo92VikPUZ48YtETXMlRnccPv5Rp7N2rS7Na51wOqBEv9auPihk3d8N+A==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "@expo/metro-runtime": "^55.0.4", + "expo": "*", + "expo-constants": "^55.0.3", + "expo-font": "^55.0.3", + "expo-router": "*", + "expo-server": "^55.0.3", + "react": "*", + "react-dom": "*", + "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" + }, + "peerDependenciesMeta": { + "@expo/metro-runtime": { + "optional": true + }, + "expo-router": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, + "node_modules/@expo/schema-utils": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-55.0.2.tgz", + "integrity": "sha512-QZ5WKbJOWkCrMq0/kfhV9ry8te/OaS34YgLVpG8u9y2gix96TlpRTbxM/YATjNcUR2s4fiQmPCOxkGtog4i37g==", + "license": "MIT" + }, + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "license": "MIT" + }, + "node_modules/@expo/server": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.5.3.tgz", + "integrity": "sha512-WXsWzeBs5v/h0PUfHyNLLz07rwwO5myQ1A5DGYewyyGLmsyl61yVCe8AgAlp1wkiMsqhj2hZqI2u3K10QnCMrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "debug": "^4.3.4", + "source-map-support": "~0.5.21", + "undici": "^6.18.2" + } + }, + "node_modules/@expo/spawn-async": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz", + "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==", + "license": "MIT" + }, + "node_modules/@expo/vector-icons": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.0.3.tgz", + "integrity": "sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==", + "license": "MIT", + "peerDependencies": { + "expo-font": ">=14.0.4", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/ws-tunnel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-1.0.6.tgz", + "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==", + "license": "MIT" + }, + "node_modules/@expo/xcpretty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.4.0.tgz", + "integrity": "sha512-o2qDlTqJ606h4xR36H2zWTywmZ3v3842K6TU8Ik2n1mfW0S580VHlt3eItVYdLYz+klaPp7CXqanja8eASZjRw==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "chalk": "^4.1.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "excpretty": "build/cli.js" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz", + "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz", + "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.4", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.7.tgz", + "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.5" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@gorhom/bottom-sheet": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@gorhom/bottom-sheet/-/bottom-sheet-5.2.8.tgz", + "integrity": "sha512-+N27SMpbBxXZQ/IA2nlEV6RGxL/qSFHKfdFKcygvW+HqPG5jVNb1OqehLQsGfBP+Up42i0gW5ppI+DhpB7UCzA==", + "license": "MIT", + "dependencies": { + "@gorhom/portal": "1.0.14", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-native": "*", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">=2.16.1", + "react-native-reanimated": ">=3.16.0 || >=4.0.0-" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-native": { + "optional": true + } + } + }, + "node_modules/@gorhom/portal": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@gorhom/portal/-/portal-1.0.14.tgz", + "integrity": "sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.9", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz", + "integrity": "sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@hookform/resolvers": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", + "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==", + "license": "MIT", + "dependencies": { + "@standard-schema/utils": "^0.3.0" + }, + "peerDependencies": { + "react-hook-form": "^7.55.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz", + "integrity": "sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz", + "integrity": "sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz", + "integrity": "sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz", + "integrity": "sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz", + "integrity": "sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz", + "integrity": "sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz", + "integrity": "sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz", + "integrity": "sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz", + "integrity": "sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.4.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz", + "integrity": "sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz", + "integrity": "sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz", + "integrity": "sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "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": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "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.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "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 + } + } + }, + "node_modules/@jest/core/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect/node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect/node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "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.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "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 + } + } + }, + "node_modules/@jest/reporters/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@legendapp/list": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@legendapp/list/-/list-2.0.19.tgz", + "integrity": "sha512-zDWg8yg0smKxxk+M7gwAbZAnf5uczohPA+IjqLSkImz7+e9ytxeT0Mq35RBO9RTKODOXfV/aIgm1uqUHLBEdmg==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@libsql/client": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", + "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@libsql/core": "^0.17.0", + "@libsql/hrana-client": "^0.9.0", + "js-base64": "^3.7.5", + "libsql": "^0.5.22", + "promise-limit": "^2.7.0" + } + }, + "node_modules/@libsql/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", + "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-base64": "^3.7.5" + } + }, + "node_modules/@libsql/darwin-arm64": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.5.22.tgz", + "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@libsql/darwin-x64": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.5.22.tgz", + "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@libsql/hrana-client": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", + "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@libsql/isomorphic-ws": "^0.1.5", + "cross-fetch": "^4.0.0", + "js-base64": "^3.7.5", + "node-fetch": "^3.3.2" + } + }, + "node_modules/@libsql/isomorphic-ws": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", + "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ws": "^8.5.4", + "ws": "^8.13.0" + } + }, + "node_modules/@libsql/linux-arm-gnueabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-gnueabihf/-/linux-arm-gnueabihf-0.5.22.tgz", + "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-arm-musleabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-musleabihf/-/linux-arm-musleabihf-0.5.22.tgz", + "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-arm64-gnu": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.5.22.tgz", + "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-arm64-musl": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.5.22.tgz", + "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-x64-gnu": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.5.22.tgz", + "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-x64-musl": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.5.22.tgz", + "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/win32-x64-msvc": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.5.22.tgz", + "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@motionone/animation": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", + "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", + "license": "MIT", + "dependencies": { + "@motionone/easing": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/dom": { + "version": "10.12.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", + "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", + "license": "MIT", + "dependencies": { + "@motionone/animation": "^10.12.0", + "@motionone/generators": "^10.12.0", + "@motionone/types": "^10.12.0", + "@motionone/utils": "^10.12.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/easing": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", + "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", + "license": "MIT", + "dependencies": { + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/generators": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", + "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", + "license": "MIT", + "dependencies": { + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/types": { + "version": "10.17.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", + "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", + "license": "MIT" + }, + "node_modules/@motionone/utils": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", + "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", + "license": "MIT", + "dependencies": { + "@motionone/types": "^10.17.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@neon-rs/load": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", + "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "license": "MIT", + "optional": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@op-engineering/op-sqlite": { + "version": "15.2.5", + "resolved": "https://registry.npmjs.org/@op-engineering/op-sqlite/-/op-sqlite-15.2.5.tgz", + "integrity": "sha512-Vmgwt0AzY7qoge3X6EONhsb5NlM2yoQUF0/lseUWBelfc9BUili7/DFsFsS73cvtYWlwPpqeTGOoce5mzHozBw==", + "license": "MIT", + "workspaces": [ + "example", + "node" + ], + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", + "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", + "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", + "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-exporter-base": "0.208.0", + "@opentelemetry/otlp-transformer": "0.208.0", + "@opentelemetry/sdk-logs": "0.208.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", + "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-transformer": "0.208.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", + "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/sdk-logs": "0.208.0", + "@opentelemetry/sdk-metrics": "2.2.0", + "@opentelemetry/sdk-trace-base": "2.2.0", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", + "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", + "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", + "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", + "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", + "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", + "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@oxc-resolver/binding-android-arm-eabi": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.17.1.tgz", + "integrity": "sha512-+VuZyMYYaap5uDAU1xDU3Kul0FekLqpBS8kI5JozlWfYQKnc/HsZg2gHPkQrj0SC9lt74WMNCfOzZZJlYXSdEQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@oxc-resolver/binding-android-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.17.1.tgz", + "integrity": "sha512-YlDDTjvOEKhom/cRSVsXsMVeXVIAM9PJ/x2mfe08rfuS0iIEfJd8PngKbEIhG72WPxleUa+vkEZj9ncmC14z3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@oxc-resolver/binding-darwin-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.17.1.tgz", + "integrity": "sha512-HOYYLSY4JDk14YkXaz/ApgJYhgDP4KsG8EZpgpOxdszGW9HmIMMY/vXqVKYW74dSH+GQkIXYxBrEh3nv+XODVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxc-resolver/binding-darwin-x64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.17.1.tgz", + "integrity": "sha512-JHPJbsa5HvPq2/RIdtGlqfaG9zV2WmgvHrKTYmlW0L5esqtKCBuetFudXTBzkNcyD69kSZLzH92AzTr6vFHMFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxc-resolver/binding-freebsd-x64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.17.1.tgz", + "integrity": "sha512-UD1FRC8j8xZstFXYsXwQkNmmg7vUbee006IqxokwDUUA+xEgKZDpLhBEiVKM08Urb+bn7Q0gn6M1pyNR0ng5mg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.17.1.tgz", + "integrity": "sha512-wFWC1wyf2ROFWTxK5x0Enm++DSof3EBQ/ypyAesMDLiYxOOASDoMOZG1ylWUnlKaCt5W7eNOWOzABpdfFf/ssA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.17.1.tgz", + "integrity": "sha512-k/hUif0GEBk/csSqCfTPXb8AAVs1NNWCa/skBghvNbTtORcWfOVqJ3mM+2pE189+enRm4UnryLREu5ysI0kXEQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.17.1.tgz", + "integrity": "sha512-Cwm6A071ww60QouJ9LoHAwBgEoZzHQ0Qaqk2E7WLfBdiQN9mLXIDhnrpn04hlRElRPhLiu/dtg+o5PPLvaINXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.17.1.tgz", + "integrity": "sha512-+hwlE2v3m0r3sk93SchJL1uyaKcPjf+NGO/TD2DZUDo+chXx7FfaEj0nUMewigSt7oZ2sQN9Z4NJOtUa75HE5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.17.1.tgz", + "integrity": "sha512-bO+rsaE5Ox8cFyeL5Ct5tzot1TnQpFa/Wmu5k+hqBYSH2dNVDGoi0NizBN5QV8kOIC6O5MZr81UG4yW/2FyDTA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.17.1.tgz", + "integrity": "sha512-B/P+hxKQ1oX4YstI9Lyh4PGzqB87Ddqj/A4iyRBbPdXTcxa+WW3oRLx1CsJKLmHPdDk461Hmbghq1Bm3pl+8Aw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.17.1.tgz", + "integrity": "sha512-ulp2H3bFXzd/th2maH+QNKj5qgOhJ3v9Yspdf1svTw3CDOuuTl6sRKsWQ7MUw0vnkSNvQndtflBwVXgzZvURsQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.17.1.tgz", + "integrity": "sha512-LAXYVe3rKk09Zo9YKF2ZLBcH8sz8Oj+JIyiUxiHtq0hiYLMsN6dOpCf2hzQEjPAmsSEA/hdC1PVKeXo+oma8mQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-x64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.17.1.tgz", + "integrity": "sha512-3RAhxipMKE8RCSPn7O//sj440i+cYTgYbapLeOoDvQEt6R1QcJjTsFgI4iz99FhVj3YbPxlZmcLB5VW+ipyRTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-x64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.17.1.tgz", + "integrity": "sha512-wpjMEubGU8r9VjZTLdZR3aPHaBqTl8Jl8F4DBbgNoZ+yhkhQD1/MGvY70v2TLnAI6kAHSvcqgfvaqKDa2iWsPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-openharmony-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.17.1.tgz", + "integrity": "sha512-XIE4w17RYAVIgx+9Gs3deTREq5tsmalbatYOOBGNdH7n0DfTE600c7wYXsp7ANc3BPDXsInnOzXDEPCvO1F6cg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@oxc-resolver/binding-wasm32-wasi": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.17.1.tgz", + "integrity": "sha512-Lqi5BlHX3zS4bpSOkIbOKVf7DIk6Gvmdifr2OuOI58eUUyP944M8/OyaB09cNpPy9Vukj7nmmhOzj8pwLgAkIg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.17.1.tgz", + "integrity": "sha512-l6lTcLBQVj1HNquFpXSsrkCIM8X5Hlng5YNQJrg00z/KyovvDV5l3OFhoRyZ+aLBQ74zUnMRaJZC7xcBnHyeNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.17.1.tgz", + "integrity": "sha512-VTzVtfnCCsU/6GgvursWoyZrhe3Gj/RyXzDWmh4/U1Y3IW0u1FZbp+hCIlBL16pRPbDc5YvXVtCOnA41QOrOoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxc-resolver/binding-win32-x64-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.17.1.tgz", + "integrity": "sha512-jRPVU+6/12baj87q2+UGRh30FBVBzqKdJ7rP/mSqiL1kpNQB9yZ1j0+m3sru1m+C8hiFK7lBFwjUtYUBI7+UpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@posthog/core": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.21.0.tgz", + "integrity": "sha512-0a2JUIX1vhduP2El/6/J8s5AeYAurIoufQGFgMiGnJE5ajd63o9LFocu2vFYYBnIOmy75y4ADNeW8zSl1keEQQ==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6" + } + }, + "node_modules/@posthog/types": { + "version": "1.345.2", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.345.2.tgz", + "integrity": "sha512-VZ1I+bp1YbYG4pSN84YAYCfvUyG5PmKIHx0ucZ6HO23sRgMZw381LLzfBAtmsA4tQ9+uMLigCTIZ4sDMl4ADFw==", + "license": "MIT" + }, + "node_modules/@powersync/attachments": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@powersync/attachments/-/attachments-2.4.2.tgz", + "integrity": "sha512-RXAzMVd1MCZm4VqP6V3rvp29xGCVHzfktV+tWVgSmS3GhvHL3mp70h7D/kcHOcHcPtCASXaasKDxXbuswlbaBw==", + "license": "Apache-2.0", + "peerDependencies": { + "@powersync/common": "^1.46.0" + } + }, + "node_modules/@powersync/common": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", + "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", + "license": "Apache-2.0", + "dependencies": { + "async-mutex": "^0.5.0", + "event-iterator": "^2.0.0" + } + }, + "node_modules/@powersync/drizzle-driver": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@powersync/drizzle-driver/-/drizzle-driver-0.7.2.tgz", + "integrity": "sha512-urzkvimN44qWufmNonDdvwI3tcN9qFA0XB6BpoQDXFonkRzjunnZiUHas558PdDiw98AEJ4bD+FbtvvgJKzDcw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.1" + }, + "peerDependencies": { + "@powersync/common": "^1.46.0", + "drizzle-orm": "<1.0.0" + } + }, + "node_modules/@powersync/op-sqlite": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@powersync/op-sqlite/-/op-sqlite-0.8.0.tgz", + "integrity": "sha512-1FNzuSipyGCtxROkhg2DG7mOZjOtPMTj+YEgHqSVFuMdrkzjx31jmf+Lw5VI+UeCWNSUNuUcD/UMrrEUAmRxBw==", + "license": "Apache-2.0", + "dependencies": { + "@powersync/common": "1.46.0", + "async-lock": "^1.4.1" + }, + "peerDependencies": { + "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0 || ^15.0.0", + "@powersync/common": "^1.46.0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@powersync/react": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@powersync/react/-/react-1.8.2.tgz", + "integrity": "sha512-15z8JKt66dq2bqX2P7QQ71eUIx3DWLc5WMdB/PDc9MIAHf1SERqKfzbzWGxKplQGHC/GogDA7G8IDoRadhNXOA==", + "license": "Apache-2.0", + "peerDependencies": { + "@powersync/common": "^1.41.1", + "react": "*" + } + }, + "node_modules/@powersync/react-native": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@powersync/react-native/-/react-native-1.29.0.tgz", + "integrity": "sha512-U7wg1v4WA/STdyeHVb2Z2SUEVG6fM7JZZvYt+7xL6bd3ORLxloAIxIrORFZcsOYzaKjDL9D+R8wkSXFy2s5vbg==", + "license": "Apache-2.0", + "dependencies": { + "@powersync/common": "1.46.0", + "@powersync/react": "1.8.2", + "async-mutex": "^0.5.0" + }, + "peerDependencies": { + "@journeyapps/react-native-quick-sqlite": "^2.5.0", + "@powersync/common": "^1.46.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@journeyapps/react-native-quick-sqlite": { + "optional": true + } + } + }, + "node_modules/@powersync/tanstack-react-query": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@powersync/tanstack-react-query/-/tanstack-react-query-0.1.14.tgz", + "integrity": "sha512-mx1TR+Syh3PtoGaajPbHIZe5S8oJLtxBfmNaTZaHzhwchcrZR/EoJfiS+7hdwwx3mb3YOjKmZbqAx1YKlZwUgw==", + "license": "Apache-2.0", + "dependencies": { + "@powersync/common": "1.46.0", + "@powersync/react": "1.8.2", + "@tanstack/react-query": "^5.70.0" + }, + "peerDependencies": { + "@powersync/common": "^1.46.0", + "react": "*" + } + }, + "node_modules/@powersync/web": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@powersync/web/-/web-1.32.0.tgz", + "integrity": "sha512-AYXF+0x5DTfyjPc2Eh89GZLTSanCZYqxsE/js1C9yRzI9+e3NkAjnX7r9n3FFkJS9PSlHlctDMxyb5x2epvMJg==", + "license": "Apache-2.0", + "dependencies": { + "@powersync/common": "1.46.0", + "async-mutex": "^0.5.0", + "bson": "^6.10.4", + "comlink": "^4.4.2", + "commander": "^12.1.0" + }, + "bin": { + "powersync-web": "bin/powersync.cjs" + }, + "peerDependencies": { + "@journeyapps/wa-sqlite": "^1.4.1", + "@powersync/common": "^1.46.0" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@quidone/react-native-wheel-picker": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@quidone/react-native-wheel-picker/-/react-native-wheel-picker-1.6.1.tgz", + "integrity": "sha512-EFmrqM5k8OUr8k44cU4YRg2WPQwwG+ZtUr04qESNqhOFlvktFCrq6wH2PwnMzBel0Z+9t2PgsMh/2uoTse5RfA==", + "license": "MIT", + "dependencies": { + "@rozhkov/react-useful-hooks": "^1.0.10", + "date-fns": "^4.1.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-native": ">=0.71.6" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", + "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.8.tgz", + "integrity": "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.3", + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.3.tgz", + "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", + "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", + "license": "MIT", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || >=0.65 <1.0" + } + }, + "node_modules/@react-native-community/cli": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", + "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-clean": "20.1.1", + "@react-native-community/cli-config": "20.1.1", + "@react-native-community/cli-doctor": "20.1.1", + "@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.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "rnc-cli": "build/bin.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", + "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", + "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config-android": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", + "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config-apple": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", + "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", + "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config": "20.1.1", + "@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.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.13.0", + "execa": "^5.0.0", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "semver": "^7.5.2", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", + "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config-android": "20.1.1", + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "logkitty": "^0.7.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-apple": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", + "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config-apple": "20.1.1", + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", + "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-platform-apple": "20.1.1" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", + "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "body-parser": "^1.20.3", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "open": "^6.2.0", + "pretty-format": "^29.7.0", + "serve-static": "^1.13.1", + "strict-url-sanitise": "0.0.1", + "ws": "^6.2.3" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", + "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-types": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", + "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/netinfo": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.5.2.tgz", + "integrity": "sha512-/g0m65BtX9HU+bPiCH2517bOHpEIUsGrWFXDzi1a5nNKn5KujQgm04WhL7/OSXWKHyrT8VVtUoJA0XKRxueBpQ==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": ">=0.59" + } + }, + "node_modules/@react-native-community/slider": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.2.tgz", + "integrity": "sha512-UV/MjCyCtSjS5BQDrrGIMmCXm309xEG6XbR0Dj65kzTraJSVDxSjQS2uBUXgX+5SZUOCzCxzv3OufOZBdtQY4w==", + "license": "MIT" + }, + "node_modules/@react-native-documents/picker": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", + "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", + "license": "MIT", + "funding": { + "url": "https://github.com/react-native-documents/document-picker?sponsor=1" + }, + "peerDependencies": { + "react": "*", + "react-native": ">=0.79.0" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", + "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", + "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.83.1" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", + "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.83.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.32.0" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", + "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.32.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", + "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", + "license": "MIT", + "dependencies": { + "@react-native/dev-middleware": "0.83.1", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", + "semver": "^7.1.3" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true + }, + "@react-native/metro-config": { + "optional": true + } + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", + "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/debugger-shell": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", + "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", + "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.83.1", + "@react-native/debugger-shell": "0.83.1", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^7.5.10" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", + "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", + "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", + "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "license": "MIT" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", + "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.2.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-navigation/bottom-tabs": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.13.0.tgz", + "integrity": "sha512-qxxjRDpjhZ4vIZqG4rBU1Vx2jgOAO/ciUKc9sJqVlTM005E2E+aK1EaE3lGaBDyZxTpjonollAucZcqL7OTscQ==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" + }, + "peerDependencies": { + "@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" + } + }, + "node_modules/@react-navigation/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", + "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", + "license": "MIT", + "dependencies": { + "@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-is": "^19.1.0", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "react": ">= 18.2.0" + } + }, + "node_modules/@react-navigation/elements": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", + "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", + "license": "MIT", + "dependencies": { + "color": "^4.2.3", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } + } + }, + "node_modules/@react-navigation/native": { + "version": "7.1.28", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", + "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", + "license": "MIT", + "dependencies": { + "@react-navigation/core": "^7.14.0", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "use-latest-callback": "^0.2.4" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*" + } + }, + "node_modules/@react-navigation/native-stack": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.12.0.tgz", + "integrity": "sha512-XmNJsPshjkNsahgbxNgGWQUq4s1l6HqH/Fei4QsjBNn/0mTvVrRVZwJ1XrY9YhWYvyiYkAN6/OmarWQaQJ0otQ==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" + }, + "peerDependencies": { + "@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" + } + }, + "node_modules/@react-navigation/routers": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", + "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11" + } + }, + "node_modules/@rn-primitives/checkbox": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/checkbox/-/checkbox-1.2.0.tgz", + "integrity": "sha512-FU/c81eoo6zGm4J4uCccjnqijrQ0grMkt6W3xhnOFkxqxiU2QrnlXN7ddhm2yN+s8CNnke4bOj/xr78wIaYfiw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-checkbox": "^1.3.2", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/hooks": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/hooks/-/hooks-1.3.0.tgz", + "integrity": "sha512-BR97reSu7uVDpyMeQdRJHT0w8KdS6jdYnOL6xQtqS2q3H6N7vXBlX4LFERqJZphD+aziJFIAJ3HJF1vtt6XlpQ==", + "license": "MIT", + "dependencies": { + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/label": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/label/-/label-1.2.0.tgz", + "integrity": "sha512-eThBr6vn2jS81ZS4JNcg0+02TkEircH4bZmjF4IZUDl4XRpevwK95NyOkbfhGYmpVbAuisAVxDmvNOQ4OVjfug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-label": "^2.1.7", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/portal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/portal/-/portal-1.3.0.tgz", + "integrity": "sha512-a2DSce7TcSfcs0cCngLadAJOvx/+mdH9NRu+GxkX8NPRsGGhJvDEOqouMgDqLwx7z9mjXoUaZcwaVcemUSW9/A==", + "license": "MIT", + "dependencies": { + "zustand": "^5.0.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/progress": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/progress/-/progress-1.2.0.tgz", + "integrity": "sha512-bbO4WGSNAd2idYDW0ma4xCX9UFOjNK3U4F4hLRhMKglz3c/QVYfpKvlGQ0Y0d7kpelA7MQizvFeqGGYfxSuisw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-progress": "^1.1.7", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/select/-/select-1.2.0.tgz", + "integrity": "sha512-W3qFkdSAFPnjNMM7II5MiLCItjWOGXr8f+3obPtLAHcWrcsX/d1KogmplWXwmhBvVStCgE1OpJAD3DE2CHx9Rw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-select": "^2.2.5", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "@rn-primitives/portal": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/slider": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/slider/-/slider-1.2.0.tgz", + "integrity": "sha512-JRxTQelfEdG7tWA+7v5YY/9hUeZXe99BrfRH4b/kUbdMdzMp+MEEvJ6y1iqUlNIys5B6uuTWLnFjI8IhG/MkXw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slider": "^1.3.5", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/slot/-/slot-1.2.0.tgz", + "integrity": "sha512-cpbn+JLjSeq3wcA4uqgFsUimMrWYWx2Ks7r5rkwd1ds1utxynsGkLOKpYVQkATwWrYhtcoF1raxIKEqXuMN+/w==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/switch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/switch/-/switch-1.2.0.tgz", + "integrity": "sha512-M4r4LvLUFgn3SIkrMuEkDIxnRbHPLZF2cvKhdHmsk1vk6DSIw3WxYEA+0GkU6a8wnOCFzWRl4kHh5+x86bo1/w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-switch": "^1.2.5", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/tabs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/tabs/-/tabs-1.2.0.tgz", + "integrity": "sha512-sKqVYQD1s46eS8kGBsCGxJrtZ4my+sjXD5m2auGSdTJmJ8dNYqZJEI1caiMm64ZvRuQDe2bFsekAFGexBD4qUQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-tabs": "^1.1.12", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/toggle": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/toggle/-/toggle-1.2.0.tgz", + "integrity": "sha512-pVhlIdGCOaxBmcrSUYF3EUTeqOoLHCYEuj/qo64Ai89DnI5aSmReBgpttY5v/r0gNrku9dJZfrOe+uGzWNUn8Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-toggle": "^1.1.9", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/toggle-group": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/toggle-group/-/toggle-group-1.2.0.tgz", + "integrity": "sha512-xCbYZzGzCbr/3pu3xE9pEKzuXU5LHT0ZlK9WMdECQUHLRjSI2A6KnUiZJ+JqZ3lzcVlgCE2lZeZXmpvVyBXnNQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-toggle-group": "^1.1.10", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0", + "@rn-primitives/utils": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/tooltip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/tooltip/-/tooltip-1.2.0.tgz", + "integrity": "sha512-Fn1Y/maW1o64QI+nmBj2jBI/KdCEXv8kVGbDjjDFI68KUxDjuig/hACLiD7fEbLBhZqB/QnHUSRsnPUUOOVGdA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-tooltip": "^1.2.7", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "@rn-primitives/portal": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/types/-/types-1.2.0.tgz", + "integrity": "sha512-b+6zKgdKVqAfaFPSfhwlQL0dnPQXPpW890m3eguC0VDI1eOsoEvUfVb6lmgH4bum9MmI0xymq4tOUI/fsKLoCQ==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rn-primitives/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-vLXV5NuxIHDeb4Bw57FzdUh89/g8gz6GERm8TsbJaSUPsDXfnC/ffeYiZJb0LxNteKE3Nr8na4Jy2n26tFil7w==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } + }, + "node_modules/@rozhkov/react-useful-hooks": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@rozhkov/react-useful-hooks/-/react-useful-hooks-1.0.10.tgz", + "integrity": "sha512-aEDZDiqkpPJX8WqLqcnPGjXzRpCFiZmbtdr5RVUOciNbbANhdNu+oIxJv3g7ezMcgsYhgWp2/XGxU+g/ClsBew==", + "license": "MIT", + "dependencies": { + "default-values": "^1.0.2" + }, + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@supabase/auth-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.95.3.tgz", + "integrity": "sha512-vD2YoS8E2iKIX0F7EwXTmqhUpaNsmbU6X2R0/NdFcs02oEfnHyNP/3M716f3wVJ2E5XHGiTFXki6lRckhJ0Thg==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.95.3.tgz", + "integrity": "sha512-uTuOAKzs9R/IovW1krO0ZbUHSJnsnyJElTXIRhjJTqymIVGcHzkAYnBCJqd7468Fs/Foz1BQ7Dv6DCl05lr7ig==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.95.3.tgz", + "integrity": "sha512-LTrRBqU1gOovxRm1vRXPItSMPBmEFqrfTqdPTRtzOILV4jPSueFz6pES5hpb4LRlkFwCPRmv3nQJ5N625V2Xrg==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.95.3.tgz", + "integrity": "sha512-D7EAtfU3w6BEUxDACjowWNJo/ZRo7sDIuhuOGKHIm9FHieGeoJV5R6GKTLtga/5l/6fDr2u+WcW/m8I9SYmaIw==", + "license": "MIT", + "dependencies": { + "@types/phoenix": "^1.6.6", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.95.3.tgz", + "integrity": "sha512-4GxkJiXI3HHWjxpC3sDx1BVrV87O0hfX+wvJdqGv67KeCu+g44SPnII8y0LL/Wr677jB7tpjAxKdtVWf+xhc9A==", + "license": "MIT", + "dependencies": { + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.95.3.tgz", + "integrity": "sha512-Fukw1cUTQ6xdLiHDJhKKPu6svEPaCEDvThqCne3OaQyZvuq2qjhJAd91kJu3PXLG18aooCgYBaB6qQz35hhABg==", + "license": "MIT", + "dependencies": { + "@supabase/auth-js": "2.95.3", + "@supabase/functions-js": "2.95.3", + "@supabase/postgrest-js": "2.95.3", + "@supabase/realtime-js": "2.95.3", + "@supabase/storage-js": "2.95.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-persist-client-core": { + "version": "5.91.19", + "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.91.19.tgz", + "integrity": "sha512-whrASqbVq8261Ue+/ZzpHsrLDYVfRaENs4HTdLuYKxawkGWzdMfV7BmOdWl8ZF0mEBEbrQR8V6oE3R635JF2Fw==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.90.20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", + "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.90.20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@tanstack/react-query-persist-client": { + "version": "5.90.22", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.22.tgz", + "integrity": "sha512-BrD3Y/SsrSIDl+t/gpYvjvGHXd7m7oF+GIqktKE8LmTgt7bS1lYHd/CLkVxMPixTU53gHHVFfPNGmY7Hv4L/7g==", + "license": "MIT", + "dependencies": { + "@tanstack/query-persist-client-core": "5.91.19" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.90.20", + "react": "^18 || ^19" + } + }, + "node_modules/@testing-library/react-hooks": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz", + "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/react": ">=16.9.0", + "@types/react-dom": ">=16.9.0", + "@types/react-test-renderer": ">=16.9.0", + "react-error-boundary": "^3.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0", + "react-test-renderer": ">=16.9.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-test-renderer": { + "optional": true + } + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@total-typescript/ts-reset": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.6.1.tgz", + "integrity": "sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.6", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz", + "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==", + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/bidirectional-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/bidirectional-map/-/bidirectional-map-1.0.4.tgz", + "integrity": "sha512-jxMzw5jyGHm46E0CHRWAarV6pVI8DvmIs/+bmOzo/grJy1Iga8LDFRB7lyFaBwARLLaAwfaqJr2Tuaog204npw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@types/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-35C93fYQlnLKLASkMPoxRvok4fENwB3By9clRLd2I/08n/XRl0pCdf7EB17K5oMMwZu8NBYA8i66jH5r/LYBKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/phoenix": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", + "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", + "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/type-utils": "8.55.0", + "@typescript-eslint/utils": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.55.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", + "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", + "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.55.0", + "@typescript-eslint/types": "^8.55.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", + "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", + "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", + "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/utils": "8.55.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", + "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", + "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.55.0", + "@typescript-eslint/tsconfig-utils": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", + "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", + "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.55.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "license": "MIT", + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/assign-deep": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/assign-deep/-/assign-deep-0.4.8.tgz", + "integrity": "sha512-uxqXJCnNZDEjPnsaLKVzmh/ST5+Pqoz0wi06HDfHKx1ASNpSbbvz2qW2Gl8ZyHwr5jnm11X2S5eMQaP1lMZmCg==", + "license": "MIT", + "dependencies": { + "assign-symbols": "^0.1.1", + "is-primitive": "^2.0.0", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-0.1.1.tgz", + "integrity": "sha512-gwzH8QS/GV4pQsf6XOrlpBC6aDE8uJeZvymbEJ0W9TuDYqYOZc4RodvKDH98HCc+KFPYil1kD2XT0X0JWeOzQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "license": "MIT" + }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/await-lock": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", + "license": "MIT" + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-inline-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz", + "integrity": "sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-resolve": "0.0.2" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", + "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", + "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.29.1" + } + }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.29.1" + } + }, + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-expo": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.4.tgz", + "integrity": "sha512-GGPhL1bpJOFOQFRTkkVyhitf1CRtNjdVq2F1Ps7CWfw0fK/AmzAGO79cnnHuD24GhnwQe7C+Eip5U6ALbvPE3w==", + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.20.5", + "@babel/helper-module-imports": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.83.1", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.29.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "debug": "^4.3.4", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "@babel/runtime": "^7.20.0", + "expo": "*", + "expo-widgets": "^55.0.0-alpha.6", + "react-refresh": ">=0.14.0 <1.0.0" + }, + "peerDependenciesMeta": { + "@babel/runtime": { + "optional": true + }, + "expo": { + "optional": true + }, + "expo-widgets": { + "optional": true + } + } + }, + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "license": "MIT", + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/better-opn/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bidirectional-map": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bidirectional-map/-/bidirectional-map-1.1.1.tgz", + "integrity": "sha512-qfpqHKQbSpc5Eev0W35FZoPnoNUvItDrHbVU0YYKkAOBCZ4Dp3CYi9tjAQcdmqN6ui/9+ioIkb9m0uz8EZqPkA==", + "license": "ISC" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bin-links": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz", + "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "proc-log": "^6.0.0", + "read-cmd-shim": "^6.0.0", + "write-file-atomic": "^7.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/bin-links/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/bin-links/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", + "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, + "license": "MIT", + "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.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/bson": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", + "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/bubble-stream-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz", + "integrity": "sha512-Rqf0ly5H4HGt+ki/n3m7GxoR2uIGtNqezPlOLX8Vuo13j5/tfPuVvAr84eoGF7sYm6lKdbGnT/3q8qmzuT5Y9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.3.3", + "sliced": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmd-shim": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", + "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "license": "MIT" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comlink": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/comment-json": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", + "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/core-js": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", + "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/cross-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.3" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^7.1.1" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-gateway/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-values": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/default-values/-/default-values-1.0.2.tgz", + "integrity": "sha512-OaZEvojjexigvv1IT6N0rKUD5Af7fG11a0jg87jySv5xzjc2+IEW9oWNvqxWLHGhShRRZ0QopCGzGjJv/aY+mw==", + "license": "MIT" + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dnssd-advertise": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", + "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/drizzle-kit": { + "version": "0.31.9", + "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.9.tgz", + "integrity": "sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@drizzle-team/brocli": "^0.10.2", + "@esbuild-kit/esm-loader": "^2.5.5", + "esbuild": "^0.25.4", + "esbuild-register": "^3.5.0" + }, + "bin": { + "drizzle-kit": "bin.cjs" + } + }, + "node_modules/drizzle-orm": { + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", + "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=4", + "@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": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/sql.js": "*", + "@upstash/redis": ">=1.34.7", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=14.0.0", + "gel": ">=2", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "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 + }, + "@tidbcloud/serverless": { + "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 + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/errorhandler": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", + "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "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" + } + }, + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-expo": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-55.0.0.tgz", + "integrity": "sha512-YvhaKrp1g7pR/qjdI12E5nw9y0DJZWgYr815vyW8wskGLsFvxATY3mtKL8zm3ZYzWj3Bvc37tRIS661TEkrv9A==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-expo": "^1.0.0", + "eslint-plugin-import": "^2.30.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^5.1.0", + "globals": "^16.0.0" + }, + "peerDependencies": { + "eslint": ">=8.10" + } + }, + "node_modules/eslint-config-expo/node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "license": "MIT", + "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" + } + }, + "node_modules/eslint-config-expo/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-config-universe": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-universe/-/eslint-config-universe-12.1.0.tgz", + "integrity": "sha512-nAT0/rcOyYvsy0tY1yq0/BchUQImRCpORONzCvLkjixRBH5CbkMddb/V8ZlOLPgkfu3lp+sByRmSXNfoupTj2w==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0" + }, + "peerDependencies": { + "eslint": ">=8.10", + "prettier": ">=3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-universe/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-config-universe/node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-config-universe/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-universe/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-config-universe/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-config-universe/node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-drizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-drizzle/-/eslint-plugin-drizzle-0.2.3.tgz", + "integrity": "sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==", + "license": "Apache-2.0", + "peerDependencies": { + "eslint": ">=8.0.0" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-expo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-1.0.0.tgz", + "integrity": "sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "^8.29.1", + "@typescript-eslint/utils": "^8.29.1", + "eslint": "^9.24.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.10" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "license": "MIT", + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-compiler": { + "version": "19.1.0-rc.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.1.0-rc.2.tgz", + "integrity": "sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "hermes-parser": "^0.25.1", + "zod": "^3.22.4", + "zod-validation-error": "^3.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react-compiler/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react-compiler/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/eslint-plugin-react-compiler/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "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" + } + }, + "node_modules/eslint-plugin-react-hooks/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react-hooks/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", + "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expo": { + "version": "55.0.0-preview.10", + "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.10.tgz", + "integrity": "sha512-BtHgdcu/XS4yYSJTB4HHbYogT2qHl6S4usFqUPhoFfVu/F440VU3J98uUqbDLh5I8OcsZ2PbhjRpOy7uR+MExg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "55.0.7", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", + "@expo/devtools": "55.0.2", + "@expo/fingerprint": "0.16.3", + "@expo/local-build-cache-provider": "55.0.3", + "@expo/log-box": "55.0.6", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "55.0.5", + "@expo/vector-icons": "^15.0.2", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~55.0.4", + "expo-asset": "~55.0.4", + "expo-constants": "~55.0.4", + "expo-file-system": "~55.0.5", + "expo-font": "~55.0.3", + "expo-keep-awake": "~55.0.2", + "expo-modules-autolinking": "55.0.3", + "expo-modules-core": "55.0.8", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", + "whatwg-url-minimum": "^0.1.1" + }, + "bin": { + "expo": "bin/cli", + "expo-modules-autolinking": "bin/autolinking", + "fingerprint": "bin/fingerprint" + }, + "peerDependencies": { + "@expo/dom-webview": "*", + "@expo/metro-runtime": "*", + "react": "*", + "react-native": "*", + "react-native-webview": "*" + }, + "peerDependenciesMeta": { + "@expo/dom-webview": { + "optional": true + }, + "@expo/metro-runtime": { + "optional": true + }, + "react-native-webview": { + "optional": true + } + } + }, + "node_modules/expo-application": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-55.0.5.tgz", + "integrity": "sha512-+TSHZMobYEe96CcKRYaNMdO9CcuKpO/hCjBcB0SeoOkEwDbfPyY3KcdoVW6fU7xyPZYN0wucCnLgTXKqAeB5sQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-asset": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.4.tgz", + "integrity": "sha512-eaPPe9Sw4V0nL/KkEvuWpyeeSoGhP2fu1ZA7wkldqywhMVhhY+7kerMkQ7nPgJVtevIfkQRw7wD8ghZEzrKzmg==", + "license": "MIT", + "dependencies": { + "@expo/image-utils": "^0.8.12", + "expo-constants": "~55.0.4" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-atlas": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/expo-atlas/-/expo-atlas-0.4.3.tgz", + "integrity": "sha512-nN2bouxFvMsqZqLl0ka+eI9Ofida0PcuoE4v+7fHlgyp95X2cCL8Acf0nRKXmmIBEYazdw0d7BAOZfC0b41oxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@expo/server": "^0.5.0", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "compression": "^1.7.4", + "connect": "^3.7.0", + "express": "^4.19.2", + "freeport-async": "^2.0.0", + "getenv": "^2.0.0", + "morgan": "^1.10.0", + "open": "^8.4.2", + "serve-static": "^1.15.0", + "stream-json": "^1.8.0" + }, + "bin": { + "expo-atlas": "build/src/cli/bin.js" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-atlas/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expo-atlas/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/expo-atlas/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expo-atlas/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/expo-atlas/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/expo-atlas/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expo-atlas/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-atlas/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/expo-atlas/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-atlas/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/expo-audio": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.5.tgz", + "integrity": "sha512-B2UpahrjHDSi4BPP9rwZIDm1aNBzZ+KwVj09nIoQo2XC5ng2DuHBUFZF5cISX7gmUjS2HhsXtV5/CvKJLUt+6g==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "expo-asset": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-build-properties": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-55.0.6.tgz", + "integrity": "sha512-DfNRMAOGK3a2yao5RmCgNIz4bvCBFS8uHBHwYbd6RZos0n3Qqs96/l+Y9XMWJ/j7xVlXrTacw2wwwstqBGbwYA==", + "license": "MIT", + "dependencies": { + "@expo/schema-utils": "^55.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-build-properties/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-clipboard": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-55.0.5.tgz", + "integrity": "sha512-uzGQikfr46+E8bL//tzo+049VYFUzcc3vFgIqImjPrwF5oboKVkOvzsnwhTIQNC++fyU5i3jkLcGd+YK5EwcmA==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-constants": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.4.tgz", + "integrity": "sha512-zdPxsYnL8LrW91sXivdBIH5nouTDUG0npMZxaYhvEO/2p60iN0W4jK3n2sRFrPl31WctLWSs4ato/wIKnRuUFA==", + "license": "MIT", + "dependencies": { + "@expo/config": "~55.0.4", + "@expo/env": "~2.1.0" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-dev-client": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-55.0.5.tgz", + "integrity": "sha512-p0xkyrCYXztUrVl6fqIrhUVR30Cxp5PbP9Vv1IXl2po8OkFDQklu5y908NBN/oeWpgv1lSgKpRTdZ1G2nsJ7IQ==", + "license": "MIT", + "dependencies": { + "expo-dev-launcher": "55.0.6", + "expo-dev-menu": "55.0.5", + "expo-dev-menu-interface": "55.0.1", + "expo-manifests": "~55.0.5", + "expo-updates-interface": "~55.1.1" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-launcher": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-55.0.6.tgz", + "integrity": "sha512-Zrmdc0cgvizmX9Wd+Kc5iz0T5QQ2DSsx1Sedww9Ra4qQlUcL2GzoVnDqqw63zI5ax+rnMbBVWyiQUqHN1w/l/A==", + "license": "MIT", + "dependencies": { + "@expo/schema-utils": "^55.0.2", + "expo-dev-menu": "55.0.5", + "expo-manifests": "~55.0.5" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-55.0.5.tgz", + "integrity": "sha512-NCNvsUl+GaVD/FgzEiHtNBLoj4LCE2xE40FKsYsV25csNAp2JizeR5eSIAKW2NX4UTWvgdqOQMIoXhERt7pZBw==", + "license": "MIT", + "dependencies": { + "expo-dev-menu-interface": "55.0.1" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu-interface": { + "version": "55.0.1", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-55.0.1.tgz", + "integrity": "sha512-FkNtwq1q6NmYoy28pj+ZLuHmirJgc039pQbJ167MZJIaprLcMN1yy67qA7xBHK+FNJ8AN8kGCtMTPByg5UC72A==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-device": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-55.0.6.tgz", + "integrity": "sha512-GCO3shHTn8zk5FUBywra3qyFXv08uNQpJSGeNg/gBBJw+GVpgtZ/9mhB3gVh3daueCV+PWRFWn14QT3lW6PwqQ==", + "license": "MIT", + "dependencies": { + "ua-parser-js": "^0.7.33" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-drizzle-studio-plugin": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/expo-drizzle-studio-plugin/-/expo-drizzle-studio-plugin-0.2.1.tgz", + "integrity": "sha512-AjMC7SOutMAv/MkeJSp/26gnHLAA17SG8EtsjIKW6tDcBkq4plDVhjMLusoGe9f0vzYK8KrOvWjEWZ/R+KvIGg==", + "license": "MIT", + "peerDependencies": { + "expo": ">=53.0.5", + "expo-sqlite": ">=15.2.9" + } + }, + "node_modules/expo-eas-client": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-55.0.2.tgz", + "integrity": "sha512-fjOgSXaZFBK2Xmzn/uw0DTF3BsYv97JEa4PYXXqVCEvNJPwJB1cV1eX6Xyq6iKGIhMPH9k62sOc+oUdt094WCw==", + "license": "MIT" + }, + "node_modules/expo-file-system": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.5.tgz", + "integrity": "sha512-ZD9uJS4tmmyPBHcW7j90+CUsdvfavXdSHSQWG22g7Zm1x02E5elHKOAhsv9gFDGsMDc1nvgR+IvrWlokjkXVSQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-font": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", + "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", + "license": "MIT", + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-glass-effect": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-55.0.5.tgz", + "integrity": "sha512-ui3yOuntcqLukx32mPLcnYucRGN0zWk67euC45t6WlM6IPjXsRo6Z830drjKE7LPWbpWlRbOkdM6BpoAj+yDCQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-haptics": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-55.0.5.tgz", + "integrity": "sha512-8bUIjxLtET5290p0WKyMQ8S3lvxMFEOdbA3GHt07QhgPf0eqeCtsH8/+g+ojtVT9RieZM9dZBHiqofdKpwCQfg==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-image": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", + "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", + "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.2.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo-json-utils": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-55.0.0.tgz", + "integrity": "sha512-aupt/o5PDAb8dXDCb0JcRdkqnTLxe/F+La7jrnyd/sXlYFfRgBJLFOa1SqVFXm1E/Xam1SE/yw6eAb+DGY7Arg==", + "license": "MIT" + }, + "node_modules/expo-keep-awake": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", + "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, + "node_modules/expo-linear-gradient": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-55.0.5.tgz", + "integrity": "sha512-zesU+u1/chAFCq+hYtV1xy/5XeKbDWTytOrvJlI3cfxUXV3Ezm9hP3xV6iCzbc72a5ROJYyXLAvMuoM4Pl9ZOg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-linking": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-55.0.4.tgz", + "integrity": "sha512-n4gKPzxskShfkiXZoMMOcgyJ/JgwmyOCLSBxBBg3dsBetg+KGTB5vZw7oLCu/MsWuKfbsbc/eyuvzzDyWTrpJw==", + "license": "MIT", + "dependencies": { + "expo-constants": "~55.0.4", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-localization": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-55.0.5.tgz", + "integrity": "sha512-1AQvwtTqIH1aBZUiGI7kKFs5bTrfJOqYu4wCwmbB18P99dUZ8R4AfYzwmqI3aT/v1LggH5P7WjoW/NI+f40jpg==", + "license": "MIT", + "dependencies": { + "rtl-detect": "^1.0.2" + }, + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, + "node_modules/expo-manifests": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-55.0.5.tgz", + "integrity": "sha512-GXSVnEkAJ1o71L/WshV/NmDda/vnD4poDDKi/oSYSMd8him2u0GfqqzCsgec6Odlqz5fMqXO4JgoBaWKtzn8Aw==", + "license": "MIT", + "dependencies": { + "@expo/config": "~55.0.4", + "expo-json-utils": "~55.0.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-module-scripts": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/expo-module-scripts/-/expo-module-scripts-3.5.4.tgz", + "integrity": "sha512-grEDrWiUyB5X1F5slHu7lUEbU7sDj1CbokUmKezTt/Zbz34xQFwCuHQlmv4Tl2LPyjJVHZls3VnEytfJ+5yYUw==", + "license": "MIT", + "dependencies": { + "@babel/cli": "^7.23.4", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/preset-env": "^7.23.8", + "@babel/preset-typescript": "^7.23.3", + "@expo/npm-proofread": "^1.0.1", + "@testing-library/react-hooks": "^7.0.1", + "@tsconfig/node18": "^18.2.2", + "@types/jest": "^29.2.1", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-preset-expo": "~11.0.15", + "commander": "^2.19.0", + "eslint-config-universe": "^12.0.0", + "find-yarn-workspace-root": "^2.0.0", + "glob": "^7.1.7", + "jest-expo": "~51.0.0-unreleased", + "jest-snapshot-prettier": "npm:prettier@^2", + "jest-watch-typeahead": "2.2.1", + "ts-jest": "~29.0.4", + "typescript": "^5.1.3" + }, + "bin": { + "expo-module": "bin/expo-module.js" + } + }, + "node_modules/expo-module-scripts/node_modules/@babel/generator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", + "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.2.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/config": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.4.tgz", + "integrity": "sha512-g5ns5u1JSKudHYhjo1zaSfkJ/iZIcWmUmIQptMJZ6ag1C0ShL2sj8qdfU8MmAMuKLOgcIfSaiWlQnm4X3VJVkg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.3", + "@expo/json-file": "^8.3.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "3.34.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/config-plugins": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.11.tgz", + "integrity": "sha512-oALE1HwnLFthrobAcC9ocnR9KXLzfWEjgIe4CPe+rDsfC6GDs8dGYCXfRFoCEzoLN4TGYs9RdZ8r0KoCcNrm2A==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^51.0.3", + "@expo/json-file": "~8.3.0", + "@expo/plist": "^0.1.0", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/config-plugins/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/config-types": { + "version": "51.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.3.tgz", + "integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/json-file": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", + "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", + "license": "MIT", + "dependencies": { + "@react-native/codegen": "0.74.87" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/expo-module-scripts/node_modules/@react-native/babel-preset": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", + "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.74.87", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/expo-module-scripts/node_modules/@react-native/codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", + "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.19.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/expo-module-scripts/node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/expo-module-scripts/node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/expo-module-scripts/node_modules/@xmldom/xmldom": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", + "deprecated": "this version is no longer supported, please update to at least 0.8.*", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/expo-module-scripts/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler": { + "version": "0.0.0-experimental-592953e-20240517", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-592953e-20240517.tgz", + "integrity": "sha512-OjG1SVaeQZaJrqkMFJatg8W/MTow8Ak5rx2SI0ETQBO1XvOk/XZGMbltNCPdFJLKghBYoBjC+Y3Ap/Xr7B01mA==", + "license": "MIT", + "dependencies": { + "@babel/generator": "7.2.0", + "@babel/types": "^7.19.0", + "chalk": "4", + "invariant": "^2.2.4", + "pretty-format": "^24", + "zod": "^3.22.4", + "zod-validation-error": "^2.1.0" + } + }, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-native-web": { + "version": "0.19.13", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", + "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/babel-preset-expo": { + "version": "11.0.15", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.15.tgz", + "integrity": "sha512-rgiMTYwqIPULaO7iZdqyL7aAff9QLOX6OWUtLZBlOrOTreGY1yHah/5+l8MvI6NVc/8Zj5LY4Y5uMSnJIuzTLw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.74.87", + "babel-plugin-react-compiler": "0.0.0-experimental-592953e-20240517", + "babel-plugin-react-native-web": "~0.19.10", + "react-refresh": "^0.14.2" + } + }, + "node_modules/expo-module-scripts/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/expo-module-scripts/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "license": "MIT", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/expo-module-scripts/node_modules/hermes-estree": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", + "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/hermes-parser": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", + "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.19.1" + } + }, + "node_modules/expo-module-scripts/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/jest-expo": { + "version": "51.0.4", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.4.tgz", + "integrity": "sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug==", + "license": "MIT", + "dependencies": { + "@expo/config": "~9.0.0-beta.0", + "@expo/json-file": "^8.3.0", + "@jest/create-cache-key-function": "^29.2.1", + "babel-jest": "^29.2.1", + "find-up": "^5.0.0", + "jest-environment-jsdom": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-test-renderer": "18.2.0", + "stacktrace-js": "^2.0.2" + }, + "bin": { + "jest": "bin/jest.js" + } + }, + "node_modules/expo-module-scripts/node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/expo-module-scripts/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/expo-module-scripts/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/expo-module-scripts/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/react-test-renderer": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", + "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "license": "MIT", + "dependencies": { + "react-is": "^18.2.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/expo-module-scripts/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/expo-module-scripts/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-module-scripts/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expo-module-scripts/node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-module-scripts/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/expo-module-scripts/node_modules/xmlbuilder": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/expo-module-scripts/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/expo-module-scripts/node_modules/zod-validation-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", + "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.18.0" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", + "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-autolinking/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/expo-modules-core": { + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.8.tgz", + "integrity": "sha512-WWcbsDmxqz7YQjr0dDRCpiwrWYoz/T4mxUh7ZbUzj8SzsUGrvmvczPj2kAS7hHviimRyfZcTenAh22Wuw/abBA==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-router": { + "version": "55.0.0-preview.7", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-55.0.0-preview.7.tgz", + "integrity": "sha512-nrigtPHg5/5ZIeY0Qjo6/wM7N27bTbq22FuNrTgGsNOt5V8sPkvs8lsMl6OsnvEZCKJ2xFYPkL3UGSEvGVxT9A==", + "license": "MIT", + "dependencies": { + "@expo/metro-runtime": "^55.0.5", + "@expo/schema-utils": "^55.0.2", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-tabs": "^1.1.12", + "@react-navigation/bottom-tabs": "7.10.1", + "@react-navigation/native": "7.1.28", + "@react-navigation/native-stack": "7.10.1", + "client-only": "^0.0.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "expo-glass-effect": "^55.0.5", + "expo-image": "^55.0.3", + "expo-server": "^55.0.3", + "expo-symbols": "^55.0.3", + "fast-deep-equal": "^3.1.3", + "invariant": "^2.2.4", + "nanoid": "^3.3.8", + "query-string": "^7.1.3", + "react-fast-compare": "^3.2.2", + "react-native-is-edge-to-edge": "^1.1.6", + "semver": "~7.6.3", + "server-only": "^0.0.1", + "sf-symbols-typescript": "^2.1.0", + "shallowequal": "^1.1.0", + "use-latest-callback": "^0.2.1", + "vaul": "^1.1.2" + }, + "peerDependencies": { + "@expo/log-box": "55.0.6", + "@expo/metro-runtime": "^55.0.5", + "@react-navigation/drawer": "^7.7.2", + "@testing-library/react-native": ">= 12.0.0", + "expo": "*", + "expo-constants": "^55.0.4", + "expo-linking": "^55.0.4", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-gesture-handler": "*", + "react-native-reanimated": "*", + "react-native-safe-area-context": ">= 5.4.0", + "react-native-screens": "*", + "react-native-web": "*", + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + }, + "peerDependenciesMeta": { + "@react-navigation/drawer": { + "optional": true + }, + "@testing-library/react-native": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-gesture-handler": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/expo-router/node_modules/@react-navigation/bottom-tabs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", + "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" + }, + "peerDependencies": { + "@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" + } + }, + "node_modules/expo-router/node_modules/@react-navigation/native-stack": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.10.1.tgz", + "integrity": "sha512-8jt7olKysn07HuKKSjT/ahZZTV+WaZa96o9RI7gAwh7ATlUDY02rIRttwvCyjovhSjD9KCiuJ+Hd4kwLidHwJw==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" + }, + "peerDependencies": { + "@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" + } + }, + "node_modules/expo-router/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-server": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", + "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", + "license": "MIT", + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/expo-sharing": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-55.0.6.tgz", + "integrity": "sha512-4X88AnVZTWUjCEYNvHFtd2UMEX43G2zFJBxVANI8RzAjDny4QrzTgdCEFNg0ufZyGMxZL3V5gzUkXVP5y7IEYg==", + "license": "MIT", + "dependencies": { + "@expo/config-plugins": "^55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/plist": "^0.5.2" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-splash-screen": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-55.0.5.tgz", + "integrity": "sha512-Q8PSVonkFEMUykDMBw9kdwNOtc9cMD7Vlz+MU4PYBTHrVQB5EDONnecmDwFDPYF8wc57ef73wkYxuVmrQO533A==", + "license": "MIT", + "dependencies": { + "@expo/prebuild-config": "^55.0.4" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-sqlite": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-55.0.5.tgz", + "integrity": "sha512-tYaktd5dQc3fEsmRSSvPBW80o6sq3mzLyOpQ9smMFWSGKvcSJsfvpbE6c8axgdhRMb3OMF4UAhASui+kL9GONQ==", + "license": "MIT", + "dependencies": { + "await-lock": "^2.2.2" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-status-bar": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-55.0.2.tgz", + "integrity": "sha512-iV/Az9SqwY2j5e/tZ7Fz7vwolfXp0xFTScET4lnS615oLQfdhyI2HOTg4CL4q7UVlSDW3HN4rCkDK2oASNVO7g==", + "license": "MIT", + "dependencies": { + "react-native-is-edge-to-edge": "^1.2.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-structured-headers": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-55.0.0.tgz", + "integrity": "sha512-udaNvuWb45/Sryq9FLC/blwgOChhznuqlTrUzVjC0T83pMdcmscKJX23lnNDW6hCec8p81Y3z1DIFwIyk0g/PQ==", + "license": "MIT" + }, + "node_modules/expo-symbols": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-55.0.3.tgz", + "integrity": "sha512-r3AnrAAPw/zqha6dBdkJV7ueELy/yyeEKU38qzFFz37w1mhcXobuXahnfPSnY54lKrTbqrSiFMj/aGh25ElnoQ==", + "license": "MIT", + "dependencies": { + "@expo-google-fonts/material-symbols": "^0.4.1", + "sf-symbols-typescript": "^2.0.0" + }, + "peerDependencies": { + "expo": "*", + "expo-font": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-system-ui": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-55.0.5.tgz", + "integrity": "sha512-tcE0SJCfKZgESWUNBleqNIdgFZj6Y41WvgOpwMDhke9Fezwsput1MWz2L2QyHoeo1bUE5KuNuI5+nCWdecSnAQ==", + "license": "MIT", + "dependencies": { + "@react-native/normalize-colors": "0.83.1", + "debug": "^4.3.2" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/expo-updates": { + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-55.0.7.tgz", + "integrity": "sha512-AkpyXJ2nRfKSB1MF3qkHYQeuG7Or9FMWcQAbrkIzETGeA3jpfPo0APvuq5PJjZf1VDX2AN3zznmYjrQ/MSODTA==", + "license": "MIT", + "dependencies": { + "@expo/code-signing-certificates": "^0.0.6", + "@expo/plist": "^0.5.2", + "@expo/spawn-async": "^1.7.2", + "arg": "4.1.0", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "expo-eas-client": "~55.0.2", + "expo-manifests": "~55.0.5", + "expo-structured-headers": "~55.0.0", + "expo-updates-interface": "~55.1.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-updates": "bin/cli.js" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-updates-interface": { + "version": "55.1.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-55.1.1.tgz", + "integrity": "sha512-++rlh9dNRUgm+uqN+x4vB/8ELidt0gc3kbwec55YzRizdD845kn5ufjTcGpkGs9SbAYHsP0eh8axlKHpY/v7Kg==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-updates/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "license": "MIT" + }, + "node_modules/expo-updates/node_modules/glob": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", + "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-updates/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", + "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "10.0.1" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/express/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/fbjs/node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/fbjs/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/fbjs/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/fbjs/node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fbjs/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/fbjs/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/fd-package-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz", + "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "walk-up-path": "^4.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fetch-nodeshim": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", + "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", + "license": "MIT" + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/flow-parser": { + "version": "0.299.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.299.0.tgz", + "integrity": "sha512-phGMRoNt6SNglPHGRbCyWm9/pxfe6t/t4++EIYPaBGWT6e0lphLBgUMrvpL62NbRo9R549o3oqrbKHq82kANCw==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "license": "BSD-2-Clause" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formatly": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz", + "integrity": "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fd-package-json": "^2.0.0" + }, + "bin": { + "formatly": "bin/index.mjs" + }, + "engines": { + "node": ">=18.3.0" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/framer-motion": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", + "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", + "license": "MIT", + "dependencies": { + "@motionone/dom": "10.12.0", + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "popmotion": "11.0.3", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": ">=16.8 || ^17.0.0 || ^18.0.0", + "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/framesync": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", + "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "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", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-compiler": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", + "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "license": "MIT" + }, + "node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.32.0" + } + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "license": "MIT" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/hono": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.9.tgz", + "integrity": "sha512-Eaw2YTGM6WOxA6CXbckaEvslr2Ne4NFsKrvc0v97JD5awbmeBLO5w9Ho9L9kmKonrwF9RJlW6BxT1PVv/agBHQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "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.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/inline-style-prefixer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", + "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", + "license": "MIT", + "dependencies": { + "css-in-js-utils": "^3.1.0" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip-address": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.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.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-cli/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "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.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "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 + } + } + }, + "node_modules/jest-config/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-diff/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-diff/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-expo": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", + "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@expo/config": "~55.0.4", + "@expo/json-file": "^10.0.12", + "@jest/create-cache-key-function": "^29.2.1", + "@jest/globals": "^29.2.1", + "babel-jest": "^29.2.1", + "jest-environment-jsdom": "^29.2.1", + "jest-snapshot": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-test-renderer": "19.2.0", + "server-only": "^0.0.1", + "stacktrace-js": "^2.0.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + }, + "peerDependenciesMeta": { + "react-server-dom-webpack": { + "optional": true + } + } + }, + "node_modules/jest-expo/node_modules/react-test-renderer": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", + "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-is": "^19.2.0", + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "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": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "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": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "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.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot-prettier": { + "name": "prettier", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-select-projects": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-watch-select-projects/-/jest-watch-select-projects-2.0.0.tgz", + "integrity": "sha512-j00nW4dXc2NiCW6znXgFLF9g8PJ0zP25cpQ1xRro/HU2GBfZQFZD0SoXnAlaoKkIY4MlfTMkKGbNXFpvCdjl1w==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "chalk": "^3.0.0", + "prompts": "^2.2.1" + } + }, + "node_modules/jest-watch-select-projects/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz", + "integrity": "sha512-jYpYmUnTzysmVnwq49TAxlmtOAwp8QIqvZyoofQFn8fiWhEDZj33ZXzg3JA4nGnzWFm1hbWf3ADpteUokvXgFA==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^6.0.0", + "chalk": "^4.0.0", + "jest-regex-util": "^29.0.0", + "jest-watcher": "^29.0.0", + "slash": "^5.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0 || ^29.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-escapes": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/char-regex": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", + "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "license": "MIT", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", + "license": "MIT" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/jose": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", + "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-base64": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", + "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/js-logger": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/js-logger/-/js-logger-1.6.1.tgz", + "integrity": "sha512-yTgMCPXVjhmg28CuUH8CKjU+cIKL/G+zTu4Fn4lQxs8mRFH/03QTNvEFngcxfg/gRDiQAOoyCKmMTOm9ayOzXA==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "license": "0BSD" + }, + "node_modules/jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/json-stable-stringify": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz", + "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "license": "Public Domain", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/knip": { + "version": "5.83.1", + "resolved": "https://registry.npmjs.org/knip/-/knip-5.83.1.tgz", + "integrity": "sha512-av3ZG/Nui6S/BNL8Tmj12yGxYfTnwWnslouW97m40him7o8MwiMjZBY9TPvlEWUci45aVId0/HbgTwSKIDGpMw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/webpro" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/knip" + } + ], + "license": "ISC", + "dependencies": { + "@nodelib/fs.walk": "^1.2.3", + "fast-glob": "^3.3.3", + "formatly": "^0.3.0", + "jiti": "^2.6.0", + "js-yaml": "^4.1.1", + "minimist": "^1.2.8", + "oxc-resolver": "^11.15.0", + "picocolors": "^1.1.1", + "picomatch": "^4.0.1", + "smol-toml": "^1.5.2", + "strip-json-comments": "5.0.3", + "zod": "^4.1.11" + }, + "bin": { + "knip": "bin/knip.js", + "knip-bun": "bin/knip-bun.js" + }, + "engines": { + "node": ">=18.18.0" + }, + "peerDependencies": { + "@types/node": ">=18", + "typescript": ">=5.0.4 <7" + } + }, + "node_modules/knip/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/knip/node_modules/strip-json-comments": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", + "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lan-network": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.1.7.tgz", + "integrity": "sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==", + "license": "MIT", + "bin": { + "lan-network": "dist/lan-network-cli.js" + } + }, + "node_modules/launch-editor": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libsql": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.5.22.tgz", + "integrity": "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==", + "cpu": [ + "x64", + "arm64", + "wasm32", + "arm" + ], + "dev": true, + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "@neon-rs/load": "^0.0.4", + "detect-libc": "2.0.2" + }, + "optionalDependencies": { + "@libsql/darwin-arm64": "0.5.22", + "@libsql/darwin-x64": "0.5.22", + "@libsql/linux-arm-gnueabihf": "0.5.22", + "@libsql/linux-arm-musleabihf": "0.5.22", + "@libsql/linux-arm64-gnu": "0.5.22", + "@libsql/linux-arm64-musl": "0.5.22", + "@libsql/linux-x64-gnu": "0.5.22", + "@libsql/linux-x64-musl": "0.5.22", + "@libsql/win32-x64-msvc": "0.5.22" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "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" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash._baseflatten": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz", + "integrity": "sha512-fESngZd+X4k+GbTxdMutf8ohQa0s3sJEHIcwtu4/LsIQ2JTDzdRxDCMQjW+ezzwRitLmHnacVVmosCbxifefbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash._basefor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha512-6bc3b8grkpMgDcVJv9JYZAk/mHgcqMljzm7OsbmcE2FGUMmmLQTPHlh/dFqR8LA0GQ7z4K67JSotVKu5058v1A==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._pickbyarray": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash._pickbyarray/-/lodash._pickbyarray-3.0.2.tgz", + "integrity": "sha512-tHzBIfgugzI7HV0y8MJS1z/ryWDh8NyD6AV+so9vlplRnhD4qBuwoyDt7g241ad3F43YDFghCN+R3iaFd4Azvw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._pickbycallback": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._pickbycallback/-/lodash._pickbycallback-3.0.0.tgz", + "integrity": "sha512-DVP27YmN0lB+j/Tgd/+gtxfmW/XihgWpQpHptBuwyp2fD9zEBRwwcnw6Qej16LUV8LRFuTqyoc0i6ON97d/C5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._basefor": "^3.0.0", + "lodash.keysin": "^3.0.0" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.keysin": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", + "integrity": "sha512-YDB/5xkL3fBKFMDaC+cfGV00pbiJ6XoJIfRmBhv7aR6wWtbCW6IzkiWnTfkiHTF6ALD7ff83dAtB3OEaSoyQPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" + }, + "node_modules/lodash.pick": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-3.1.0.tgz", + "integrity": "sha512-Y04wnFghB7l1dkYINfjdMLpeAGM1IYEjlsGFxvjeewCbVQUlD9jw3M20ThuNrsf6yGmuPLwj60PKP+D6gZ+o2w==", + "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._baseflatten": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash._pickbyarray": "^3.0.0", + "lodash._pickbycallback": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "node_modules/lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logkitty/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react-native": { + "version": "0.563.0", + "resolved": "https://registry.npmjs.org/lucide-react-native/-/lucide-react-native-0.563.0.tgz", + "integrity": "sha512-q4tYoAMorTqv+UXRYc0MyiEAOF+4Bu73zxD63EDrnGCFL+xuj+imBm3E2rIKRmME0heVHlK+98fsi8wbL92LNQ==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-native": "*", + "react-native-svg": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marky": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", + "license": "Apache-2.0" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", + "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "@babel/types": "^7.25.2", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.32.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "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-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", + "mime-types": "^2.1.27", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", + "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.32.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-cache": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", + "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", + "license": "MIT", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-cache-key": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", + "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-cache/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/metro-cache/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-core": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", + "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-file-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", + "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-minify-terser": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", + "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-react-native-babel-preset": { + "version": "0.77.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.77.0.tgz", + "integrity": "sha512-HPPD+bTxADtoE4y/4t1txgTQ1LVR6imOBy7RMHUsqMVTbekoi8Ph5YI9vKX2VMPtVWeFt0w9YnCSLPa76GcXsA==", + "deprecated": "Use @react-native/babel-preset instead", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.4.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-react-native-babel-preset/node_modules/react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-react-native-babel-transformer": { + "version": "0.77.0", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.77.0.tgz", + "integrity": "sha512-uCV1Kt4ebY9/hT7ayDGMDgIsrbyxiBHNP+q0LGxscOx3D/QODv1z+WhfC4Hy0/1wDCGV3l0EQrfLqM+7qpjsWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.14.0", + "metro-react-native-babel-preset": "0.77.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-react-native-babel-transformer/node_modules/hermes-estree": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.14.0.tgz", + "integrity": "sha512-L6M67+0/eSEbt6Ha2XOBFXL++7MR34EOJMgm+j7YCaI4L/jZqrVAg6zYQKzbs1ZCFDLvEQpOgLlapTX4gpFriA==", + "dev": true, + "license": "MIT" + }, + "node_modules/metro-react-native-babel-transformer/node_modules/hermes-parser": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.14.0.tgz", + "integrity": "sha512-pt+8uRiJhVlErY3fiXB3gKhZ72RxM6E1xRMpvfZ5n6Z5TQKQQXKorgRCRzoe02mmvLKBJFP5nPDGv75MWAgCTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.14.0" + } + }, + "node_modules/metro-resolver": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", + "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-source-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", + "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.83.3", + "nullthrows": "^1.1.1", + "ob1": "0.83.3", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", + "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.83.3", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", + "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", + "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-source-map": "0.83.3", + "metro-transform-plugins": "0.83.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/morgan": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", + "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.1.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/moti": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/moti/-/moti-0.30.0.tgz", + "integrity": "sha512-YN78mcefo8kvJaL+TZNyusq6YA2aMFvBPl8WiLPy4eb4wqgOFggJOjP9bUr2YO8PrAt0uusmRG8K4RPL4OhCsA==", + "license": "MIT", + "dependencies": { + "framer-motion": "^6.5.1" + }, + "peerDependencies": { + "react-native-reanimated": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multitars": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/multitars/-/multitars-0.2.4.tgz", + "integrity": "sha512-XgLbg1HHchFauMCQPRwMj6MSyDd5koPlTA1hM3rUFkeXzGpjU/I9fP3to7yrObE9jcN8ChIOQGrM0tV0kUZaKg==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/nativewind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/nativewind/-/nativewind-4.2.1.tgz", + "integrity": "sha512-10uUB2Dlli3MH3NDL5nMHqJHz1A3e/E6mzjTj6cl7hHECClJ7HpE6v+xZL+GXdbwQSnWE+UWMIMsNz7yOQkAJQ==", + "license": "MIT", + "dependencies": { + "comment-json": "^4.2.5", + "debug": "^4.3.7", + "react-native-css-interop": "0.2.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "tailwindcss": ">3.3.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, + "node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", + "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "license": "MIT" + }, + "node_modules/ob1": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", + "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/open/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/oxc-resolver": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.17.1.tgz", + "integrity": "sha512-pyRXK9kH81zKlirHufkFhOFBZRks8iAMLwPH8gU7lvKFiuzUH9L8MxDEllazwOb8fjXMcWjY1PMDfMJ2/yh5cw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-resolver/binding-android-arm-eabi": "11.17.1", + "@oxc-resolver/binding-android-arm64": "11.17.1", + "@oxc-resolver/binding-darwin-arm64": "11.17.1", + "@oxc-resolver/binding-darwin-x64": "11.17.1", + "@oxc-resolver/binding-freebsd-x64": "11.17.1", + "@oxc-resolver/binding-linux-arm-gnueabihf": "11.17.1", + "@oxc-resolver/binding-linux-arm-musleabihf": "11.17.1", + "@oxc-resolver/binding-linux-arm64-gnu": "11.17.1", + "@oxc-resolver/binding-linux-arm64-musl": "11.17.1", + "@oxc-resolver/binding-linux-ppc64-gnu": "11.17.1", + "@oxc-resolver/binding-linux-riscv64-gnu": "11.17.1", + "@oxc-resolver/binding-linux-riscv64-musl": "11.17.1", + "@oxc-resolver/binding-linux-s390x-gnu": "11.17.1", + "@oxc-resolver/binding-linux-x64-gnu": "11.17.1", + "@oxc-resolver/binding-linux-x64-musl": "11.17.1", + "@oxc-resolver/binding-openharmony-arm64": "11.17.1", + "@oxc-resolver/binding-wasm32-wasi": "11.17.1", + "@oxc-resolver/binding-win32-arm64-msvc": "11.17.1", + "@oxc-resolver/binding-win32-ia32-msvc": "11.17.1", + "@oxc-resolver/binding-win32-x64-msvc": "11.17.1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "license": "MIT", + "dependencies": { + "pngjs": "^3.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/patch-package": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz", + "integrity": "sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^10.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.2.4", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/patch-package/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/patch-package/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-extra": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/path-extra/-/path-extra-1.0.3.tgz", + "integrity": "sha512-vYm3+GCkjUlT1rDvZnDVhNLXIRvwFPaN8ebHAFcuMJM/H0RBOPD7JrcldiNLd9AS3dhAyUHLa4Hny5wp1A+Ffw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/popmotion": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz", + "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==", + "license": "MIT", + "dependencies": { + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/posthog-js": { + "version": "1.345.2", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.345.2.tgz", + "integrity": "sha512-5J0RfI6U11Sy76cL7QR5f+a/IqbQvcsF6XSItT6i+VPp0oX+XQE3eRnqkx1Ne8/PLegpn1xP3h6KSBMshwq0SQ==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.208.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", + "@opentelemetry/resources": "^2.2.0", + "@opentelemetry/sdk-logs": "^0.208.0", + "@posthog/core": "1.21.0", + "@posthog/types": "1.345.2", + "core-js": "^3.38.1", + "dompurify": "^3.3.1", + "fflate": "^0.4.8", + "preact": "^10.28.2", + "query-selector-shadow-dom": "^1.0.1", + "web-vitals": "^5.1.0" + } + }, + "node_modules/posthog-react-native": { + "version": "4.31.1", + "resolved": "https://registry.npmjs.org/posthog-react-native/-/posthog-react-native-4.31.1.tgz", + "integrity": "sha512-67HHwzPuoe2Vc9PMdWIXOp4HIPF8C565eTI+AVudezm4fP/keiV0j3/4immcOpqomN3KhjTkSx4qVYGhS70PHg==", + "license": "MIT", + "dependencies": { + "@posthog/core": "1.21.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": ">=1.0.0", + "@react-navigation/native": ">= 5.0.0", + "expo-application": ">= 4.0.0", + "expo-device": ">= 4.0.0", + "expo-file-system": ">= 13.0.0", + "expo-localization": ">= 11.0.0", + "posthog-react-native-session-replay": ">= 1.2.0", + "react-native-device-info": ">= 10.0.0", + "react-native-localize": ">= 3.0.0", + "react-native-navigation": ">= 6.0.0", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-svg": ">= 15.0.0" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + }, + "@react-navigation/native": { + "optional": true + }, + "expo-application": { + "optional": true + }, + "expo-device": { + "optional": true + }, + "expo-file-system": { + "optional": true + }, + "expo-localization": { + "optional": true + }, + "posthog-react-native-session-replay": { + "optional": true + }, + "react-native-device-info": { + "optional": true + }, + "react-native-localize": { + "optional": true + }, + "react-native-navigation": { + "optional": true + }, + "react-native-safe-area-context": { + "optional": true + } + } + }, + "node_modules/posthog-react-native-session-replay": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/posthog-react-native-session-replay/-/posthog-react-native-session-replay-1.2.4.tgz", + "integrity": "sha512-kPPDTJAHhEJBp5/aCNlO3bjBhcQlXmTOhrDfsZa1FuW44csldVK33DYA2Xr1eQDh/LW0xH3P3IupE+vpc9MRXQ==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/preact": { + "version": "10.28.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.3.tgz", + "integrity": "sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.7.2.tgz", + "integrity": "sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.19" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-hermes": "*", + "@prettier/plugin-oxc": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-hermes": { + "optional": true + }, + "@prettier/plugin-oxc": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/promise-limit": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", + "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==", + "dev": true, + "license": "ISC" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/protobufjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-selector-shadow-dom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", + "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", + "license": "MIT" + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-compiler-runtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-compiler-runtime/-/react-compiler-runtime-1.0.0.tgz", + "integrity": "sha512-rRfjYv66HlG8896yPUDONgKzG5BxZD1nV9U6rkm+7VCuvQc903C4MjcoZR4zPw53IKSOX9wMQVpA1IAbRtzQ7w==", + "license": "MIT", + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental" + } + }, + "node_modules/react-devtools-core": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", + "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", + "license": "MIT", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/react-dom": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/react-error-boundary": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", + "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-freeze": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", + "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-hook-form": { + "version": "7.71.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.71.1.tgz", + "integrity": "sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-is": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "license": "MIT" + }, + "node_modules/react-native": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz", + "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==", + "license": "MIT", + "dependencies": { + "@jest/create-cache-key-function": "^29.7.0", + "@react-native/assets-registry": "0.83.1", + "@react-native/codegen": "0.83.1", + "@react-native/community-cli-plugin": "0.83.1", + "@react-native/gradle-plugin": "0.83.1", + "@react-native/js-polyfills": "0.83.1", + "@react-native/normalize-colors": "0.83.1", + "@react-native/virtualized-lists": "0.83.1", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "babel-jest": "^29.7.0", + "babel-plugin-syntax-hermes-parser": "0.32.0", + "base64-js": "^1.5.1", + "commander": "^12.0.0", + "flow-enums-runtime": "^0.0.6", + "glob": "^7.1.1", + "hermes-compiler": "0.14.0", + "invariant": "^2.2.4", + "jest-environment-node": "^29.7.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.83.3", + "metro-source-map": "^0.83.3", + "nullthrows": "^1.1.1", + "pretty-format": "^29.7.0", + "promise": "^8.3.0", + "react-devtools-core": "^6.1.5", + "react-refresh": "^0.14.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.27.0", + "semver": "^7.1.3", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@types/react": "^19.1.1", + "react": "^19.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-audio-concat": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-native-audio-concat/-/react-native-audio-concat-0.9.0.tgz", + "integrity": "sha512-R/n1IgFS/q2i+2Gs87XUbLzR94hug+lo8ydmESfCWFuc/SLYsHRD7kjhj83SjOsz7t6m/ll7VN4x6Vf7ig0sqg==", + "license": "MIT", + "workspaces": [ + "example" + ], + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-css-interop": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/react-native-css-interop/-/react-native-css-interop-0.2.1.tgz", + "integrity": "sha512-B88f5rIymJXmy1sNC/MhTkb3xxBej1KkuAt7TiT9iM7oXz3RM8Bn+7GUrfR02TvSgKm4cg2XiSuLEKYfKwNsjA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.3.7", + "lightningcss": "~1.27.0", + "semver": "^7.6.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": ">=18", + "react-native": "*", + "react-native-reanimated": ">=3.6.2", + "tailwindcss": "~3" + }, + "peerDependenciesMeta": { + "react-native-safe-area-context": { + "optional": true + }, + "react-native-svg": { + "optional": true + } + } + }, + "node_modules/react-native-css-interop/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.27.0.tgz", + "integrity": "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.27.0", + "lightningcss-darwin-x64": "1.27.0", + "lightningcss-freebsd-x64": "1.27.0", + "lightningcss-linux-arm-gnueabihf": "1.27.0", + "lightningcss-linux-arm64-gnu": "1.27.0", + "lightningcss-linux-arm64-musl": "1.27.0", + "lightningcss-linux-x64-gnu": "1.27.0", + "lightningcss-linux-x64-musl": "1.27.0", + "lightningcss-win32-arm64-msvc": "1.27.0", + "lightningcss-win32-x64-msvc": "1.27.0" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-darwin-arm64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", + "integrity": "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-darwin-x64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", + "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-freebsd-x64": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", + "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", + "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", + "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", + "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", + "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-linux-x64-musl": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", + "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", + "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", + "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/react-native-css-interop/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-element-dropdown": { + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/react-native-element-dropdown/-/react-native-element-dropdown-2.12.4.tgz", + "integrity": "sha512-abZc5SVji9FIt7fjojRYrbuvp03CoeZJrgvezQoDoSOrpiTqkX69ix5m+j06W2AVncA0VWvbT+vCMam8SoVadw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-gesture-handler": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", + "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", + "license": "MIT", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-is-edge-to-edge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz", + "integrity": "sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-keyboard-controller": { + "version": "1.20.7", + "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.20.7.tgz", + "integrity": "sha512-G8S5jz1FufPrcL1vPtReATx+jJhT/j+sTqxMIb30b1z7cYEfMlkIzOCyaHgf6IMB2KA9uBmnA5M6ve2A9Ou4kw==", + "license": "MIT", + "dependencies": { + "react-native-is-edge-to-edge": "^1.2.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-reanimated": ">=3.0.0" + } + }, + "node_modules/react-native-onboarding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-native-onboarding/-/react-native-onboarding-1.0.6.tgz", + "integrity": "sha512-vI/UlspW2N2Y+Q7jEAPskRXqgsJcdn48SDXU8sI91Tnc5xL/EkOQukrIxthSVIt10CRel++LgJws+B6bGk7Z2A==", + "license": "MIT", + "dependencies": { + "assign-deep": "^0.4.5", + "react-native-swiper": "git+https://github.com/FuYaoDe/react-native-swiper.git" + } + }, + "node_modules/react-native-pager-view": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-8.0.0.tgz", + "integrity": "sha512-oAwlWT1lhTkIs9HhODnjNNl/owxzn9DP1MbP+az6OTUdgbmzA16Up83sBH8NRKwrH8rNm7iuWnX1qMqiiWOLhg==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-reanimated": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.2.1.tgz", + "integrity": "sha512-/NcHnZMyOvsD/wYXug/YqSKw90P9edN0kEPL5lP4PFf1aQ4F1V7MKe/E0tvfkXKIajy3Qocp5EiEnlcrK/+BZg==", + "license": "MIT", + "dependencies": { + "react-native-is-edge-to-edge": "1.2.1", + "semver": "7.7.3" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-worklets": ">=0.7.0" + } + }, + "node_modules/react-native-reanimated/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-reorderable-list": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-native-reorderable-list/-/react-native-reorderable-list-0.18.0.tgz", + "integrity": "sha512-zjN7UvKGxSOnIXrB+9W4WE7e2D/fP61U2EaAk5JUSIjj6pw8W9cYRQ6E6TQV6BaztJ4bDTPRV2LUiOS3WAj6jA==", + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">=2.12.0", + "react-native-reanimated": ">=3.12.0" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", + "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", + "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", + "license": "MIT", + "dependencies": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-svg": { + "version": "15.15.3", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", + "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", + "license": "MIT", + "dependencies": { + "css-select": "^5.1.0", + "css-tree": "^1.1.3", + "warn-once": "0.1.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-svg-transformer": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/react-native-svg-transformer/-/react-native-svg-transformer-1.5.3.tgz", + "integrity": "sha512-M4uFg5pUt35OMgjD4rWWbwd6PmxV96W7r/gQTTa+iZA5B+jO6aURhzAZGLHSrg1Kb91cKG0Rildy9q1WJvYstg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/core": "^8.1.0", + "@svgr/plugin-jsx": "^8.1.0", + "@svgr/plugin-svgo": "^8.1.0", + "path-dirname": "^1.0.2" + }, + "peerDependencies": { + "react-native": ">=0.59.0", + "react-native-svg": ">=12.0.0" + } + }, + "node_modules/react-native-swiper": { + "version": "1.4.4", + "resolved": "git+ssh://git@github.com/FuYaoDe/react-native-swiper.git#a6417ff41a8b2d490bdcc4541015ab35736d4595", + "license": "ISC", + "dependencies": { + "react-timer-mixin": "^0.13.3" + } + }, + "node_modules/react-native-url-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-3.0.0.tgz", + "integrity": "sha512-aA5CiuUCUb/lbrliVCJ6lZ17/RpNJzvTO/C7gC/YmDQhTUoRD5q5HlJfwLWcxz4VgAhHwXKzhxH+wUN24tAdqg==", + "license": "MIT", + "dependencies": { + "whatwg-url-without-unicode": "8.0.0-3" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/react-native-uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/react-native-uuid/-/react-native-uuid-2.0.3.tgz", + "integrity": "sha512-f/YfIS2f5UB+gut7t/9BKGSCYbRA9/74A5R1MDp+FLYsuS+OSWoiM/D8Jko6OJB6Jcu3v6ONuddvZKHdIGpeiw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.21.2.tgz", + "integrity": "sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-colors": "^0.74.1", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^7.0.1", + "memoize-one": "^6.0.0", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.3" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-native-web/node_modules/@react-native/normalize-colors": { + "version": "0.74.89", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz", + "integrity": "sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==", + "license": "MIT" + }, + "node_modules/react-native-web/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/react-native-worklets": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.3.tgz", + "integrity": "sha512-m/CIUCHvLQulboBn0BtgpsesXjOTeubU7t+V0lCPpBj0t2ExigwqDHoKj3ck7OeErnjgkD27wdAtQCubYATe3g==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-arrow-functions": "7.27.1", + "@babel/plugin-transform-class-properties": "7.27.1", + "@babel/plugin-transform-classes": "7.28.4", + "@babel/plugin-transform-nullish-coalescing-operator": "7.27.1", + "@babel/plugin-transform-optional-chaining": "7.27.1", + "@babel/plugin-transform-shorthand-properties": "7.27.1", + "@babel/plugin-transform-template-literals": "7.27.1", + "@babel/plugin-transform-unicode-regex": "7.27.1", + "@babel/preset-typescript": "7.27.1", + "convert-source-map": "2.0.0", + "semver": "7.7.3" + }, + "peerDependencies": { + "@babel/core": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-classes": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/@babel/preset-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/react-native-worklets/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.32.0" + } + }, + "node_modules/react-native/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-shallow-renderer/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-test-renderer": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.0.0.tgz", + "integrity": "sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-is": "^19.0.0", + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/react-test-renderer/node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-timer-mixin": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz", + "integrity": "sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q==", + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cmd-shim": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-6.0.0.tgz", + "integrity": "sha512-1zM5HuOfagXCBWMN83fuFI/x+T/UhZ7k+KIzhrHXcQoeX5+7gmaDYjELQHmmzIodumBHeByBJT4QYS7ufAgs7A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "license": "MIT", + "dependencies": { + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, + "node_modules/require-resolve": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/require-resolve/-/require-resolve-0.0.2.tgz", + "integrity": "sha512-eafQVaxdQsWUB8HybwognkdcIdKdQdQBwTxH48FuE6WI0owZGKp63QYr1MRp73PoX0AcyB7MDapZThYUY8FD0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "x-path": "^0.0.2" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve-workspace-root": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", + "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", + "license": "MIT" + }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/rtl-detect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", + "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", + "license": "BSD-3-Clause" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "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.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", + "license": "MIT" + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sf-symbols-typescript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", + "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-clone/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/sharp": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.2.tgz", + "integrity": "sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.4", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.2", + "@img/sharp-darwin-x64": "0.34.2", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.2", + "@img/sharp-linux-arm64": "0.34.2", + "@img/sharp-linux-s390x": "0.34.2", + "@img/sharp-linux-x64": "0.34.2", + "@img/sharp-linuxmusl-arm64": "0.34.2", + "@img/sharp-linuxmusl-x64": "0.34.2", + "@img/sharp-wasm32": "0.34.2", + "@img/sharp-win32-arm64": "0.34.2", + "@img/sharp-win32-ia32": "0.34.2", + "@img/sharp-win32-x64": "0.34.2" + } + }, + "node_modules/sharp-cli": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/sharp-cli/-/sharp-cli-5.2.0.tgz", + "integrity": "sha512-0DQyABFTWkla4FYvjguCQloSgm2htOPfGFur88HXiGu8BPfhb77frWn+E87w8Oog0eSHF4/uMt5AFhpvfY/Zrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bubble-stream-error": "1.0.x", + "glob": "11.0.x", + "is-directory": "0.3.x", + "lodash.pick": "3.1.0", + "sharp": "0.34.2", + "yargs": "^17.6.2" + }, + "bin": { + "sharp": "bin/cli.js" + }, + "engines": { + "node": ">=18.17" + } + }, + "node_modules/sharp-cli/node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sharp-cli/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sharp/node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "license": "MIT", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/simple-plist/node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", + "dev": true, + "license": "MIT" + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/smol-toml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", + "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "license": "MIT" + }, + "node_modules/stack-generator": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", + "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/stacktrace-gps": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz", + "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==", + "license": "MIT", + "dependencies": { + "source-map": "0.5.6", + "stackframe": "^1.3.4" + } + }, + "node_modules/stacktrace-gps/node_modules/source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stacktrace-js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", + "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", + "license": "MIT", + "dependencies": { + "error-stack-parser": "^2.0.6", + "stack-generator": "^2.0.5", + "stacktrace-gps": "^3.0.4" + } + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stream-json": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "stream-chain": "^2.2.5" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strict-url-sanitise": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/strict-url-sanitise/-/strict-url-sanitise-0.0.1.tgz", + "integrity": "sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==", + "dev": true, + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", + "license": "MIT" + }, + "node_modules/style-value-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", + "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==", + "license": "MIT", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "^2.1.0" + } + }, + "node_modules/styleq": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", + "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/supabase": { + "version": "2.76.7", + "resolved": "https://registry.npmjs.org/supabase/-/supabase-2.76.7.tgz", + "integrity": "sha512-tUseXvr7uLkw665cHdY3mg8NTHL5GABViRk7OhJkkbpOzvAJW/ydxQWAwLTcvXaI4P+cjbAmUgIv+6m8lOUe1Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bin-links": "^6.0.0", + "https-proxy-agent": "^7.0.2", + "node-fetch": "^3.3.2", + "tar": "7.5.7" + }, + "bin": { + "supabase": "bin/supabase" + }, + "engines": { + "npm": ">=8" + } + }, + "node_modules/supabase/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/supabase/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/svgo/node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tailwind-merge": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz", + "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tailwindcss/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/tar": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", + "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "license": "MIT", + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/testflight-dev-deploy": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/testflight-dev-deploy/-/testflight-dev-deploy-0.0.8.tgz", + "integrity": "sha512-mgrtIYvrbtCwzpORP3XluQQ7U6QR13saZr8VHXqNm+VR7Ig/KFsV5bCM71roEr1HtiaZ8pFUOf8S6KWuyp/R4Q==", + "license": "ISC", + "dependencies": { + "expo-module-scripts": "^3.0.4" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/ts-jest": { + "version": "29.0.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", + "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", + "license": "MIT", + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/ts-jest/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.55.0.tgz", + "integrity": "sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.55.0", + "@typescript-eslint/parser": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/utils": "8.55.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz", + "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest-callback": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", + "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vaul": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", + "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "license": "MIT" + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walk-up-path": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", + "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==", + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web-vitals": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.1.0.tgz", + "integrity": "sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url-minimum": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/whatwg-url-minimum/-/whatwg-url-minimum-0.1.1.tgz", + "integrity": "sha512-u2FNVjFVFZhdjb502KzXy1gKn1mEisQRJssmSJT8CPhZdZa0AP6VCbWlXERKyGu0l09t0k50FiDiralpGhBxgA==", + "license": "MIT" + }, + "node_modules/whatwg-url-without-unicode": { + "version": "8.0.0-3", + "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz", + "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==", + "license": "MIT", + "dependencies": { + "buffer": "^5.4.3", + "punycode": "^2.1.1", + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/x-path": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/x-path/-/x-path-0.0.2.tgz", + "integrity": "sha512-zQ4WFI0XfJN1uEkkrB19Y4TuXOlHqKSxUJo0Yt+axPjRm8tCG6SJ6+Wo3/+Kjg4c2c8IvBXuJ0uYoshxNn4qMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-extra": "^1.0.2" + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", + "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "zod": "^3.25 || ^4" + } + }, + "node_modules/zod-validation-error": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.4.tgz", + "integrity": "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.24.4" + } + }, + "node_modules/zustand": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.11.tgz", + "integrity": "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } } diff --git a/package.json b/package.json index d4d5e6c9f..2c03a1c7a 100644 --- a/package.json +++ b/package.json @@ -219,7 +219,7 @@ "react-dom": "19.2.0", "@types/react": "~19.2.2", "jest-snapshot-prettier": "npm:prettier@^3.6.2", - "$expo-drizzle-studio-plugin": { + "expo-drizzle-studio-plugin": { "expo": "^55.0.0-preview.10" } }, From 370ae535144640b04e0de2db15d5386024300b96 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:54:23 -0600 Subject: [PATCH 035/143] add missing dependency --- package-lock.json | 7 +++++++ package.json | 1 + 2 files changed, 8 insertions(+) diff --git a/package-lock.json b/package-lock.json index 6525a14cb..335d83679 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@expo/vector-icons": "^15.0.3", "@gorhom/bottom-sheet": "^5.2.8", "@hookform/resolvers": "^5.0.1", + "@journeyapps/wa-sqlite": "^1.4.1", "@legendapp/list": "^2.0.12", "@op-engineering/op-sqlite": "^15.2.5", "@powersync/attachments": "^2.4.0", @@ -6480,6 +6481,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@journeyapps/wa-sqlite": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@journeyapps/wa-sqlite/-/wa-sqlite-1.4.1.tgz", + "integrity": "sha512-xAWys6opteBpWaKmHG1pZvBmQViEKFK/46YVEkYlWxa4F9VAG0gIjCpfIdcQvXdqZf7X3ByADGmNBcR/cJ1DqQ==", + "hasInstallScript": true + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", diff --git a/package.json b/package.json index 2c03a1c7a..5dc227684 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "@expo/vector-icons": "^15.0.3", "@gorhom/bottom-sheet": "^5.2.8", "@hookform/resolvers": "^5.0.1", + "@journeyapps/wa-sqlite": "^1.4.1", "@legendapp/list": "^2.0.12", "@op-engineering/op-sqlite": "^15.2.5", "@powersync/attachments": "^2.4.0", From 5691a06bb4270ed97360ba27dcd31537a6596b99 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 16:22:19 -0600 Subject: [PATCH 036/143] update packages again? --- package-lock.json | 23941 +++++++++++++++++++++++++------------------- package.json | 25 +- 2 files changed, 13459 insertions(+), 10507 deletions(-) diff --git a/package-lock.json b/package-lock.json index 335d83679..d78c74ec3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,7 +89,7 @@ "react": "19.2.0", "react-compiler-runtime": "^1.0.0", "react-dom": "19.2.0", - "react-hook-form": "^7.54.2", + "react-hook-form": "^7.71.1", "react-native": "0.83.1", "react-native-audio-concat": "^0.9.0", "react-native-element-dropdown": "2.12.4", @@ -106,12 +106,12 @@ "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", "react-native-worklets": "^0.7.2", - "tailwind-merge": "^3.3.0", + "tailwind-merge": "^3.4.0", "tailwindcss-animate": "^1.0.7", "testflight-dev-deploy": "^0.0.8", "vaul": "^1.1.2", - "zod": "^4.1.11", - "zustand": "^5.0.3" + "zod": "^4.3.6", + "zustand": "^5.0.11" }, "devDependencies": { "@babel/core": "^7.20.0", @@ -132,7 +132,7 @@ "babel-preset-expo": "~55.0.0", "cross-env": "^10.1.0", "default-gateway": "^7.2.2", - "drizzle-kit": "^0.31.4", + "drizzle-kit": "^0.31.9", "drizzle-orm": "^0.45.1", "eslint": "^9.38.0", "eslint-plugin-import": "^2.31.0", @@ -140,23 +140,22 @@ "eslint-plugin-react-compiler": "^19.1.0-rc.2", "eslint-plugin-react-hooks": "^7.0.1", "expo-atlas": "^0.4.0", - "jest": "^29.2.1", + "jest": "^30.2.0", "jest-expo": "~55.0.6", "jiti": "^2.6.1", - "knip": "^5.64.2", + "knip": "^5.83.1", "metro-react-native-babel-transformer": "^0.77.0", "patch-package": "^8.0.1", - "prettier": "^3.6.2", + "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", "react-native-svg-transformer": "^1.5.1", - "react-test-renderer": "19.0.0", + "react-test-renderer": "19.2.0", "sharp-cli": "^5.2.0", "supabase": "^2.48.3", - "tailwindcss": "^3.4.17", - "ts-node": "^10.9.2", - "tsx": "^4.19.2", + "tailwindcss": "^3.4.19", + "tsx": "^4.21.0", "typescript": "~5.9.2", - "typescript-eslint": "^8.20.0" + "typescript-eslint": "^8.55.0" } }, "node_modules/@alloc/quick-lru": { @@ -2555,30 +2554,6 @@ "react-native": "*" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@drizzle-team/brocli": { "version": "0.10.2", "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz", @@ -5759,43 +5734,43 @@ } }, "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", "dev": true, "license": "MIT", "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", + "@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": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "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.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "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" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -5806,193 +5781,504 @@ } } }, - "node_modules/@jest/core/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/@jest/core/node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@jest/core/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/core/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@jest/core/node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@jest/create-cache-key-function": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", - "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", - "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "node_modules/@jest/core/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "jest-mock": "^29.7.0" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/environment/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/@jest/core/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/environment/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", + "node_modules/@jest/core/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/environment/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@jest/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@jest/core/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/expect-utils": { + "node_modules/@jest/core/node_modules/jest-haste-map": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/@jest/expect/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@jest/core/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/expect/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/@jest/core/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", "dev": true, "license": "MIT", "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" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-validate": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-watcher": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.2.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/core/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect/node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect/node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect/node_modules/jest-diff": { @@ -6256,39 +6542,38 @@ } }, "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", "dev": true, "license": "MIT", "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.18", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", + "istanbul-lib-source-maps": "^5.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", + "string-length": "^4.0.2", "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -6299,894 +6584,840 @@ } } }, - "node_modules/@jest/reporters/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/@jest/reporters/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@jest/reporters/node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/reporters/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@jest/reporters/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" + "dependencies": { + "@sinclair/typebox": "^0.34.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@jest/reporters/node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@jest/reporters/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/transform/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" + "node_modules/@jest/reporters/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@jest/reporters/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/types": "30.2.0", "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/@journeyapps/wa-sqlite": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@journeyapps/wa-sqlite/-/wa-sqlite-1.4.1.tgz", - "integrity": "sha512-xAWys6opteBpWaKmHG1pZvBmQViEKFK/46YVEkYlWxa4F9VAG0gIjCpfIdcQvXdqZf7X3ByADGmNBcR/cJ1DqQ==", - "hasInstallScript": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "node_modules/@jest/reporters/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=6.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "license": "MIT", + "node_modules/@jest/reporters/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" + "node_modules/@jest/reporters/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/@jest/reporters/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@legendapp/list": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@legendapp/list/-/list-2.0.19.tgz", - "integrity": "sha512-zDWg8yg0smKxxk+M7gwAbZAnf5uczohPA+IjqLSkImz7+e9ytxeT0Mq35RBO9RTKODOXfV/aIgm1uqUHLBEdmg==", + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, "license": "MIT", "dependencies": { - "use-sync-external-store": "^1.5.0" + "ansi-regex": "^6.0.1" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@libsql/client": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", - "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "@libsql/core": "^0.17.0", - "@libsql/hrana-client": "^0.9.0", - "js-base64": "^3.7.5", - "libsql": "^0.5.22", - "promise-limit": "^2.7.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@libsql/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", - "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", + "node_modules/@jest/reporters/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { - "js-base64": "^3.7.5" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@libsql/darwin-arm64": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.5.22.tgz", - "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", - "cpu": [ - "arm64" - ], + "node_modules/@jest/reporters/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/@libsql/darwin-x64": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.5.22.tgz", - "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@libsql/hrana-client": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", - "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", "dev": true, "license": "MIT", "dependencies": { - "@libsql/isomorphic-ws": "^0.1.5", - "cross-fetch": "^4.0.0", - "js-base64": "^3.7.5", - "node-fetch": "^3.3.2" + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@libsql/isomorphic-ws": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", - "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", + "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "@types/ws": "^8.5.4", - "ws": "^8.13.0" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@libsql/linux-arm-gnueabihf": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm-gnueabihf/-/linux-arm-gnueabihf-0.5.22.tgz", - "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", - "cpu": [ - "arm" - ], + "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/@libsql/linux-arm-musleabihf": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm-musleabihf/-/linux-arm-musleabihf-0.5.22.tgz", - "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", - "cpu": [ - "arm" - ], + "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@libsql/linux-arm64-gnu": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.5.22.tgz", - "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-arm64-musl": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.5.22.tgz", - "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-x64-gnu": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.5.22.tgz", - "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-x64-musl": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.5.22.tgz", - "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/win32-x64-msvc": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.5.22.tgz", - "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", - "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, "license": "MIT", "dependencies": { - "@hono/node-server": "^1.19.9", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.2.1", - "express-rate-limit": "^8.2.1", - "hono": "^4.11.4", - "jose": "^6.1.3", - "json-schema-typed": "^8.0.2", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.1" + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@cfworker/json-schema": "^4.1.1", - "zod": "^3.25 || ^4.0" - }, - "peerDependenciesMeta": { - "@cfworker/json-schema": { - "optional": true - }, - "zod": { - "optional": false - } + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@motionone/animation": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", - "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "license": "MIT", "dependencies": { - "@motionone/easing": "^10.18.0", - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@motionone/dom": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", - "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", + "node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "dev": true, "license": "MIT", "dependencies": { - "@motionone/animation": "^10.12.0", - "@motionone/generators": "^10.12.0", - "@motionone/types": "^10.12.0", - "@motionone/utils": "^10.12.0", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@motionone/easing": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", - "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", + "node_modules/@jest/test-sequencer/node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, "license": "MIT", "dependencies": { - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@motionone/generators": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", - "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", + "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@motionone/types": { - "version": "10.17.1", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", - "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", - "license": "MIT" - }, - "node_modules/@motionone/utils": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", - "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", + "node_modules/@jest/test-sequencer/node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, "license": "MIT", "dependencies": { - "@motionone/types": "^10.17.1", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", + "node_modules/@jest/test-sequencer/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@neon-rs/load": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", - "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", + "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, "license": "MIT" }, - "node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "license": "MIT", - "optional": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": ">= 8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@jest/test-sequencer/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">= 8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "node_modules/@jest/test-sequencer/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=12.4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@op-engineering/op-sqlite": { - "version": "15.2.5", - "resolved": "https://registry.npmjs.org/@op-engineering/op-sqlite/-/op-sqlite-15.2.5.tgz", - "integrity": "sha512-Vmgwt0AzY7qoge3X6EONhsb5NlM2yoQUF0/lseUWBelfc9BUili7/DFsFsS73cvtYWlwPpqeTGOoce5mzHozBw==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "license": "MIT", - "workspaces": [ - "example", - "node" - ], - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", - "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", - "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api": "^1.3.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">=8.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@opentelemetry/core": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", - "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", - "license": "Apache-2.0", + "node_modules/@jest/transform/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", - "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/otlp-exporter-base": "0.208.0", - "@opentelemetry/otlp-transformer": "0.208.0", - "@opentelemetry/sdk-logs": "0.208.0" - }, + "node_modules/@jest/transform/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": "^18.19.0 || >=20.6.0" + "node": ">=8.6" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", - "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", - "license": "Apache-2.0", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/otlp-transformer": "0.208.0" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", - "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", - "license": "Apache-2.0", + "node_modules/@journeyapps/wa-sqlite": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@journeyapps/wa-sqlite/-/wa-sqlite-1.4.1.tgz", + "integrity": "sha512-xAWys6opteBpWaKmHG1pZvBmQViEKFK/46YVEkYlWxa4F9VAG0gIjCpfIdcQvXdqZf7X3ByADGmNBcR/cJ1DqQ==", + "hasInstallScript": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", - "@opentelemetry/sdk-logs": "0.208.0", - "@opentelemetry/sdk-metrics": "2.2.0", - "@opentelemetry/sdk-trace-base": "2.2.0", - "protobufjs": "^7.3.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "node": ">=6.0.0" } }, - "node_modules/@opentelemetry/resources": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", - "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", - "license": "Apache-2.0", + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.5.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", - "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", - "license": "Apache-2.0", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@opentelemetry/sdk-logs": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", - "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", - "license": "Apache-2.0", + "node_modules/@legendapp/list": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@legendapp/list/-/list-2.0.19.tgz", + "integrity": "sha512-zDWg8yg0smKxxk+M7gwAbZAnf5uczohPA+IjqLSkImz7+e9ytxeT0Mq35RBO9RTKODOXfV/aIgm1uqUHLBEdmg==", + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "use-sync-external-store": "^1.5.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" + "react": "*", + "react-native": "*" } }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", - "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.9.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", - "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", + "node_modules/@libsql/client": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", + "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", - "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" + "@libsql/core": "^0.17.0", + "@libsql/hrana-client": "^0.9.0", + "js-base64": "^3.7.5", + "libsql": "^0.5.22", + "promise-limit": "^2.7.0" } }, - "node_modules/@oxc-resolver/binding-android-arm-eabi": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.17.1.tgz", - "integrity": "sha512-+VuZyMYYaap5uDAU1xDU3Kul0FekLqpBS8kI5JozlWfYQKnc/HsZg2gHPkQrj0SC9lt74WMNCfOzZZJlYXSdEQ==", - "cpu": [ - "arm" - ], + "node_modules/@libsql/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", + "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "dependencies": { + "js-base64": "^3.7.5" + } }, - "node_modules/@oxc-resolver/binding-android-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.17.1.tgz", - "integrity": "sha512-YlDDTjvOEKhom/cRSVsXsMVeXVIAM9PJ/x2mfe08rfuS0iIEfJd8PngKbEIhG72WPxleUa+vkEZj9ncmC14z3Q==", + "node_modules/@libsql/darwin-arm64": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.5.22.tgz", + "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", "cpu": [ "arm64" ], @@ -7194,15 +7425,15 @@ "license": "MIT", "optional": true, "os": [ - "android" + "darwin" ] }, - "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.17.1.tgz", - "integrity": "sha512-HOYYLSY4JDk14YkXaz/ApgJYhgDP4KsG8EZpgpOxdszGW9HmIMMY/vXqVKYW74dSH+GQkIXYxBrEh3nv+XODVg==", + "node_modules/@libsql/darwin-x64": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.5.22.tgz", + "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", @@ -7211,38 +7442,34 @@ "darwin" ] }, - "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.17.1.tgz", - "integrity": "sha512-JHPJbsa5HvPq2/RIdtGlqfaG9zV2WmgvHrKTYmlW0L5esqtKCBuetFudXTBzkNcyD69kSZLzH92AzTr6vFHMFg==", - "cpu": [ - "x64" - ], + "node_modules/@libsql/hrana-client": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", + "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@libsql/isomorphic-ws": "^0.1.5", + "cross-fetch": "^4.0.0", + "js-base64": "^3.7.5", + "node-fetch": "^3.3.2" + } }, - "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.17.1.tgz", - "integrity": "sha512-UD1FRC8j8xZstFXYsXwQkNmmg7vUbee006IqxokwDUUA+xEgKZDpLhBEiVKM08Urb+bn7Q0gn6M1pyNR0ng5mg==", - "cpu": [ - "x64" - ], + "node_modules/@libsql/isomorphic-ws": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", + "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "@types/ws": "^8.5.4", + "ws": "^8.13.0" + } }, - "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.17.1.tgz", - "integrity": "sha512-wFWC1wyf2ROFWTxK5x0Enm++DSof3EBQ/ypyAesMDLiYxOOASDoMOZG1ylWUnlKaCt5W7eNOWOzABpdfFf/ssA==", + "node_modules/@libsql/linux-arm-gnueabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-gnueabihf/-/linux-arm-gnueabihf-0.5.22.tgz", + "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", "cpu": [ "arm" ], @@ -7253,10 +7480,10 @@ "linux" ] }, - "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.17.1.tgz", - "integrity": "sha512-k/hUif0GEBk/csSqCfTPXb8AAVs1NNWCa/skBghvNbTtORcWfOVqJ3mM+2pE189+enRm4UnryLREu5ysI0kXEQ==", + "node_modules/@libsql/linux-arm-musleabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-musleabihf/-/linux-arm-musleabihf-0.5.22.tgz", + "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", "cpu": [ "arm" ], @@ -7267,10 +7494,10 @@ "linux" ] }, - "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.17.1.tgz", - "integrity": "sha512-Cwm6A071ww60QouJ9LoHAwBgEoZzHQ0Qaqk2E7WLfBdiQN9mLXIDhnrpn04hlRElRPhLiu/dtg+o5PPLvaINXQ==", + "node_modules/@libsql/linux-arm64-gnu": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.5.22.tgz", + "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", "cpu": [ "arm64" ], @@ -7281,10 +7508,10 @@ "linux" ] }, - "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.17.1.tgz", - "integrity": "sha512-+hwlE2v3m0r3sk93SchJL1uyaKcPjf+NGO/TD2DZUDo+chXx7FfaEj0nUMewigSt7oZ2sQN9Z4NJOtUa75HE5Q==", + "node_modules/@libsql/linux-arm64-musl": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.5.22.tgz", + "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", "cpu": [ "arm64" ], @@ -7295,12 +7522,12 @@ "linux" ] }, - "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.17.1.tgz", - "integrity": "sha512-bO+rsaE5Ox8cFyeL5Ct5tzot1TnQpFa/Wmu5k+hqBYSH2dNVDGoi0NizBN5QV8kOIC6O5MZr81UG4yW/2FyDTA==", + "node_modules/@libsql/linux-x64-gnu": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.5.22.tgz", + "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", "cpu": [ - "ppc64" + "x64" ], "dev": true, "license": "MIT", @@ -7309,12 +7536,12 @@ "linux" ] }, - "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.17.1.tgz", - "integrity": "sha512-B/P+hxKQ1oX4YstI9Lyh4PGzqB87Ddqj/A4iyRBbPdXTcxa+WW3oRLx1CsJKLmHPdDk461Hmbghq1Bm3pl+8Aw==", + "node_modules/@libsql/linux-x64-musl": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.5.22.tgz", + "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", "cpu": [ - "riscv64" + "x64" ], "dev": true, "license": "MIT", @@ -7323,5721 +7550,7849 @@ "linux" ] }, - "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.17.1.tgz", - "integrity": "sha512-ulp2H3bFXzd/th2maH+QNKj5qgOhJ3v9Yspdf1svTw3CDOuuTl6sRKsWQ7MUw0vnkSNvQndtflBwVXgzZvURsQ==", + "node_modules/@libsql/win32-x64-msvc": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.5.22.tgz", + "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", "cpu": [ - "riscv64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ] }, - "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.17.1.tgz", - "integrity": "sha512-LAXYVe3rKk09Zo9YKF2ZLBcH8sz8Oj+JIyiUxiHtq0hiYLMsN6dOpCf2hzQEjPAmsSEA/hdC1PVKeXo+oma8mQ==", - "cpu": [ - "s390x" - ], + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.17.1.tgz", - "integrity": "sha512-3RAhxipMKE8RCSPn7O//sj440i+cYTgYbapLeOoDvQEt6R1QcJjTsFgI4iz99FhVj3YbPxlZmcLB5VW+ipyRTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } }, - "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.17.1.tgz", - "integrity": "sha512-wpjMEubGU8r9VjZTLdZR3aPHaBqTl8Jl8F4DBbgNoZ+yhkhQD1/MGvY70v2TLnAI6kAHSvcqgfvaqKDa2iWsPQ==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@motionone/animation": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", + "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@motionone/easing": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } }, - "node_modules/@oxc-resolver/binding-openharmony-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.17.1.tgz", - "integrity": "sha512-XIE4w17RYAVIgx+9Gs3deTREq5tsmalbatYOOBGNdH7n0DfTE600c7wYXsp7ANc3BPDXsInnOzXDEPCvO1F6cg==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@motionone/dom": { + "version": "10.12.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", + "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] + "dependencies": { + "@motionone/animation": "^10.12.0", + "@motionone/generators": "^10.12.0", + "@motionone/types": "^10.12.0", + "@motionone/utils": "^10.12.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } }, - "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.17.1.tgz", - "integrity": "sha512-Lqi5BlHX3zS4bpSOkIbOKVf7DIk6Gvmdifr2OuOI58eUUyP944M8/OyaB09cNpPy9Vukj7nmmhOzj8pwLgAkIg==", - "cpu": [ - "wasm32" - ], - "dev": true, + "node_modules/@motionone/easing": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", + "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", "license": "MIT", - "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.1" - }, - "engines": { - "node": ">=14.0.0" + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" } }, - "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.17.1.tgz", - "integrity": "sha512-l6lTcLBQVj1HNquFpXSsrkCIM8X5Hlng5YNQJrg00z/KyovvDV5l3OFhoRyZ+aLBQ74zUnMRaJZC7xcBnHyeNg==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@motionone/generators": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", + "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } }, - "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.17.1.tgz", - "integrity": "sha512-VTzVtfnCCsU/6GgvursWoyZrhe3Gj/RyXzDWmh4/U1Y3IW0u1FZbp+hCIlBL16pRPbDc5YvXVtCOnA41QOrOoQ==", - "cpu": [ - "ia32" - ], - "dev": true, + "node_modules/@motionone/types": { + "version": "10.17.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", + "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", + "license": "MIT" + }, + "node_modules/@motionone/utils": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", + "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@motionone/types": "^10.17.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } }, - "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.17.1.tgz", - "integrity": "sha512-jRPVU+6/12baj87q2+UGRh30FBVBzqKdJ7rP/mSqiL1kpNQB9yZ1j0+m3sru1m+C8hiFK7lBFwjUtYUBI7+UpQ==", - "cpu": [ - "x64" - ], + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" }, "funding": { - "url": "https://opencollective.com/pkgr" + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" } }, - "node_modules/@posthog/core": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.21.0.tgz", - "integrity": "sha512-0a2JUIX1vhduP2El/6/J8s5AeYAurIoufQGFgMiGnJE5ajd63o9LFocu2vFYYBnIOmy75y4ADNeW8zSl1keEQQ==", + "node_modules/@neon-rs/load": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", + "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "license": "MIT", + "optional": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@posthog/types": { - "version": "1.345.2", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.345.2.tgz", - "integrity": "sha512-VZ1I+bp1YbYG4pSN84YAYCfvUyG5PmKIHx0ucZ6HO23sRgMZw381LLzfBAtmsA4tQ9+uMLigCTIZ4sDMl4ADFw==", - "license": "MIT" - }, - "node_modules/@powersync/attachments": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@powersync/attachments/-/attachments-2.4.2.tgz", - "integrity": "sha512-RXAzMVd1MCZm4VqP6V3rvp29xGCVHzfktV+tWVgSmS3GhvHL3mp70h7D/kcHOcHcPtCASXaasKDxXbuswlbaBw==", - "license": "Apache-2.0", - "peerDependencies": { - "@powersync/common": "^1.46.0" + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" } }, - "node_modules/@powersync/common": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", - "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", - "license": "Apache-2.0", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { - "async-mutex": "^0.5.0", - "event-iterator": "^2.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@powersync/drizzle-driver": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@powersync/drizzle-driver/-/drizzle-driver-0.7.2.tgz", - "integrity": "sha512-urzkvimN44qWufmNonDdvwI3tcN9qFA0XB6BpoQDXFonkRzjunnZiUHas558PdDiw98AEJ4bD+FbtvvgJKzDcw==", + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@op-engineering/op-sqlite": { + "version": "15.2.5", + "resolved": "https://registry.npmjs.org/@op-engineering/op-sqlite/-/op-sqlite-15.2.5.tgz", + "integrity": "sha512-Vmgwt0AzY7qoge3X6EONhsb5NlM2yoQUF0/lseUWBelfc9BUili7/DFsFsS73cvtYWlwPpqeTGOoce5mzHozBw==", + "license": "MIT", + "workspaces": [ + "example", + "node" + ], + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", + "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.8.1" + "@opentelemetry/api": "^1.3.0" }, - "peerDependencies": { - "@powersync/common": "^1.46.0", - "drizzle-orm": "<1.0.0" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@powersync/op-sqlite": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@powersync/op-sqlite/-/op-sqlite-0.8.0.tgz", - "integrity": "sha512-1FNzuSipyGCtxROkhg2DG7mOZjOtPMTj+YEgHqSVFuMdrkzjx31jmf+Lw5VI+UeCWNSUNuUcD/UMrrEUAmRxBw==", + "node_modules/@opentelemetry/core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", + "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", "license": "Apache-2.0", "dependencies": { - "@powersync/common": "1.46.0", - "async-lock": "^1.4.1" + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0 || ^15.0.0", - "@powersync/common": "^1.46.0", - "react": "*", - "react-native": "*" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@powersync/react": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@powersync/react/-/react-1.8.2.tgz", - "integrity": "sha512-15z8JKt66dq2bqX2P7QQ71eUIx3DWLc5WMdB/PDc9MIAHf1SERqKfzbzWGxKplQGHC/GogDA7G8IDoRadhNXOA==", + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", + "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-exporter-base": "0.208.0", + "@opentelemetry/otlp-transformer": "0.208.0", + "@opentelemetry/sdk-logs": "0.208.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, "peerDependencies": { - "@powersync/common": "^1.41.1", - "react": "*" + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@powersync/react-native": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@powersync/react-native/-/react-native-1.29.0.tgz", - "integrity": "sha512-U7wg1v4WA/STdyeHVb2Z2SUEVG6fM7JZZvYt+7xL6bd3ORLxloAIxIrORFZcsOYzaKjDL9D+R8wkSXFy2s5vbg==", + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", + "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", "license": "Apache-2.0", "dependencies": { - "@powersync/common": "1.46.0", - "@powersync/react": "1.8.2", - "async-mutex": "^0.5.0" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-transformer": "0.208.0" }, - "peerDependencies": { - "@journeyapps/react-native-quick-sqlite": "^2.5.0", - "@powersync/common": "^1.46.0", - "react": "*", - "react-native": "*" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@journeyapps/react-native-quick-sqlite": { - "optional": true - } + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@powersync/tanstack-react-query": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@powersync/tanstack-react-query/-/tanstack-react-query-0.1.14.tgz", - "integrity": "sha512-mx1TR+Syh3PtoGaajPbHIZe5S8oJLtxBfmNaTZaHzhwchcrZR/EoJfiS+7hdwwx3mb3YOjKmZbqAx1YKlZwUgw==", + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", + "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", "license": "Apache-2.0", "dependencies": { - "@powersync/common": "1.46.0", - "@powersync/react": "1.8.2", - "@tanstack/react-query": "^5.70.0" + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/sdk-logs": "0.208.0", + "@opentelemetry/sdk-metrics": "2.2.0", + "@opentelemetry/sdk-trace-base": "2.2.0", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "@powersync/common": "^1.46.0", - "react": "*" + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@powersync/web": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@powersync/web/-/web-1.32.0.tgz", - "integrity": "sha512-AYXF+0x5DTfyjPc2Eh89GZLTSanCZYqxsE/js1C9yRzI9+e3NkAjnX7r9n3FFkJS9PSlHlctDMxyb5x2epvMJg==", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", "license": "Apache-2.0", "dependencies": { - "@powersync/common": "1.46.0", - "async-mutex": "^0.5.0", - "bson": "^6.10.4", - "comlink": "^4.4.2", - "commander": "^12.1.0" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, - "bin": { - "powersync-web": "bin/powersync.cjs" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "@journeyapps/wa-sqlite": "^1.4.1", - "@powersync/common": "^1.46.0" + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", + "node_modules/@opentelemetry/resources": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", + "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", + "license": "Apache-2.0", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@opentelemetry/core": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, - "node_modules/@quidone/react-native-wheel-picker": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@quidone/react-native-wheel-picker/-/react-native-wheel-picker-1.6.1.tgz", - "integrity": "sha512-EFmrqM5k8OUr8k44cU4YRg2WPQwwG+ZtUr04qESNqhOFlvktFCrq6wH2PwnMzBel0Z+9t2PgsMh/2uoTse5RfA==", - "license": "MIT", + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", + "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", + "license": "Apache-2.0", "dependencies": { - "@rozhkov/react-useful-hooks": "^1.0.10", - "date-fns": "^4.1.0" + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">= 16.0.0" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "react": ">=16.8", - "react-native": ">=0.71.6" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@radix-ui/number": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", - "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", - "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", - "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", + "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/react-primitive": "2.1.3" + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@radix-ui/react-checkbox": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", - "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", - "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-metrics": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", + "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "license": "MIT", "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", - "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", + "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-focus-guards": "1.1.3", - "@radix-ui/react-focus-scope": "1.1.7", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", - "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", - "license": "MIT", "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", - "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-escape-keydown": "1.1.1" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", - "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", + "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" } }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", - "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", + "node_modules/@oxc-resolver/binding-android-arm-eabi": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.17.1.tgz", + "integrity": "sha512-+VuZyMYYaap5uDAU1xDU3Kul0FekLqpBS8kI5JozlWfYQKnc/HsZg2gHPkQrj0SC9lt74WMNCfOzZZJlYXSdEQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@oxc-resolver/binding-android-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.17.1.tgz", + "integrity": "sha512-YlDDTjvOEKhom/cRSVsXsMVeXVIAM9PJ/x2mfe08rfuS0iIEfJd8PngKbEIhG72WPxleUa+vkEZj9ncmC14z3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@oxc-resolver/binding-darwin-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.17.1.tgz", + "integrity": "sha512-HOYYLSY4JDk14YkXaz/ApgJYhgDP4KsG8EZpgpOxdszGW9HmIMMY/vXqVKYW74dSH+GQkIXYxBrEh3nv+XODVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxc-resolver/binding-darwin-x64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.17.1.tgz", + "integrity": "sha512-JHPJbsa5HvPq2/RIdtGlqfaG9zV2WmgvHrKTYmlW0L5esqtKCBuetFudXTBzkNcyD69kSZLzH92AzTr6vFHMFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxc-resolver/binding-freebsd-x64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.17.1.tgz", + "integrity": "sha512-UD1FRC8j8xZstFXYsXwQkNmmg7vUbee006IqxokwDUUA+xEgKZDpLhBEiVKM08Urb+bn7Q0gn6M1pyNR0ng5mg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.17.1.tgz", + "integrity": "sha512-wFWC1wyf2ROFWTxK5x0Enm++DSof3EBQ/ypyAesMDLiYxOOASDoMOZG1ylWUnlKaCt5W7eNOWOzABpdfFf/ssA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.17.1.tgz", + "integrity": "sha512-k/hUif0GEBk/csSqCfTPXb8AAVs1NNWCa/skBghvNbTtORcWfOVqJ3mM+2pE189+enRm4UnryLREu5ysI0kXEQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.17.1.tgz", + "integrity": "sha512-Cwm6A071ww60QouJ9LoHAwBgEoZzHQ0Qaqk2E7WLfBdiQN9mLXIDhnrpn04hlRElRPhLiu/dtg+o5PPLvaINXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-arm64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.17.1.tgz", + "integrity": "sha512-+hwlE2v3m0r3sk93SchJL1uyaKcPjf+NGO/TD2DZUDo+chXx7FfaEj0nUMewigSt7oZ2sQN9Z4NJOtUa75HE5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.17.1.tgz", + "integrity": "sha512-bO+rsaE5Ox8cFyeL5Ct5tzot1TnQpFa/Wmu5k+hqBYSH2dNVDGoi0NizBN5QV8kOIC6O5MZr81UG4yW/2FyDTA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.17.1.tgz", + "integrity": "sha512-B/P+hxKQ1oX4YstI9Lyh4PGzqB87Ddqj/A4iyRBbPdXTcxa+WW3oRLx1CsJKLmHPdDk461Hmbghq1Bm3pl+8Aw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.17.1.tgz", + "integrity": "sha512-ulp2H3bFXzd/th2maH+QNKj5qgOhJ3v9Yspdf1svTw3CDOuuTl6sRKsWQ7MUw0vnkSNvQndtflBwVXgzZvURsQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.17.1.tgz", + "integrity": "sha512-LAXYVe3rKk09Zo9YKF2ZLBcH8sz8Oj+JIyiUxiHtq0hiYLMsN6dOpCf2hzQEjPAmsSEA/hdC1PVKeXo+oma8mQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-x64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.17.1.tgz", + "integrity": "sha512-3RAhxipMKE8RCSPn7O//sj440i+cYTgYbapLeOoDvQEt6R1QcJjTsFgI4iz99FhVj3YbPxlZmcLB5VW+ipyRTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-linux-x64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.17.1.tgz", + "integrity": "sha512-wpjMEubGU8r9VjZTLdZR3aPHaBqTl8Jl8F4DBbgNoZ+yhkhQD1/MGvY70v2TLnAI6kAHSvcqgfvaqKDa2iWsPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxc-resolver/binding-openharmony-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.17.1.tgz", + "integrity": "sha512-XIE4w17RYAVIgx+9Gs3deTREq5tsmalbatYOOBGNdH7n0DfTE600c7wYXsp7ANc3BPDXsInnOzXDEPCvO1F6cg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@oxc-resolver/binding-wasm32-wasi": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.17.1.tgz", + "integrity": "sha512-Lqi5BlHX3zS4bpSOkIbOKVf7DIk6Gvmdifr2OuOI58eUUyP944M8/OyaB09cNpPy9Vukj7nmmhOzj8pwLgAkIg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.17.1.tgz", + "integrity": "sha512-l6lTcLBQVj1HNquFpXSsrkCIM8X5Hlng5YNQJrg00z/KyovvDV5l3OFhoRyZ+aLBQ74zUnMRaJZC7xcBnHyeNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.17.1.tgz", + "integrity": "sha512-VTzVtfnCCsU/6GgvursWoyZrhe3Gj/RyXzDWmh4/U1Y3IW0u1FZbp+hCIlBL16pRPbDc5YvXVtCOnA41QOrOoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxc-resolver/binding-win32-x64-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.17.1.tgz", + "integrity": "sha512-jRPVU+6/12baj87q2+UGRh30FBVBzqKdJ7rP/mSqiL1kpNQB9yZ1j0+m3sru1m+C8hiFK7lBFwjUtYUBI7+UpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@posthog/core": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.21.0.tgz", + "integrity": "sha512-0a2JUIX1vhduP2El/6/J8s5AeYAurIoufQGFgMiGnJE5ajd63o9LFocu2vFYYBnIOmy75y4ADNeW8zSl1keEQQ==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6" + } + }, + "node_modules/@posthog/types": { + "version": "1.345.2", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.345.2.tgz", + "integrity": "sha512-VZ1I+bp1YbYG4pSN84YAYCfvUyG5PmKIHx0ucZ6HO23sRgMZw381LLzfBAtmsA4tQ9+uMLigCTIZ4sDMl4ADFw==", + "license": "MIT" + }, + "node_modules/@powersync/attachments": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@powersync/attachments/-/attachments-2.4.2.tgz", + "integrity": "sha512-RXAzMVd1MCZm4VqP6V3rvp29xGCVHzfktV+tWVgSmS3GhvHL3mp70h7D/kcHOcHcPtCASXaasKDxXbuswlbaBw==", + "license": "Apache-2.0", + "peerDependencies": { + "@powersync/common": "^1.46.0" + } + }, + "node_modules/@powersync/common": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", + "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", + "license": "Apache-2.0", + "dependencies": { + "async-mutex": "^0.5.0", + "event-iterator": "^2.0.0" + } + }, + "node_modules/@powersync/drizzle-driver": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@powersync/drizzle-driver/-/drizzle-driver-0.7.2.tgz", + "integrity": "sha512-urzkvimN44qWufmNonDdvwI3tcN9qFA0XB6BpoQDXFonkRzjunnZiUHas558PdDiw98AEJ4bD+FbtvvgJKzDcw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.1" + }, + "peerDependencies": { + "@powersync/common": "^1.46.0", + "drizzle-orm": "<1.0.0" + } + }, + "node_modules/@powersync/op-sqlite": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@powersync/op-sqlite/-/op-sqlite-0.8.0.tgz", + "integrity": "sha512-1FNzuSipyGCtxROkhg2DG7mOZjOtPMTj+YEgHqSVFuMdrkzjx31jmf+Lw5VI+UeCWNSUNuUcD/UMrrEUAmRxBw==", + "license": "Apache-2.0", + "dependencies": { + "@powersync/common": "1.46.0", + "async-lock": "^1.4.1" + }, + "peerDependencies": { + "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0 || ^15.0.0", + "@powersync/common": "^1.46.0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@powersync/react": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@powersync/react/-/react-1.8.2.tgz", + "integrity": "sha512-15z8JKt66dq2bqX2P7QQ71eUIx3DWLc5WMdB/PDc9MIAHf1SERqKfzbzWGxKplQGHC/GogDA7G8IDoRadhNXOA==", + "license": "Apache-2.0", + "peerDependencies": { + "@powersync/common": "^1.41.1", + "react": "*" + } + }, + "node_modules/@powersync/react-native": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@powersync/react-native/-/react-native-1.29.0.tgz", + "integrity": "sha512-U7wg1v4WA/STdyeHVb2Z2SUEVG6fM7JZZvYt+7xL6bd3ORLxloAIxIrORFZcsOYzaKjDL9D+R8wkSXFy2s5vbg==", + "license": "Apache-2.0", + "dependencies": { + "@powersync/common": "1.46.0", + "@powersync/react": "1.8.2", + "async-mutex": "^0.5.0" + }, + "peerDependencies": { + "@journeyapps/react-native-quick-sqlite": "^2.5.0", + "@powersync/common": "^1.46.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@journeyapps/react-native-quick-sqlite": { + "optional": true + } + } + }, + "node_modules/@powersync/tanstack-react-query": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@powersync/tanstack-react-query/-/tanstack-react-query-0.1.14.tgz", + "integrity": "sha512-mx1TR+Syh3PtoGaajPbHIZe5S8oJLtxBfmNaTZaHzhwchcrZR/EoJfiS+7hdwwx3mb3YOjKmZbqAx1YKlZwUgw==", + "license": "Apache-2.0", + "dependencies": { + "@powersync/common": "1.46.0", + "@powersync/react": "1.8.2", + "@tanstack/react-query": "^5.70.0" + }, + "peerDependencies": { + "@powersync/common": "^1.46.0", + "react": "*" + } + }, + "node_modules/@powersync/web": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@powersync/web/-/web-1.32.0.tgz", + "integrity": "sha512-AYXF+0x5DTfyjPc2Eh89GZLTSanCZYqxsE/js1C9yRzI9+e3NkAjnX7r9n3FFkJS9PSlHlctDMxyb5x2epvMJg==", + "license": "Apache-2.0", + "dependencies": { + "@powersync/common": "1.46.0", + "async-mutex": "^0.5.0", + "bson": "^6.10.4", + "comlink": "^4.4.2", + "commander": "^12.1.0" + }, + "bin": { + "powersync-web": "bin/powersync.cjs" + }, + "peerDependencies": { + "@journeyapps/wa-sqlite": "^1.4.1", + "@powersync/common": "^1.46.0" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@quidone/react-native-wheel-picker": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@quidone/react-native-wheel-picker/-/react-native-wheel-picker-1.6.1.tgz", + "integrity": "sha512-EFmrqM5k8OUr8k44cU4YRg2WPQwwG+ZtUr04qESNqhOFlvktFCrq6wH2PwnMzBel0Z+9t2PgsMh/2uoTse5RfA==", + "license": "MIT", + "dependencies": { + "@rozhkov/react-useful-hooks": "^1.0.10", + "date-fns": "^4.1.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-native": ">=0.71.6" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", + "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.8.tgz", + "integrity": "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.3", + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.3.tgz", + "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", + "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", + "license": "MIT", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || >=0.65 <1.0" + } + }, + "node_modules/@react-native-community/cli": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", + "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-clean": "20.1.1", + "@react-native-community/cli-config": "20.1.1", + "@react-native-community/cli-doctor": "20.1.1", + "@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.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "rnc-cli": "build/bin.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", + "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", + "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config-android": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", + "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-config-apple": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", + "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", + "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config": "20.1.1", + "@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.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.13.0", + "execa": "^5.0.0", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "semver": "^7.5.2", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", + "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config-android": "20.1.1", + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "logkitty": "^0.7.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-apple": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", + "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config-apple": "20.1.1", + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", + "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-platform-apple": "20.1.1" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", + "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "body-parser": "^1.20.3", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "open": "^6.2.0", + "pretty-format": "^29.7.0", + "serve-static": "^1.13.1", + "strict-url-sanitise": "0.0.1", + "ws": "^6.2.3" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", + "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-types": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", + "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/netinfo": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.5.2.tgz", + "integrity": "sha512-/g0m65BtX9HU+bPiCH2517bOHpEIUsGrWFXDzi1a5nNKn5KujQgm04WhL7/OSXWKHyrT8VVtUoJA0XKRxueBpQ==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": ">=0.59" + } + }, + "node_modules/@react-native-community/slider": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.2.tgz", + "integrity": "sha512-UV/MjCyCtSjS5BQDrrGIMmCXm309xEG6XbR0Dj65kzTraJSVDxSjQS2uBUXgX+5SZUOCzCxzv3OufOZBdtQY4w==", + "license": "MIT" + }, + "node_modules/@react-native-documents/picker": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", + "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", + "license": "MIT", + "funding": { + "url": "https://github.com/react-native-documents/document-picker?sponsor=1" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "react": "*", + "react-native": ">=0.79.0" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", + "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", + "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.83.1" + }, + "engines": { + "node": ">= 20.19.4" } }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "node_modules/@react-native/babel-preset": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", + "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.83.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">= 20.19.4" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@radix-ui/react-label": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", - "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", + "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.1.4" + "hermes-parser": "0.32.0" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", + "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.32.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">= 20.19.4" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", - "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "node_modules/@react-native/community-cli-plugin": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", + "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.2.4" + "@react-native/dev-middleware": "0.83.1", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", + "semver": "^7.1.3" + }, + "engines": { + "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" }, "peerDependenciesMeta": { - "@types/react": { + "@react-native-community/cli": { "optional": true }, - "@types/react-dom": { + "@react-native/metro-config": { "optional": true } } }, - "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", - "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", + "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/debugger-shell": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", + "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">= 20.19.4" } }, - "node_modules/@radix-ui/react-popper": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", - "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "node_modules/@react-native/dev-middleware": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", + "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", "license": "MIT", "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-rect": "1.1.1", - "@radix-ui/react-use-size": "1.1.1", - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.83.1", + "@react-native/debugger-shell": "0.83.1", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^7.5.10" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">= 20.19.4" } }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", - "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-layout-effect": "1.1.1" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", - "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" + "engines": { + "node": ">=8.3.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { - "@types/react": { + "bufferutil": { "optional": true }, - "@types/react-dom": { + "utf-8-validate": { "optional": true } } }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", - "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "node_modules/@react-native/gradle-plugin": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", + "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">= 20.19.4" } }, - "node_modules/@radix-ui/react-progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.8.tgz", - "integrity": "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==", + "node_modules/@react-native/js-polyfills": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", + "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", + "license": "MIT", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", + "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "license": "MIT" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", + "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", "license": "MIT", "dependencies": { - "@radix-ui/react-context": "1.1.3", - "@radix-ui/react-primitive": "2.1.4" + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@types/react": "^19.2.0", + "react": "*", + "react-native": "*" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.3.tgz", - "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==", + "node_modules/@react-navigation/bottom-tabs": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.13.0.tgz", + "integrity": "sha512-qxxjRDpjhZ4vIZqG4rBU1Vx2jgOAO/ciUKc9sJqVlTM005E2E+aK1EaE3lGaBDyZxTpjonollAucZcqL7OTscQ==", "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "@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" } }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", - "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "node_modules/@react-navigation/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", + "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.2.4" + "@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-is": "^19.1.0", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "react": ">= 18.2.0" } }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-slot": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", - "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "node_modules/@react-navigation/elements": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", + "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" + "color": "^4.2.3", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" }, "peerDependenciesMeta": { - "@types/react": { + "@react-native-masked-view/masked-view": { "optional": true } } }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", - "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "node_modules/@react-navigation/native": { + "version": "7.1.28", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", + "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2" + "@react-navigation/core": "^7.14.0", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "use-latest-callback": "^0.2.4" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "react": ">= 18.2.0", + "react-native": "*" } }, - "node_modules/@radix-ui/react-select": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", - "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "node_modules/@react-navigation/native-stack": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.12.0.tgz", + "integrity": "sha512-XmNJsPshjkNsahgbxNgGWQUq4s1l6HqH/Fei4QsjBNn/0mTvVrRVZwJ1XrY9YhWYvyiYkAN6/OmarWQaQJ0otQ==", "license": "MIT", "dependencies": { - "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-focus-guards": "1.1.3", - "@radix-ui/react-focus-scope": "1.1.7", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.8", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-visually-hidden": "1.2.3", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "@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" + } + }, + "node_modules/@react-navigation/routers": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", + "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11" } }, - "node_modules/@radix-ui/react-slider": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", - "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "node_modules/@rn-primitives/checkbox": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/checkbox/-/checkbox-1.2.0.tgz", + "integrity": "sha512-FU/c81eoo6zGm4J4uCccjnqijrQ0grMkt6W3xhnOFkxqxiU2QrnlXN7ddhm2yN+s8CNnke4bOj/xr78wIaYfiw==", "license": "MIT", "dependencies": { - "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" + "@radix-ui/react-checkbox": "^1.3.2", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { "optional": true }, - "@types/react-dom": { + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "node_modules/@rn-primitives/hooks": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/hooks/-/hooks-1.3.0.tgz", + "integrity": "sha512-BR97reSu7uVDpyMeQdRJHT0w8KdS6jdYnOL6xQtqS2q3H6N7vXBlX4LFERqJZphD+aziJFIAJ3HJF1vtt6XlpQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { + "optional": true + }, + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-switch": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", - "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "node_modules/@rn-primitives/label": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/label/-/label-1.2.0.tgz", + "integrity": "sha512-eThBr6vn2jS81ZS4JNcg0+02TkEircH4bZmjF4IZUDl4XRpevwK95NyOkbfhGYmpVbAuisAVxDmvNOQ4OVjfug==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" + "@radix-ui/react-label": "^2.1.7", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { "optional": true }, - "@types/react-dom": { + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", - "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "node_modules/@rn-primitives/portal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/portal/-/portal-1.3.0.tgz", + "integrity": "sha512-a2DSce7TcSfcs0cCngLadAJOvx/+mdH9NRu+GxkX8NPRsGGhJvDEOqouMgDqLwx7z9mjXoUaZcwaVcemUSW9/A==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.11", - "@radix-ui/react-use-controllable-state": "1.2.2" + "zustand": "^5.0.4" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { "optional": true }, - "@types/react-dom": { + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-toggle": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", - "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "node_modules/@rn-primitives/progress": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/progress/-/progress-1.2.0.tgz", + "integrity": "sha512-bbO4WGSNAd2idYDW0ma4xCX9UFOjNK3U4F4hLRhMKglz3c/QVYfpKvlGQ0Y0d7kpelA7MQizvFeqGGYfxSuisw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2" + "@radix-ui/react-progress": "^1.1.7", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { "optional": true }, - "@types/react-dom": { + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", - "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "node_modules/@rn-primitives/select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/select/-/select-1.2.0.tgz", + "integrity": "sha512-W3qFkdSAFPnjNMM7II5MiLCItjWOGXr8f+3obPtLAHcWrcsX/d1KogmplWXwmhBvVStCgE1OpJAD3DE2CHx9Rw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.11", - "@radix-ui/react-toggle": "1.1.10", - "@radix-ui/react-use-controllable-state": "1.2.2" + "@radix-ui/react-select": "^2.2.5", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@rn-primitives/portal": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { "optional": true }, - "@types/react-dom": { + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", - "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "node_modules/@rn-primitives/slider": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/slider/-/slider-1.2.0.tgz", + "integrity": "sha512-JRxTQelfEdG7tWA+7v5YY/9hUeZXe99BrfRH4b/kUbdMdzMp+MEEvJ6y1iqUlNIys5B6uuTWLnFjI8IhG/MkXw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.8", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-visually-hidden": "1.2.3" + "@radix-ui/react-slider": "^1.3.5", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { "optional": true }, - "@types/react-dom": { + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "node_modules/@rn-primitives/slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/slot/-/slot-1.2.0.tgz", + "integrity": "sha512-cpbn+JLjSeq3wcA4uqgFsUimMrWYWx2Ks7r5rkwd1ds1utxynsGkLOKpYVQkATwWrYhtcoF1raxIKEqXuMN+/w==", "license": "MIT", "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", - "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { + }, + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", - "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "node_modules/@rn-primitives/switch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/switch/-/switch-1.2.0.tgz", + "integrity": "sha512-M4r4LvLUFgn3SIkrMuEkDIxnRbHPLZF2cvKhdHmsk1vk6DSIw3WxYEA+0GkU6a8wnOCFzWRl4kHh5+x86bo1/w==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" + "@radix-ui/react-switch": "^1.2.5", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { + "optional": true + }, + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", - "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "node_modules/@rn-primitives/tabs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/tabs/-/tabs-1.2.0.tgz", + "integrity": "sha512-sKqVYQD1s46eS8kGBsCGxJrtZ4my+sjXD5m2auGSdTJmJ8dNYqZJEI1caiMm64ZvRuQDe2bFsekAFGexBD4qUQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" + "@radix-ui/react-tabs": "^1.1.12", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { + "optional": true + }, + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "node_modules/@rn-primitives/toggle": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/toggle/-/toggle-1.2.0.tgz", + "integrity": "sha512-pVhlIdGCOaxBmcrSUYF3EUTeqOoLHCYEuj/qo64Ai89DnI5aSmReBgpttY5v/r0gNrku9dJZfrOe+uGzWNUn8Q==", "license": "MIT", + "dependencies": { + "@radix-ui/react-toggle": "^1.1.9", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { + "optional": true + }, + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", - "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "node_modules/@rn-primitives/toggle-group": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/toggle-group/-/toggle-group-1.2.0.tgz", + "integrity": "sha512-xCbYZzGzCbr/3pu3xE9pEKzuXU5LHT0ZlK9WMdECQUHLRjSI2A6KnUiZJ+JqZ3lzcVlgCE2lZeZXmpvVyBXnNQ==", "license": "MIT", + "dependencies": { + "@radix-ui/react-toggle-group": "^1.1.10", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0", + "@rn-primitives/utils": "1.2.0" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { + "optional": true + }, + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", - "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "node_modules/@rn-primitives/tooltip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/tooltip/-/tooltip-1.2.0.tgz", + "integrity": "sha512-Fn1Y/maW1o64QI+nmBj2jBI/KdCEXv8kVGbDjjDFI68KUxDjuig/hACLiD7fEbLBhZqB/QnHUSRsnPUUOOVGdA==", "license": "MIT", "dependencies": { - "@radix-ui/rect": "1.1.1" + "@radix-ui/react-tooltip": "^1.2.7", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@rn-primitives/portal": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { + "optional": true + }, + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", - "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "node_modules/@rn-primitives/types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/types/-/types-1.2.0.tgz", + "integrity": "sha512-b+6zKgdKVqAfaFPSfhwlQL0dnPQXPpW890m3eguC0VDI1eOsoEvUfVb6lmgH4bum9MmI0xymq4tOUI/fsKLoCQ==", "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { + "optional": true + }, + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", - "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "node_modules/@rn-primitives/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-vLXV5NuxIHDeb4Bw57FzdUh89/g8gz6GERm8TsbJaSUPsDXfnC/ffeYiZJb0LxNteKE3Nr8na4Jy2n26tFil7w==", "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3" - }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "*", + "react-native": "*", + "react-native-web": "*" }, "peerDependenciesMeta": { - "@types/react": { + "react-native": { "optional": true }, - "@types/react-dom": { + "react-native-web": { "optional": true } } }, - "node_modules/@radix-ui/rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", - "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", - "license": "MIT" - }, - "node_modules/@react-native-async-storage/async-storage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", - "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", + "node_modules/@rozhkov/react-useful-hooks": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@rozhkov/react-useful-hooks/-/react-useful-hooks-1.0.10.tgz", + "integrity": "sha512-aEDZDiqkpPJX8WqLqcnPGjXzRpCFiZmbtdr5RVUOciNbbANhdNu+oIxJv3g7ezMcgsYhgWp2/XGxU+g/ClsBew==", "license": "MIT", "dependencies": { - "merge-options": "^3.0.4" + "default-values": "^1.0.2" }, "peerDependencies": { - "react-native": "^0.0.0-0 || >=0.65 <1.0" + "react": "^16.8 || ^17 || ^18 || ^19" } }, - "node_modules/@react-native-community/cli": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", - "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@supabase/auth-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.95.3.tgz", + "integrity": "sha512-vD2YoS8E2iKIX0F7EwXTmqhUpaNsmbU6X2R0/NdFcs02oEfnHyNP/3M716f3wVJ2E5XHGiTFXki6lRckhJ0Thg==", "license": "MIT", "dependencies": { - "@react-native-community/cli-clean": "20.1.1", - "@react-native-community/cli-config": "20.1.1", - "@react-native-community/cli-doctor": "20.1.1", - "@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.4.1", - "deepmerge": "^4.3.0", - "execa": "^5.0.0", - "find-up": "^5.0.0", - "fs-extra": "^8.1.0", - "graceful-fs": "^4.1.3", - "picocolors": "^1.1.1", - "prompts": "^2.4.2", - "semver": "^7.5.2" - }, - "bin": { - "rnc-cli": "build/bin.js" + "tslib": "2.8.1" }, "engines": { - "node": ">=20.19.4" + "node": ">=20.0.0" } }, - "node_modules/@react-native-community/cli-clean": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", - "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", - "dev": true, + "node_modules/@supabase/functions-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.95.3.tgz", + "integrity": "sha512-uTuOAKzs9R/IovW1krO0ZbUHSJnsnyJElTXIRhjJTqymIVGcHzkAYnBCJqd7468Fs/Foz1BQ7Dv6DCl05lr7ig==", "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-glob": "^3.3.2", - "picocolors": "^1.1.1" + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@react-native-community/cli-config": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", - "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", - "dev": true, + "node_modules/@supabase/postgrest-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.95.3.tgz", + "integrity": "sha512-LTrRBqU1gOovxRm1vRXPItSMPBmEFqrfTqdPTRtzOILV4jPSueFz6pES5hpb4LRlkFwCPRmv3nQJ5N625V2Xrg==", "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "cosmiconfig": "^9.0.0", - "deepmerge": "^4.3.0", - "fast-glob": "^3.3.2", - "joi": "^17.2.1", - "picocolors": "^1.1.1" + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@react-native-community/cli-config-android": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", - "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", - "dev": true, + "node_modules/@supabase/realtime-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.95.3.tgz", + "integrity": "sha512-D7EAtfU3w6BEUxDACjowWNJo/ZRo7sDIuhuOGKHIm9FHieGeoJV5R6GKTLtga/5l/6fDr2u+WcW/m8I9SYmaIw==", "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "fast-glob": "^3.3.2", - "fast-xml-parser": "^4.4.1", - "picocolors": "^1.1.1" + "@types/phoenix": "^1.6.6", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@react-native-community/cli-config-apple": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", - "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", - "dev": true, + "node_modules/@supabase/storage-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.95.3.tgz", + "integrity": "sha512-4GxkJiXI3HHWjxpC3sDx1BVrV87O0hfX+wvJdqGv67KeCu+g44SPnII8y0LL/Wr677jB7tpjAxKdtVWf+xhc9A==", "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-glob": "^3.3.2", - "picocolors": "^1.1.1" + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@react-native-community/cli-doctor": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", - "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", - "dev": true, + "node_modules/@supabase/supabase-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.95.3.tgz", + "integrity": "sha512-Fukw1cUTQ6xdLiHDJhKKPu6svEPaCEDvThqCne3OaQyZvuq2qjhJAd91kJu3PXLG18aooCgYBaB6qQz35hhABg==", "license": "MIT", "dependencies": { - "@react-native-community/cli-config": "20.1.1", - "@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.8", - "deepmerge": "^4.3.0", - "envinfo": "^7.13.0", - "execa": "^5.0.0", - "node-stream-zip": "^1.9.1", - "ora": "^5.4.1", - "picocolors": "^1.1.1", - "semver": "^7.5.2", - "wcwidth": "^1.0.1", - "yaml": "^2.2.1" + "@supabase/auth-js": "2.95.3", + "@supabase/functions-js": "2.95.3", + "@supabase/postgrest-js": "2.95.3", + "@supabase/realtime-js": "2.95.3", + "@supabase/storage-js": "2.95.3" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@react-native-community/cli-doctor/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", - "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "dev": true, "license": "MIT", - "dependencies": { - "@react-native-community/cli-config-android": "20.1.1", - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "logkitty": "^0.7.1", - "picocolors": "^1.1.1" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli-platform-apple": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", - "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "dev": true, "license": "MIT", - "dependencies": { - "@react-native-community/cli-config-apple": "20.1.1", - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-xml-parser": "^4.4.1", - "picocolors": "^1.1.1" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", - "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", "dev": true, "license": "MIT", - "dependencies": { - "@react-native-community/cli-platform-apple": "20.1.1" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli-server-api": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", - "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", "dev": true, "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "body-parser": "^1.20.3", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.1", - "nocache": "^3.0.1", - "open": "^6.2.0", - "pretty-format": "^29.7.0", - "serve-static": "^1.13.1", - "strict-url-sanitise": "0.0.1", - "ws": "^6.2.3" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli-server-api/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", "dev": true, "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli-tools": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", - "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", "dev": true, "license": "MIT", - "dependencies": { - "@vscode/sudo-prompt": "^9.0.0", - "appdirsjs": "^1.2.4", - "execa": "^5.0.0", - "find-up": "^5.0.0", - "launch-editor": "^2.9.1", - "mime": "^2.4.1", - "ora": "^5.4.1", - "picocolors": "^1.1.1", - "prompts": "^2.4.2", - "semver": "^7.5.2" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli-tools/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli-types": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", - "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", "dev": true, "license": "MIT", "dependencies": { - "joi": "^17.2.1" + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-native-community/cli/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@react-native-community/cli/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/@svgr/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@react-native-community/netinfo": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.5.2.tgz", - "integrity": "sha512-/g0m65BtX9HU+bPiCH2517bOHpEIUsGrWFXDzi1a5nNKn5KujQgm04WhL7/OSXWKHyrT8VVtUoJA0XKRxueBpQ==", + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, "peerDependencies": { - "react": "*", - "react-native": ">=0.59" + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@react-native-community/slider": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.2.tgz", - "integrity": "sha512-UV/MjCyCtSjS5BQDrrGIMmCXm309xEG6XbR0Dj65kzTraJSVDxSjQS2uBUXgX+5SZUOCzCxzv3OufOZBdtQY4w==", - "license": "MIT" - }, - "node_modules/@react-native-documents/picker": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", - "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/react-native-documents/document-picker?sponsor=1" + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" }, - "peerDependencies": { - "react": "*", - "react-native": ">=0.79.0" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@react-native/assets-registry": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", - "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", - "license": "MIT", + "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">= 20.19.4" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", - "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.83.1" + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" }, "engines": { - "node": ">= 20.19.4" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/@react-native/babel-preset": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", - "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.4", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.25.4", - "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-react-display-name": "^7.24.7", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.25.2", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.83.1", - "babel-plugin-syntax-hermes-parser": "0.32.0", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">= 20.19.4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { - "@babel/core": "*" + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", - "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "node_modules/@tanstack/query-core": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-persist-client-core": { + "version": "5.91.19", + "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.91.19.tgz", + "integrity": "sha512-whrASqbVq8261Ue+/ZzpHsrLDYVfRaENs4HTdLuYKxawkGWzdMfV7BmOdWl8ZF0mEBEbrQR8V6oE3R635JF2Fw==", "license": "MIT", "dependencies": { - "hermes-parser": "0.32.0" + "@tanstack/query-core": "5.90.20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@react-native/codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", - "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "node_modules/@tanstack/react-query": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", + "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/parser": "^7.25.3", - "glob": "^7.1.1", - "hermes-parser": "0.32.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" + "@tanstack/query-core": "5.90.20" }, - "engines": { - "node": ">= 20.19.4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@babel/core": "*" + "react": "^18 || ^19" } }, - "node_modules/@react-native/community-cli-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", - "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", + "node_modules/@tanstack/react-query-persist-client": { + "version": "5.90.22", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.22.tgz", + "integrity": "sha512-BrD3Y/SsrSIDl+t/gpYvjvGHXd7m7oF+GIqktKE8LmTgt7bS1lYHd/CLkVxMPixTU53gHHVFfPNGmY7Hv4L/7g==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.83.1", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "metro": "^0.83.3", - "metro-config": "^0.83.3", - "metro-core": "^0.83.3", - "semver": "^7.1.3" + "@tanstack/query-persist-client-core": "5.91.19" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.90.20", + "react": "^18 || ^19" + } + }, + "node_modules/@testing-library/react-hooks": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz", + "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/react": ">=16.9.0", + "@types/react-dom": ">=16.9.0", + "@types/react-test-renderer": ">=16.9.0", + "react-error-boundary": "^3.1.0" }, "engines": { - "node": ">= 20.19.4" + "node": ">=12" }, "peerDependencies": { - "@react-native-community/cli": "*", - "@react-native/metro-config": "*" + "react": ">=16.9.0", + "react-dom": ">=16.9.0", + "react-test-renderer": ">=16.9.0" }, "peerDependenciesMeta": { - "@react-native-community/cli": { + "react-dom": { "optional": true }, - "@react-native/metro-config": { + "react-test-renderer": { "optional": true } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 10" } }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", - "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", - "license": "BSD-3-Clause", + "node_modules/@total-typescript/ts-reset": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.6.1.tgz", + "integrity": "sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", "engines": { - "node": ">= 20.19.4" + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.6", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz", + "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==", + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/bidirectional-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/bidirectional-map/-/bidirectional-map-1.0.4.tgz", + "integrity": "sha512-jxMzw5jyGHm46E0CHRWAarV6pVI8DvmIs/+bmOzo/grJy1Iga8LDFRB7lyFaBwARLLaAwfaqJr2Tuaog204npw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@types/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-35C93fYQlnLKLASkMPoxRvok4fENwB3By9clRLd2I/08n/XRl0pCdf7EB17K5oMMwZu8NBYA8i66jH5r/LYBKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "fb-dotslash": "0.5.8" - }, - "engines": { - "node": ">= 20.19.4" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@react-native/dev-middleware": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", - "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, "license": "MIT", "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.83.1", - "@react-native/debugger-shell": "0.83.1", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^7.5.10" - }, - "engines": { - "node": ">= 20.19.4" + "expect": "^30.0.0", + "pretty-format": "^30.0.0" } }, - "node_modules/@react-native/dev-middleware/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "node": ">=10" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", - "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, "engines": { - "node": ">= 20.19.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@react-native/js-polyfills": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", - "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", "license": "MIT", - "engines": { - "node": ">= 20.19.4" + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/@react-native/normalize-colors": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", - "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", - "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "license": "MIT", "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@types/react": "^19.2.0", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "undici-types": "~7.16.0" } }, - "node_modules/@react-navigation/bottom-tabs": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.13.0.tgz", - "integrity": "sha512-qxxjRDpjhZ4vIZqG4rBU1Vx2jgOAO/ciUKc9sJqVlTM005E2E+aK1EaE3lGaBDyZxTpjonollAucZcqL7OTscQ==", + "node_modules/@types/phoenix": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", + "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0" - }, - "peerDependencies": { - "@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" + "csstype": "^3.2.2" } }, - "node_modules/@react-navigation/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", - "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "license": "MIT", - "dependencies": { - "@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-is": "^19.1.0", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" - }, "peerDependencies": { - "react": ">= 18.2.0" + "@types/react": "^19.2.0" } }, - "node_modules/@react-navigation/elements": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", - "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", + "node_modules/@types/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", "license": "MIT", "dependencies": { - "color": "^4.2.3", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" - }, - "peerDependencies": { - "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0" - }, - "peerDependenciesMeta": { - "@react-native-masked-view/masked-view": { - "optional": true - } + "@types/react": "*" } }, - "node_modules/@react-navigation/native": { - "version": "7.1.28", - "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", - "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT", - "dependencies": { - "@react-navigation/core": "^7.14.0", - "escape-string-regexp": "^4.0.0", - "fast-deep-equal": "^3.1.3", - "nanoid": "^3.3.11", - "use-latest-callback": "^0.2.4" - }, - "peerDependencies": { - "react": ">= 18.2.0", - "react-native": "*" - } + "optional": true }, - "node_modules/@react-navigation/native-stack": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.12.0.tgz", - "integrity": "sha512-XmNJsPshjkNsahgbxNgGWQUq4s1l6HqH/Fei4QsjBNn/0mTvVrRVZwJ1XrY9YhWYvyiYkAN6/OmarWQaQJ0otQ==", + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0", - "warn-once": "^0.1.1" - }, - "peerDependencies": { - "@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" + "@types/node": "*" } }, - "node_modules/@react-navigation/routers": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", - "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "license": "MIT", "dependencies": { - "nanoid": "^3.3.11" + "@types/yargs-parser": "*" } }, - "node_modules/@rn-primitives/checkbox": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/checkbox/-/checkbox-1.2.0.tgz", - "integrity": "sha512-FU/c81eoo6zGm4J4uCccjnqijrQ0grMkt6W3xhnOFkxqxiU2QrnlXN7ddhm2yN+s8CNnke4bOj/xr78wIaYfiw==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", + "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-checkbox": "^1.3.2", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/type-utils": "8.55.0", + "@typescript-eslint/utils": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.55.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@rn-primitives/hooks": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/hooks/-/hooks-1.3.0.tgz", - "integrity": "sha512-BR97reSu7uVDpyMeQdRJHT0w8KdS6jdYnOL6xQtqS2q3H6N7vXBlX4LFERqJZphD+aziJFIAJ3HJF1vtt6XlpQ==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "license": "MIT", - "dependencies": { - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "engines": { + "node": ">= 4" } }, - "node_modules/@rn-primitives/label": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/label/-/label-1.2.0.tgz", - "integrity": "sha512-eThBr6vn2jS81ZS4JNcg0+02TkEircH4bZmjF4IZUDl4XRpevwK95NyOkbfhGYmpVbAuisAVxDmvNOQ4OVjfug==", + "node_modules/@typescript-eslint/parser": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", + "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", "license": "MIT", "dependencies": { - "@radix-ui/react-label": "^2.1.7", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "debug": "^4.4.3" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@rn-primitives/portal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/portal/-/portal-1.3.0.tgz", - "integrity": "sha512-a2DSce7TcSfcs0cCngLadAJOvx/+mdH9NRu+GxkX8NPRsGGhJvDEOqouMgDqLwx7z9mjXoUaZcwaVcemUSW9/A==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", + "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", "license": "MIT", "dependencies": { - "zustand": "^5.0.4" + "@typescript-eslint/tsconfig-utils": "^8.55.0", + "@typescript-eslint/types": "^8.55.0", + "debug": "^4.4.3" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@rn-primitives/progress": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/progress/-/progress-1.2.0.tgz", - "integrity": "sha512-bbO4WGSNAd2idYDW0ma4xCX9UFOjNK3U4F4hLRhMKglz3c/QVYfpKvlGQ0Y0d7kpelA7MQizvFeqGGYfxSuisw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", + "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", "license": "MIT", "dependencies": { - "@radix-ui/react-progress": "^1.1.7", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@rn-primitives/select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/select/-/select-1.2.0.tgz", - "integrity": "sha512-W3qFkdSAFPnjNMM7II5MiLCItjWOGXr8f+3obPtLAHcWrcsX/d1KogmplWXwmhBvVStCgE1OpJAD3DE2CHx9Rw==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", + "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", "license": "MIT", - "dependencies": { - "@radix-ui/react-select": "^2.2.5", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@rn-primitives/portal": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/slider": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/slider/-/slider-1.2.0.tgz", - "integrity": "sha512-JRxTQelfEdG7tWA+7v5YY/9hUeZXe99BrfRH4b/kUbdMdzMp+MEEvJ6y1iqUlNIys5B6uuTWLnFjI8IhG/MkXw==", + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", + "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", "license": "MIT", "dependencies": { - "@radix-ui/react-slider": "^1.3.5", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/utils": "8.55.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@rn-primitives/slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/slot/-/slot-1.2.0.tgz", - "integrity": "sha512-cpbn+JLjSeq3wcA4uqgFsUimMrWYWx2Ks7r5rkwd1ds1utxynsGkLOKpYVQkATwWrYhtcoF1raxIKEqXuMN+/w==", + "node_modules/@typescript-eslint/types": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", + "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@rn-primitives/switch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/switch/-/switch-1.2.0.tgz", - "integrity": "sha512-M4r4LvLUFgn3SIkrMuEkDIxnRbHPLZF2cvKhdHmsk1vk6DSIw3WxYEA+0GkU6a8wnOCFzWRl4kHh5+x86bo1/w==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", + "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", "license": "MIT", "dependencies": { - "@radix-ui/react-switch": "^1.2.5", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" + "@typescript-eslint/project-service": "8.55.0", + "@typescript-eslint/tsconfig-utils": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@rn-primitives/tabs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/tabs/-/tabs-1.2.0.tgz", - "integrity": "sha512-sKqVYQD1s46eS8kGBsCGxJrtZ4my+sjXD5m2auGSdTJmJ8dNYqZJEI1caiMm64ZvRuQDe2bFsekAFGexBD4qUQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-tabs": "^1.1.12", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": ">=16 || 14 >=14.17" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@rn-primitives/toggle": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/toggle/-/toggle-1.2.0.tgz", - "integrity": "sha512-pVhlIdGCOaxBmcrSUYF3EUTeqOoLHCYEuj/qo64Ai89DnI5aSmReBgpttY5v/r0gNrku9dJZfrOe+uGzWNUn8Q==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", + "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", "license": "MIT", "dependencies": { - "@radix-ui/react-toggle": "^1.1.9", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@rn-primitives/toggle-group": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/toggle-group/-/toggle-group-1.2.0.tgz", - "integrity": "sha512-xCbYZzGzCbr/3pu3xE9pEKzuXU5LHT0ZlK9WMdECQUHLRjSI2A6KnUiZJ+JqZ3lzcVlgCE2lZeZXmpvVyBXnNQ==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", + "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", "license": "MIT", "dependencies": { - "@radix-ui/react-toggle-group": "^1.1.10", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0", - "@rn-primitives/utils": "1.2.0" + "@typescript-eslint/types": "8.55.0", + "eslint-visitor-keys": "^4.2.1" }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@rn-primitives/tooltip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/tooltip/-/tooltip-1.2.0.tgz", - "integrity": "sha512-Fn1Y/maW1o64QI+nmBj2jBI/KdCEXv8kVGbDjjDFI68KUxDjuig/hACLiD7fEbLBhZqB/QnHUSRsnPUUOOVGdA==", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@radix-ui/react-tooltip": "^1.2.7", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "@rn-primitives/portal": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@rn-primitives/types": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/types/-/types-1.2.0.tgz", - "integrity": "sha512-b+6zKgdKVqAfaFPSfhwlQL0dnPQXPpW890m3eguC0VDI1eOsoEvUfVb6lmgH4bum9MmI0xymq4tOUI/fsKLoCQ==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@rn-primitives/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-vLXV5NuxIHDeb4Bw57FzdUh89/g8gz6GERm8TsbJaSUPsDXfnC/ffeYiZJb0LxNteKE3Nr8na4Jy2n26tFil7w==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@rozhkov/react-useful-hooks": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@rozhkov/react-useful-hooks/-/react-useful-hooks-1.0.10.tgz", - "integrity": "sha512-aEDZDiqkpPJX8WqLqcnPGjXzRpCFiZmbtdr5RVUOciNbbANhdNu+oIxJv3g7ezMcgsYhgWp2/XGxU+g/ClsBew==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "default-values": "^1.0.2" - }, - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "license": "MIT" + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, - "license": "BSD-3-Clause" + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, - "license": "BSD-3-Clause" + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@standard-schema/utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", - "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", - "license": "MIT" + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@supabase/auth-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.95.3.tgz", - "integrity": "sha512-vD2YoS8E2iKIX0F7EwXTmqhUpaNsmbU6X2R0/NdFcs02oEfnHyNP/3M716f3wVJ2E5XHGiTFXki6lRckhJ0Thg==", + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], "license": "MIT", + "optional": true, "dependencies": { - "tslib": "2.8.1" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { - "node": ">=20.0.0" + "node": ">=14.0.0" } }, - "node_modules/@supabase/functions-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.95.3.tgz", - "integrity": "sha512-uTuOAKzs9R/IovW1krO0ZbUHSJnsnyJElTXIRhjJTqymIVGcHzkAYnBCJqd7468Fs/Foz1BQ7Dv6DCl05lr7ig==", + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "license": "MIT", + "optional": true, "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, - "node_modules/@supabase/postgrest-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.95.3.tgz", - "integrity": "sha512-LTrRBqU1gOovxRm1vRXPItSMPBmEFqrfTqdPTRtzOILV4jPSueFz6pES5hpb4LRlkFwCPRmv3nQJ5N625V2Xrg==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, "engines": { - "node": ">=20.0.0" + "node": ">=10.0.0" } }, - "node_modules/@supabase/realtime-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.95.3.tgz", - "integrity": "sha512-D7EAtfU3w6BEUxDACjowWNJo/ZRo7sDIuhuOGKHIm9FHieGeoJV5R6GKTLtga/5l/6fDr2u+WcW/m8I9SYmaIw==", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "license": "MIT", "dependencies": { - "@types/phoenix": "^1.6.6", - "@types/ws": "^8.18.1", - "tslib": "2.8.1", - "ws": "^8.18.2" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=6.5" } }, - "node_modules/@supabase/storage-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.95.3.tgz", - "integrity": "sha512-4GxkJiXI3HHWjxpC3sDx1BVrV87O0hfX+wvJdqGv67KeCu+g44SPnII8y0LL/Wr677jB7tpjAxKdtVWf+xhc9A==", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "license": "MIT", "dependencies": { - "iceberg-js": "^0.8.1", - "tslib": "2.8.1" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=20.0.0" + "node": ">= 0.6" } }, - "node_modules/@supabase/supabase-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.95.3.tgz", - "integrity": "sha512-Fukw1cUTQ6xdLiHDJhKKPu6svEPaCEDvThqCne3OaQyZvuq2qjhJAd91kJu3PXLG18aooCgYBaB6qQz35hhABg==", + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", - "dependencies": { - "@supabase/auth-js": "2.95.3", - "@supabase/functions-js": "2.95.3", - "@supabase/postgrest-js": "2.95.3", - "@supabase/realtime-js": "2.95.3", - "@supabase/storage-js": "2.95.3" - }, "engines": { - "node": ">=20.0.0" + "node": ">= 0.6" } }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", - "dev": true, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "bin": { + "acorn": "bin/acorn" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", - "dev": true, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", - "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", - "dev": true, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", - "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", - "dev": true, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "dependencies": { + "acorn": "^8.11.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", - "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", - "dev": true, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "dependencies": { + "debug": "4" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", - "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14" + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", - "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "dependencies": { + "ajv": "^8.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", - "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", - "dev": true, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@svgr/babel-preset": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", - "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", "dev": true, "license": "MIT", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", - "@svgr/babel-plugin-transform-svg-component": "8.0.0" - }, + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6" } }, - "node_modules/@svgr/core": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", - "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^8.1.3", - "snake-case": "^3.0.4" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=6" } }, - "node_modules/@svgr/core/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@svgr/core/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=14" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", - "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", - "dev": true, - "license": "MIT", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { - "@babel/types": "^7.21.3", - "entities": "^4.4.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">= 8" } }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@svgr/plugin-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", - "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", "dev": true, + "license": "MIT" + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "@svgr/hast-util-to-babel-ast": "8.0.0", - "svg-parser": "^2.0.4" + "tslib": "^2.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", - "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", - "dev": true, + "node": ">=10" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "license": "MIT", "dependencies": { - "cosmiconfig": "^8.1.3", - "deepmerge": "^4.3.1", - "svgo": "^3.0.2" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true, + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "license": "MIT", "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tanstack/query-core": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", - "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "engines": { + "node": ">=8" } }, - "node_modules/@tanstack/query-persist-client-core": { - "version": "5.91.19", - "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.91.19.tgz", - "integrity": "sha512-whrASqbVq8261Ue+/ZzpHsrLDYVfRaENs4HTdLuYKxawkGWzdMfV7BmOdWl8ZF0mEBEbrQR8V6oE3R635JF2Fw==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.90.20" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tanstack/react-query": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", - "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.90.20" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "engines": { + "node": ">= 0.4" }, - "peerDependencies": { - "react": "^18 || ^19" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tanstack/react-query-persist-client": { - "version": "5.90.22", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.22.tgz", - "integrity": "sha512-BrD3Y/SsrSIDl+t/gpYvjvGHXd7m7oF+GIqktKE8LmTgt7bS1lYHd/CLkVxMPixTU53gHHVFfPNGmY7Hv4L/7g==", + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "license": "MIT", "dependencies": { - "@tanstack/query-persist-client-core": "5.91.19" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "engines": { + "node": ">= 0.4" }, - "peerDependencies": { - "@tanstack/react-query": "^5.90.20", - "react": "^18 || ^19" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@testing-library/react-hooks": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz", - "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5", - "@types/react": ">=16.9.0", - "@types/react-dom": ">=16.9.0", - "@types/react-test-renderer": ">=16.9.0", - "react-error-boundary": "^3.1.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0", - "react-test-renderer": ">=16.9.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-test-renderer": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, "engines": { - "node": ">= 10" + "node": ">= 0.4" } }, - "node_modules/@total-typescript/ts-reset": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.6.1.tgz", - "integrity": "sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "license": "ISC", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node18": { - "version": "18.2.6", - "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz", - "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==", - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/assign-deep": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/assign-deep/-/assign-deep-0.4.8.tgz", + "integrity": "sha512-uxqXJCnNZDEjPnsaLKVzmh/ST5+Pqoz0wi06HDfHKx1ASNpSbbvz2qW2Gl8ZyHwr5jnm11X2S5eMQaP1lMZmCg==", "license": "MIT", - "optional": true, "dependencies": { - "tslib": "^2.4.0" + "assign-symbols": "^0.1.1", + "is-primitive": "^2.0.0", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/assign-symbols": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-0.1.1.tgz", + "integrity": "sha512-gwzH8QS/GV4pQsf6XOrlpBC6aDE8uJeZvymbEJ0W9TuDYqYOZc4RodvKDH98HCc+KFPYil1kD2XT0X0JWeOzQg==", "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.0.0" + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" + "engines": { + "node": ">= 0.4" } }, - "node_modules/@types/bidirectional-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/bidirectional-map/-/bidirectional-map-1.0.4.tgz", - "integrity": "sha512-jxMzw5jyGHm46E0CHRWAarV6pVI8DvmIs/+bmOzo/grJy1Iga8LDFRB7lyFaBwARLLaAwfaqJr2Tuaog204npw==", + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true, "license": "MIT" }, - "node_modules/@types/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@types/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-35C93fYQlnLKLASkMPoxRvok4fENwB3By9clRLd2I/08n/XRl0pCdf7EB17K5oMMwZu8NBYA8i66jH5r/LYBKA==", - "dev": true, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", "license": "MIT" }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "license": "MIT", "dependencies": { - "@types/node": "*" + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/hammerjs": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", - "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "node_modules/await-lock": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", "license": "MIT" }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT" + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "license": "MIT", "dependencies": { - "@types/istanbul-lib-report": "*" + "object.assign": "^4.1.0" } }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "node_modules/babel-plugin-inline-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz", + "integrity": "sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" + "require-resolve": "0.0.2" } }, - "node_modules/@types/jest/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/jest/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "@babel/helper-define-polyfill-provider": "^0.6.6" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" + "@babel/types": "^7.26.0" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "node_modules/babel-plugin-react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", + "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", "license": "MIT" }, - "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", + "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "hermes-parser": "0.29.1" } }, - "node_modules/@types/phoenix": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", - "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", "license": "MIT" }, - "node_modules/@types/react": { - "version": "19.2.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", - "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", "license": "MIT", "dependencies": { - "csstype": "^3.2.2" + "hermes-estree": "0.29.1" } }, - "node_modules/@types/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.2.0" - } + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true, + "license": "MIT" }, - "node_modules/@types/react-test-renderer": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", - "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", "license": "MIT", "dependencies": { - "@types/react": "*" + "@babel/plugin-syntax-flow": "^7.12.1" } }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "license": "MIT", - "optional": true + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "node_modules/babel-preset-expo": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.4.tgz", + "integrity": "sha512-GGPhL1bpJOFOQFRTkkVyhitf1CRtNjdVq2F1Ps7CWfw0fK/AmzAGO79cnnHuD24GhnwQe7C+Eip5U6ALbvPE3w==", "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/generator": "^7.20.5", + "@babel/helper-module-imports": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.83.1", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.29.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "debug": "^4.3.4", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "@babel/runtime": "^7.20.0", + "expo": "*", + "expo-widgets": "^55.0.0-alpha.6", + "react-refresh": ">=0.14.0 <1.0.0" + }, + "peerDependenciesMeta": { + "@babel/runtime": { + "optional": true + }, + "expo": { + "optional": true + }, + "expo-widgets": { + "optional": true + } } }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", - "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/type-utils": "8.55.0", - "@typescript-eslint/utils": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.55.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "@babel/core": "^7.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 0.6.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", - "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" } }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", - "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.55.0", - "@typescript-eslint/types": "^8.55.0", - "debug": "^4.4.3" + "safe-buffer": "5.1.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "node": ">= 0.8" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", - "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "open": "^8.0.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", - "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", - "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "node": ">=12.0.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", - "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", + "node_modules/better-opn/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/utils": "8.55.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", - "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", - "license": "MIT", + "node_modules/bidirectional-map": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bidirectional-map/-/bidirectional-map-1.1.1.tgz", + "integrity": "sha512-qfpqHKQbSpc5Eev0W35FZoPnoNUvItDrHbVU0YYKkAOBCZ4Dp3CYi9tjAQcdmqN6ui/9+ioIkb9m0uz8EZqPkA==", + "license": "ISC" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=0.6" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", - "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", - "license": "MIT", + "node_modules/bin-links": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz", + "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==", + "dev": true, + "license": "ISC", "dependencies": { - "@typescript-eslint/project-service": "8.55.0", - "@typescript-eslint/tsconfig-utils": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "debug": "^4.4.3", - "minimatch": "^9.0.5", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "cmd-shim": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "proc-log": "^6.0.0", + "read-cmd-shim": "^6.0.0", + "write-file-atomic": "^7.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/bin-links/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/bin-links/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", + "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", - "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "devOptional": true, "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", - "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "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.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "stream-buffers": "2.2.x" + } }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "license": "MIT", - "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" + "fast-json-stable-stringify": "2.x" }, "engines": { - "node": ">=14.0.0" + "node": ">= 6" } }, - "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "license": "MIT", - "optional": true, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" + "node-int64": "^0.4.0" } }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/bson": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", + "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.20.1" + } }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], + "node_modules/bubble-stream-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz", + "integrity": "sha512-Rqf0ly5H4HGt+ki/n3m7GxoR2uIGtNqezPlOLX8Vuo13j5/tfPuVvAr84eoGF7sYm6lKdbGnT/3q8qmzuT5Y9w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "once": "^1.3.3", + "sliced": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + } }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } }, - "node_modules/@vscode/sudo-prompt": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", - "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", - "dev": true, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "license": "BSD-3-Clause" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">=6.5" + "node": ">= 0.4" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "engines": { + "node": ">=10" } }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "devOptional": true, "license": "MIT", "dependencies": { - "acorn": "^8.11.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "license": "ISC", "dependencies": { - "debug": "4" + "is-glob": "^4.0.1" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 6" } }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" } }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "clsx": "^2.1.1" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "funding": { + "url": "https://polar.sh/cva" } }, - "node_modules/anser": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", - "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "license": "MIT" - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "restore-cursor": "^3.1.0" }, "engines": { "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-fragments": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", - "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "dev": true, - "license": "MIT", + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { - "colorette": "^1.0.7", - "slice-ansi": "^2.0.0", - "strip-ansi": "^5.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/ansi-fragments/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/ansi-fragments/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/clone-deep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/cmd-shim": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", + "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==", + "dev": true, "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, "engines": { - "node": ">= 8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/appdirsjs": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", - "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "dev": true, - "license": "MIT" - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "license": "MIT" }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/aria-hidden": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", - "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" }, "engines": { - "node": ">=10" + "node": ">=12.5.0" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=7.0.0" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true, "license": "MIT" }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "node_modules/comlink": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true, "license": "MIT" }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "node_modules/comment-json": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", + "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "ms": "2.0.0" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.10.0" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "ms": "2.0.0" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/assign-deep": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/assign-deep/-/assign-deep-0.4.8.tgz", - "integrity": "sha512-uxqXJCnNZDEjPnsaLKVzmh/ST5+Pqoz0wi06HDfHKx1ASNpSbbvz2qW2Gl8ZyHwr5jnm11X2S5eMQaP1lMZmCg==", + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "dev": true, "license": "MIT", - "dependencies": { - "assign-symbols": "^0.1.1", - "is-primitive": "^2.0.0", - "kind-of": "^5.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/assign-symbols": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-0.1.1.tgz", - "integrity": "sha512-gwzH8QS/GV4pQsf6XOrlpBC6aDE8uJeZvymbEJ0W9TuDYqYOZc4RodvKDH98HCc+KFPYil1kD2XT0X0JWeOzQg==", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=6.6.0" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-lock": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", - "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", - "license": "MIT" - }, - "node_modules/async-mutex": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", - "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "node_modules/core-js": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", + "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dev": true, "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "object-assign": "^4", + "vary": "^1" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/await-lock": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", - "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", - "license": "MIT" - }, - "node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "license": "MIT", - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "dev": true, "license": "MIT", "dependencies": { - "object.assign": "^4.1.0" + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" } }, - "node_modules/babel-plugin-inline-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz", - "integrity": "sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==", + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", "dev": true, "license": "MIT", "dependencies": { - "require-resolve": "0.0.2" + "node-fetch": "^2.7.0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "license": "BSD-3-Clause", + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "license": "BSD-3-Clause", + "node_modules/cross-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/cross-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", - "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.6", - "semver": "^6.3.1" + "hyphenate-style-name": "^1.0.3" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", - "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.6" + "css-tree": "~2.2.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/babel-plugin-react-compiler": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", - "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/babel-plugin-react-native-web": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", - "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", "license": "MIT" }, - "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", - "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "license": "MIT", "dependencies": { - "hermes-parser": "0.29.1" + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" } }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "license": "MIT" }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 12" + } }, - "node_modules/babel-plugin-transform-flow-enums": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", - "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "license": "MIT", "dependencies": { - "@babel/plugin-syntax-flow": "^7.12.1" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-preset-expo": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.4.tgz", - "integrity": "sha512-GGPhL1bpJOFOQFRTkkVyhitf1CRtNjdVq2F1Ps7CWfw0fK/AmzAGO79cnnHuD24GhnwQe7C+Eip5U6ALbvPE3w==", + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "license": "MIT", "dependencies": { - "@babel/generator": "^7.20.5", - "@babel/helper-module-imports": "^7.25.9", - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.83.1", - "babel-plugin-react-compiler": "^1.0.0", - "babel-plugin-react-native-web": "~0.21.0", - "babel-plugin-syntax-hermes-parser": "^0.29.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "debug": "^4.3.4", - "resolve-from": "^5.0.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, - "peerDependencies": { - "@babel/runtime": "^7.20.0", - "expo": "*", - "expo-widgets": "^55.0.0-alpha.6", - "react-refresh": ">=0.14.0 <1.0.0" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "@babel/runtime": { - "optional": true - }, - "expo": { - "optional": true - }, - "expo-widgets": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "dev": true, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "license": "MIT", "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" } }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "ms": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6.0" + "node": ">=0.10.0" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "license": "MIT" }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" } }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "5.1.2" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" }, - "engines": { - "node": ">= 0.8" + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "license": "MIT" }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "open": "^8.0.4" + "execa": "^7.1.1" }, "engines": { - "node": ">=12.0.0" + "node": ">= 16" } }, - "node_modules/better-opn/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/default-gateway/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=12" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/bidirectional-map": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bidirectional-map/-/bidirectional-map-1.1.1.tgz", - "integrity": "sha512-qfpqHKQbSpc5Eev0W35FZoPnoNUvItDrHbVU0YYKkAOBCZ4Dp3CYi9tjAQcdmqN6ui/9+ioIkb9m0uz8EZqPkA==", - "license": "ISC" - }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "license": "Unlicense", + "node_modules/default-gateway/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.6" + "node": ">=14.18.0" } }, - "node_modules/bin-links": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz", - "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==", + "node_modules/default-gateway/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^8.0.0", - "npm-normalize-package-bin": "^5.0.0", - "proc-log": "^6.0.0", - "read-cmd-shim": "^6.0.0", - "write-file-atomic": "^7.0.0" - }, + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bin-links/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "node_modules/default-gateway/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bin-links/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, "engines": { - "node": ">=14" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", - "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "node_modules/default-gateway/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "mimic-fn": "^4.0.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "devOptional": true, + "node_modules/default-gateway/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/default-gateway/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, + "node_modules/default-values": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/default-values/-/default-values-1.0.2.tgz", + "integrity": "sha512-OaZEvojjexigvv1IT6N0rKUD5Af7fG11a0jg87jySv5xzjc2+IEW9oWNvqxWLHGhShRRZ0QopCGzGjJv/aY+mw==", + "license": "MIT" + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "license": "MIT", "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.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" + "clone": "^1.0.2" }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", "dependencies": { - "ms": "2.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/body-parser/node_modules/ms": { + "node_modules/define-lazy-prop": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/boolbase": { + "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/bplist-creator": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", - "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", - "dependencies": { - "stream-buffers": "2.2.x" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "license": "MIT", - "dependencies": { - "big-integer": "1.6.x" - }, "engines": { - "node": ">= 5.10.0" + "node": ">= 0.8" } }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, "engines": { "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "license": "MIT", "dependencies": { - "fast-json-stable-stringify": "2.x" + "path-type": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" }, - "node_modules/bson": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", - "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", + "node_modules/dnssd-advertise": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", + "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { - "node": ">=16.20.1" + "node": ">=0.10.0" } }, - "node_modules/bubble-stream-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz", - "integrity": "sha512-Rqf0ly5H4HGt+ki/n3m7GxoR2uIGtNqezPlOLX8Vuo13j5/tfPuVvAr84eoGF7sYm6lKdbGnT/3q8qmzuT5Y9w==", - "dev": true, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { - "once": "^1.3.3", - "sliced": "^1.0.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4.0" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" + "license": "BSD-2-Clause" }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=12" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "node_modules/drizzle-kit": { + "version": "0.31.9", + "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.9.tgz", + "integrity": "sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 6" + "dependencies": { + "@drizzle-team/brocli": "^0.10.2", + "@esbuild-kit/esm-loader": "^2.5.5", + "esbuild": "^0.25.4", + "esbuild-register": "^3.5.0" + }, + "bin": { + "drizzle-kit": "bin.cjs" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001769", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", - "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "node_modules/drizzle-orm": { + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", + "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=4", + "@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": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/sql.js": "*", + "@upstash/redis": ">=1.34.7", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=14.0.0", + "gel": ">=2", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "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 + }, + "@tidbcloud/serverless": { + "optional": true + }, + "@types/better-sqlite3": { + "optional": true + }, + "@types/pg": { + "optional": true }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + "@types/sql.js": { + "optional": true }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "@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 + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "license": "MIT", - "engines": { - "node": ">=10" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "devOptional": true, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" - }, - "engines": { - "node": ">=12.13.0" - } + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, - "node_modules/chromium-edge-launcher": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", - "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "license": "ISC" }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", - "dependencies": { - "clsx": "^2.1.1" + "node": ">=12" }, "funding": { - "url": "https://polar.sh/cva" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "license": "MIT", + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", "engines": { - "node": ">=6" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, "engines": { "node": ">=6" } }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/cmd-shim": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", - "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/errorhandler": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", + "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", "dev": true, "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "escape-html": "~1.0.3" + }, "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "license": "MIT" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { - "node": ">=12.5.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", "license": "MIT", "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "es-errors": "^1.3.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" } }, - "node_modules/comlink": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", - "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", - "license": "Apache-2.0" - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { - "node": ">=18" + "node": ">= 0.4" } }, - "node_modules/comment-json": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", - "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "license": "MIT", "dependencies": { - "array-timsort": "^1.0.3", - "core-util-is": "^1.0.3", - "esprima": "^4.0.1" + "hasown": "^2.0.2" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "license": "MIT" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "license": "MIT", "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 0.8.0" + "node": ">=18" + }, + "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" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", "dependencies": { - "ms": "2.0.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "dev": true, + "node_modules/eslint": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, + "node_modules/eslint-config-expo": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-55.0.0.tgz", + "integrity": "sha512-YvhaKrp1g7pR/qjdI12E5nw9y0DJZWgYr815vyW8wskGLsFvxATY3mtKL8zm3ZYzWj3Bvc37tRIS661TEkrv9A==", "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-expo": "^1.0.0", + "eslint-plugin-import": "^2.30.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^5.1.0", + "globals": "^16.0.0" + }, + "peerDependencies": { + "eslint": ">=8.10" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, + "node_modules/eslint-config-expo/node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "license": "MIT", "engines": { - "node": ">= 0.6" + "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" } }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "dev": true, + "node_modules/eslint-config-expo/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "license": "MIT", "engines": { - "node": ">=6.6.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/core-js": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", - "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", - "hasInstallScript": true, + "node_modules/eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/core-js-compat": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", - "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "node_modules/eslint-config-universe": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-universe/-/eslint-config-universe-12.1.0.tgz", + "integrity": "sha512-nAT0/rcOyYvsy0tY1yq0/BchUQImRCpORONzCvLkjixRBH5CbkMddb/V8ZlOLPgkfu3lp+sByRmSXNfoupTj2w==", "license": "MIT", "dependencies": { - "browserslist": "^4.28.1" + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "peerDependencies": { + "eslint": ">=8.10", + "prettier": ">=3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "dev": true, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "license": "MIT", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">= 0.10" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "license": "MIT", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "license": "BSD-2-Clause", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=14" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.9.5" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -13045,3614 +15400,3615 @@ } } }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/create-jest/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-jest/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-env": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", - "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" }, - "engines": { - "node": ">=20" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "dev": true, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "license": "BSD-2-Clause", "dependencies": { - "whatwg-url": "^5.0.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "4.x || >=6.0.0" + "node": "^16.0.0 || >=18.0.0" }, - "peerDependencies": { - "encoding": "^0.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "encoding": { + "typescript": { "optional": true } } }, - "node_modules/cross-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/cross-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 8" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/css-in-js-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", - "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "node_modules/eslint-config-universe/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { - "hyphenate-style-name": "^1.0.3" + "balanced-match": "^1.0.0" } }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "node_modules/eslint-config-universe/node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "license": "MIT", + "engines": { + "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, + "node_modules/eslint-config-universe/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", + "node_modules/eslint-config-universe/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">= 6" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", + "node_modules/eslint-config-universe/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", "bin": { - "cssesc": "bin/cssesc" + "semver": "bin/semver.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", - "dev": true, + "node_modules/eslint-config-universe/node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "license": "MIT", - "dependencies": { - "css-tree": "~2.2.0" - }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", - "dev": true, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "license": "MIT", "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "license": "MIT" + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "debug": "^3.2.7" }, "engines": { - "node": ">=8" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", - "engines": { - "node": ">= 12" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" + "node_modules/eslint-plugin-drizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-drizzle/-/eslint-plugin-drizzle-0.2.3.tgz", + "integrity": "sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==", + "license": "Apache-2.0", + "peerDependencies": { + "eslint": ">=8.0.0" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8.10.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "node_modules/eslint-plugin-expo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-1.0.0.tgz", + "integrity": "sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" + "@typescript-eslint/types": "^8.29.1", + "@typescript-eslint/utils": "^8.29.1", + "eslint": "^9.24.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" + "peerDependencies": { + "eslint": ">=8.10" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": ">= 0.4" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/date-fns": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", - "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" }, "engines": { - "node": ">=6.0" + "node": ">=8.10.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "eslint": ">=5.16.0" } }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "license": "MIT" - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "node_modules/eslint-plugin-prettier": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" + }, "engines": { - "node": ">=0.10" - } - }, - "node_modules/dedent": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", - "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", - "dev": true, - "license": "MIT", + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { - "babel-plugin-macros": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { "optional": true } } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "license": "MIT", "dependencies": { - "execa": "^7.1.1" + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { - "node": ">= 16" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/default-gateway/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "node_modules/eslint-plugin-react-compiler": { + "version": "19.1.0-rc.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.1.0-rc.2.tgz", + "integrity": "sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "hermes-parser": "^0.25.1", + "zod": "^3.22.4", + "zod-validation-error": "^3.0.3" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "peerDependencies": { + "eslint": ">=7" } }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "node_modules/eslint-plugin-react-compiler/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" - } + "license": "MIT" }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/eslint-plugin-react-compiler/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "hermes-estree": "0.25.1" } }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/eslint-plugin-react-compiler/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/eslint-plugin-react-hooks/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react-hooks/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "hermes-estree": "0.25.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=12" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/default-gateway/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/default-values": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/default-values/-/default-values-1.0.2.tgz", - "integrity": "sha512-OaZEvojjexigvv1IT6N0rKUD5Af7fG11a0jg87jySv5xzjc2+IEW9oWNvqxWLHGhShRRZ0QopCGzGjJv/aY+mw==", - "license": "MIT" + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "license": "BSD-2-Clause", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=0.4.0" + "node": ">=4" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=0.10" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=4.0" } }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "dev": true, - "license": "Apache-2.0", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { - "node": ">=0.3.1" + "node": ">= 0.6" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/event-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", + "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "dev": true, "license": "MIT", "dependencies": { - "path-type": "^4.0.0" + "eventsource-parser": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", "dev": true, - "license": "MIT" - }, - "node_modules/dnssd-advertise": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", - "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", - "license": "MIT" - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" + "node": ">=10" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dompurify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", - "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/drizzle-kit": { - "version": "0.31.9", - "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.9.tgz", - "integrity": "sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==", - "dev": true, + "node_modules/expo": { + "version": "55.0.0-preview.10", + "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.10.tgz", + "integrity": "sha512-BtHgdcu/XS4yYSJTB4HHbYogT2qHl6S4usFqUPhoFfVu/F440VU3J98uUqbDLh5I8OcsZ2PbhjRpOy7uR+MExg==", "license": "MIT", "dependencies": { - "@drizzle-team/brocli": "^0.10.2", - "@esbuild-kit/esm-loader": "^2.5.5", - "esbuild": "^0.25.4", - "esbuild-register": "^3.5.0" + "@babel/runtime": "^7.20.0", + "@expo/cli": "55.0.7", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", + "@expo/devtools": "55.0.2", + "@expo/fingerprint": "0.16.3", + "@expo/local-build-cache-provider": "55.0.3", + "@expo/log-box": "55.0.6", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "55.0.5", + "@expo/vector-icons": "^15.0.2", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~55.0.4", + "expo-asset": "~55.0.4", + "expo-constants": "~55.0.4", + "expo-file-system": "~55.0.5", + "expo-font": "~55.0.3", + "expo-keep-awake": "~55.0.2", + "expo-modules-autolinking": "55.0.3", + "expo-modules-core": "55.0.8", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", + "whatwg-url-minimum": "^0.1.1" }, "bin": { - "drizzle-kit": "bin.cjs" - } - }, - "node_modules/drizzle-orm": { - "version": "0.45.1", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", - "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", - "dev": true, - "license": "Apache-2.0", + "expo": "bin/cli", + "expo-modules-autolinking": "bin/autolinking", + "fingerprint": "bin/fingerprint" + }, "peerDependencies": { - "@aws-sdk/client-rds-data": ">=3", - "@cloudflare/workers-types": ">=4", - "@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": "*", - "@tidbcloud/serverless": "*", - "@types/better-sqlite3": "*", - "@types/pg": "*", - "@types/sql.js": "*", - "@upstash/redis": ">=1.34.7", - "@vercel/postgres": ">=0.8.0", - "@xata.io/client": "*", - "better-sqlite3": ">=7", - "bun-types": "*", - "expo-sqlite": ">=14.0.0", - "gel": ">=2", - "knex": "*", - "kysely": "*", - "mysql2": ">=2", - "pg": ">=8", - "postgres": ">=3", - "sql.js": ">=1", - "sqlite3": ">=5" + "@expo/dom-webview": "*", + "@expo/metro-runtime": "*", + "react": "*", + "react-native": "*", + "react-native-webview": "*" }, "peerDependenciesMeta": { - "@aws-sdk/client-rds-data": { - "optional": true - }, - "@cloudflare/workers-types": { - "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 - }, - "@tidbcloud/serverless": { - "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 - }, - "knex": { - "optional": true - }, - "kysely": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "postgres": { - "optional": true - }, - "prisma": { + "@expo/dom-webview": { "optional": true }, - "sql.js": { + "@expo/metro-runtime": { "optional": true }, - "sqlite3": { + "react-native-webview": { "optional": true } } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "node_modules/expo-application": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-55.0.5.tgz", + "integrity": "sha512-+TSHZMobYEe96CcKRYaNMdO9CcuKpO/hCjBcB0SeoOkEwDbfPyY3KcdoVW6fU7xyPZYN0wucCnLgTXKqAeB5sQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-asset": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.4.tgz", + "integrity": "sha512-eaPPe9Sw4V0nL/KkEvuWpyeeSoGhP2fu1ZA7wkldqywhMVhhY+7kerMkQ7nPgJVtevIfkQRw7wD8ghZEzrKzmg==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "@expo/image-utils": "^0.8.12", + "expo-constants": "~55.0.4" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.286", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", - "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "node_modules/expo-atlas": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/expo-atlas/-/expo-atlas-0.4.3.tgz", + "integrity": "sha512-nN2bouxFvMsqZqLl0ka+eI9Ofida0PcuoE4v+7fHlgyp95X2cCL8Acf0nRKXmmIBEYazdw0d7BAOZfC0b41oxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@expo/server": "^0.5.0", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "compression": "^1.7.4", + "connect": "^3.7.0", + "express": "^4.19.2", + "freeport-async": "^2.0.0", + "getenv": "^2.0.0", + "morgan": "^1.10.0", + "open": "^8.4.2", + "serve-static": "^1.15.0", + "stream-json": "^1.8.0" + }, + "bin": { + "expo-atlas": "build/src/cli/bin.js" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-atlas/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "safe-buffer": "5.2.1" }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "engines": { + "node": ">= 0.6" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/expo-atlas/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, "license": "MIT" }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "node_modules/expo-atlas/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", + "node_modules/expo-atlas/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, "engines": { - "node": ">=0.12" + "node": ">= 0.10.0" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-editor": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", - "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", - "license": "MIT", - "engines": { - "node": ">=8" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/expo-atlas/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/envinfo": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", - "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "node_modules/expo-atlas/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "node_modules/expo-atlas/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } + "node_modules/expo-atlas/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" }, - "node_modules/errorhandler": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", - "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", + "node_modules/expo-atlas/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "escape-html": "~1.0.3" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">= 0.8" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "node_modules/expo-atlas/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/expo-audio": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.5.tgz", + "integrity": "sha512-B2UpahrjHDSi4BPP9rwZIDm1aNBzZ+KwVj09nIoQo2XC5ng2DuHBUFZF5cISX7gmUjS2HhsXtV5/CvKJLUt+6g==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "expo-asset": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-build-properties": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-55.0.6.tgz", + "integrity": "sha512-DfNRMAOGK3a2yao5RmCgNIz4bvCBFS8uHBHwYbd6RZos0n3Qqs96/l+Y9XMWJ/j7xVlXrTacw2wwwstqBGbwYA==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" + "@expo/schema-utils": "^55.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "expo": "*" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", + "node_modules/expo-build-properties/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/expo-clipboard": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-55.0.5.tgz", + "integrity": "sha512-uzGQikfr46+E8bL//tzo+049VYFUzcc3vFgIqImjPrwF5oboKVkOvzsnwhTIQNC++fyU5i3jkLcGd+YK5EwcmA==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/es-iterator-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", - "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "node_modules/expo-constants": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.4.tgz", + "integrity": "sha512-zdPxsYnL8LrW91sXivdBIH5nouTDUG0npMZxaYhvEO/2p60iN0W4jK3n2sRFrPl31WctLWSs4ato/wIKnRuUFA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.1", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.1.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.3.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.5", - "safe-array-concat": "^1.1.3" + "@expo/config": "~55.0.4", + "@expo/env": "~2.1.0" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*", + "react-native": "*" } }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/expo-dev-client": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-55.0.5.tgz", + "integrity": "sha512-p0xkyrCYXztUrVl6fqIrhUVR30Cxp5PbP9Vv1IXl2po8OkFDQklu5y908NBN/oeWpgv1lSgKpRTdZ1G2nsJ7IQ==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" + "expo-dev-launcher": "55.0.6", + "expo-dev-menu": "55.0.5", + "expo-dev-menu-interface": "55.0.1", + "expo-manifests": "~55.0.5", + "expo-updates-interface": "~55.1.1" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "node_modules/expo-dev-launcher": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-55.0.6.tgz", + "integrity": "sha512-Zrmdc0cgvizmX9Wd+Kc5iz0T5QQ2DSsx1Sedww9Ra4qQlUcL2GzoVnDqqw63zI5ax+rnMbBVWyiQUqHN1w/l/A==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "@expo/schema-utils": "^55.0.2", + "expo-dev-menu": "55.0.5", + "expo-manifests": "~55.0.5" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*" } }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "node_modules/expo-dev-menu": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-55.0.5.tgz", + "integrity": "sha512-NCNvsUl+GaVD/FgzEiHtNBLoj4LCE2xE40FKsYsV25csNAp2JizeR5eSIAKW2NX4UTWvgdqOQMIoXhERt7pZBw==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "expo-dev-menu-interface": "55.0.1" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "node_modules/expo-dev-menu-interface": { + "version": "55.0.1", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-55.0.1.tgz", + "integrity": "sha512-FkNtwq1q6NmYoy28pj+ZLuHmirJgc039pQbJ167MZJIaprLcMN1yy67qA7xBHK+FNJ8AN8kGCtMTPByg5UC72A==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-device": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-55.0.6.tgz", + "integrity": "sha512-GCO3shHTn8zk5FUBywra3qyFXv08uNQpJSGeNg/gBBJw+GVpgtZ/9mhB3gVh3daueCV+PWRFWn14QT3lW6PwqQ==", "license": "MIT", "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" + "ua-parser-js": "^0.7.33" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-drizzle-studio-plugin": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/expo-drizzle-studio-plugin/-/expo-drizzle-studio-plugin-0.2.1.tgz", + "integrity": "sha512-AjMC7SOutMAv/MkeJSp/26gnHLAA17SG8EtsjIKW6tDcBkq4plDVhjMLusoGe9f0vzYK8KrOvWjEWZ/R+KvIGg==", + "license": "MIT", + "peerDependencies": { + "expo": ">=53.0.5", + "expo-sqlite": ">=15.2.9" + } + }, + "node_modules/expo-eas-client": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-55.0.2.tgz", + "integrity": "sha512-fjOgSXaZFBK2Xmzn/uw0DTF3BsYv97JEa4PYXXqVCEvNJPwJB1cV1eX6Xyq6iKGIhMPH9k62sOc+oUdt094WCw==", + "license": "MIT" + }, + "node_modules/expo-file-system": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.5.tgz", + "integrity": "sha512-ZD9uJS4tmmyPBHcW7j90+CUsdvfavXdSHSQWG22g7Zm1x02E5elHKOAhsv9gFDGsMDc1nvgR+IvrWlokjkXVSQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-font": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", + "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", + "license": "MIT", + "dependencies": { + "fontfaceobserver": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "dev": true, - "hasInstallScript": true, + "node_modules/expo-glass-effect": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-55.0.5.tgz", + "integrity": "sha512-ui3yOuntcqLukx32mPLcnYucRGN0zWk67euC45t6WlM6IPjXsRo6Z830drjKE7LPWbpWlRbOkdM6BpoAj+yDCQ==", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-haptics": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-55.0.5.tgz", + "integrity": "sha512-8bUIjxLtET5290p0WKyMQ8S3lvxMFEOdbA3GHt07QhgPf0eqeCtsH8/+g+ojtVT9RieZM9dZBHiqofdKpwCQfg==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-image": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", + "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", + "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.2.0" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" }, - "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" + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } } }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, + "node_modules/expo-json-utils": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-55.0.0.tgz", + "integrity": "sha512-aupt/o5PDAb8dXDCb0JcRdkqnTLxe/F+La7jrnyd/sXlYFfRgBJLFOa1SqVFXm1E/Xam1SE/yw6eAb+DGY7Arg==", + "license": "MIT" + }, + "node_modules/expo-keep-awake": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", + "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "peerDependencies": { - "esbuild": ">=0.12 <1" + "expo": "*", + "react": "*" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/expo-linear-gradient": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-55.0.5.tgz", + "integrity": "sha512-zesU+u1/chAFCq+hYtV1xy/5XeKbDWTytOrvJlI3cfxUXV3Ezm9hP3xV6iCzbc72a5ROJYyXLAvMuoM4Pl9ZOg==", "license": "MIT", - "engines": { - "node": ">=6" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/expo-linking": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-55.0.4.tgz", + "integrity": "sha512-n4gKPzxskShfkiXZoMMOcgyJ/JgwmyOCLSBxBBg3dsBetg+KGTB5vZw7oLCu/MsWuKfbsbc/eyuvzzDyWTrpJw==", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "expo-constants": "~55.0.4", + "invariant": "^2.2.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", + "node_modules/expo-localization": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-55.0.5.tgz", + "integrity": "sha512-1AQvwtTqIH1aBZUiGI7kKFs5bTrfJOqYu4wCwmbB18P99dUZ8R4AfYzwmqI3aT/v1LggH5P7WjoW/NI+f40jpg==", + "license": "MIT", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" + "rtl-detect": "^1.0.2" }, - "optionalDependencies": { - "source-map": "~0.6.1" + "peerDependencies": { + "expo": "*", + "react": "*" } }, - "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "node_modules/expo-manifests": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-55.0.5.tgz", + "integrity": "sha512-GXSVnEkAJ1o71L/WshV/NmDda/vnD4poDDKi/oSYSMd8him2u0GfqqzCsgec6Odlqz5fMqXO4JgoBaWKtzn8Aw==", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" + "@expo/config": "~55.0.4", + "expo-json-utils": "~55.0.0" }, "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "expo": "*" } }, - "node_modules/eslint-config-expo": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-55.0.0.tgz", - "integrity": "sha512-YvhaKrp1g7pR/qjdI12E5nw9y0DJZWgYr815vyW8wskGLsFvxATY3mtKL8zm3ZYzWj3Bvc37tRIS661TEkrv9A==", + "node_modules/expo-module-scripts": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/expo-module-scripts/-/expo-module-scripts-3.5.4.tgz", + "integrity": "sha512-grEDrWiUyB5X1F5slHu7lUEbU7sDj1CbokUmKezTt/Zbz34xQFwCuHQlmv4Tl2LPyjJVHZls3VnEytfJ+5yYUw==", "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "^8.18.2", - "@typescript-eslint/parser": "^8.18.2", - "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-expo": "^1.0.0", - "eslint-plugin-import": "^2.30.0", - "eslint-plugin-react": "^7.37.3", - "eslint-plugin-react-hooks": "^5.1.0", - "globals": "^16.0.0" + "@babel/cli": "^7.23.4", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/preset-env": "^7.23.8", + "@babel/preset-typescript": "^7.23.3", + "@expo/npm-proofread": "^1.0.1", + "@testing-library/react-hooks": "^7.0.1", + "@tsconfig/node18": "^18.2.2", + "@types/jest": "^29.2.1", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-preset-expo": "~11.0.15", + "commander": "^2.19.0", + "eslint-config-universe": "^12.0.0", + "find-yarn-workspace-root": "^2.0.0", + "glob": "^7.1.7", + "jest-expo": "~51.0.0-unreleased", + "jest-snapshot-prettier": "npm:prettier@^2", + "jest-watch-typeahead": "2.2.1", + "ts-jest": "~29.0.4", + "typescript": "^5.1.3" }, - "peerDependencies": { - "eslint": ">=8.10" + "bin": { + "expo-module": "bin/expo-module.js" } }, - "node_modules/eslint-config-expo/node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "node_modules/expo-module-scripts/node_modules/@babel/generator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", + "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", "license": "MIT", - "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" + "dependencies": { + "@babel/types": "^7.2.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, - "node_modules/eslint-config-expo/node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "node_modules/expo-module-scripts/node_modules/@expo/config": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.4.tgz", + "integrity": "sha512-g5ns5u1JSKudHYhjo1zaSfkJ/iZIcWmUmIQptMJZ6ag1C0ShL2sj8qdfU8MmAMuKLOgcIfSaiWlQnm4X3VJVkg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.3", + "@expo/json-file": "^8.3.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "3.34.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/config-plugins": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.11.tgz", + "integrity": "sha512-oALE1HwnLFthrobAcC9ocnR9KXLzfWEjgIe4CPe+rDsfC6GDs8dGYCXfRFoCEzoLN4TGYs9RdZ8r0KoCcNrm2A==", "license": "MIT", + "dependencies": { + "@expo/config-types": "^51.0.3", + "@expo/json-file": "~8.3.0", + "@expo/plist": "^0.1.0", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@expo/config-plugins/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=18" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } + "node_modules/expo-module-scripts/node_modules/@expo/config-types": { + "version": "51.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.3.tgz", + "integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA==", + "license": "MIT" }, - "node_modules/eslint-config-universe": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-universe/-/eslint-config-universe-12.1.0.tgz", - "integrity": "sha512-nAT0/rcOyYvsy0tY1yq0/BchUQImRCpORONzCvLkjixRBH5CbkMddb/V8ZlOLPgkfu3lp+sByRmSXNfoupTj2w==", + "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0" - }, - "peerDependencies": { - "eslint": ">=8.10", - "prettier": ">=3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } + "@babel/highlight": "^7.10.4" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "license": "MIT", + "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "*" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "license": "BSD-2-Clause", + "node_modules/expo-module-scripts/node_modules/@expo/json-file": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "node_modules/expo-module-scripts/node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@babel/highlight": "^7.10.4" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "node_modules/expo-module-scripts/node_modules/@expo/plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "node_modules/expo-module-scripts/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", + "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" + "dependencies": { + "@react-native/codegen": "0.74.87" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=18" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "license": "BSD-2-Clause", + "node_modules/expo-module-scripts/node_modules/@react-native/babel-preset": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", + "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.74.87", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "node_modules/expo-module-scripts/node_modules/@react-native/codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", + "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.19.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "@babel/preset-env": "^7.1.6" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "node_modules/expo-module-scripts/node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" } }, - "node_modules/eslint-config-universe/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/expo-module-scripts/node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, - "node_modules/eslint-config-universe/node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "node_modules/expo-module-scripts/node_modules/@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-config-universe/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-universe/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@types/yargs-parser": "*" } }, - "node_modules/eslint-config-universe/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/expo-module-scripts/node_modules/@xmldom/xmldom": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", + "deprecated": "this version is no longer supported, please update to at least 0.8.*", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=10.0.0" } }, - "node_modules/eslint-config-universe/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "node_modules/expo-module-scripts/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "license": "MIT", "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" + "node": ">=6" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/expo-module-scripts/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "license": "MIT", "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler": { + "version": "0.0.0-experimental-592953e-20240517", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-592953e-20240517.tgz", + "integrity": "sha512-OjG1SVaeQZaJrqkMFJatg8W/MTow8Ak5rx2SI0ETQBO1XvOk/XZGMbltNCPdFJLKghBYoBjC+Y3Ap/Xr7B01mA==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@babel/generator": "7.2.0", + "@babel/types": "^7.19.0", + "chalk": "4", + "invariant": "^2.2.4", + "pretty-format": "^24", + "zod": "^3.22.4", + "zod-validation-error": "^2.1.0" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", - "license": "ISC", + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "license": "MIT", "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">= 6" + } + }, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-native-web": { + "version": "0.19.13", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", + "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/babel-preset-expo": { + "version": "11.0.15", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.15.tgz", + "integrity": "sha512-rgiMTYwqIPULaO7iZdqyL7aAff9QLOX6OWUtLZBlOrOTreGY1yHah/5+l8MvI6NVc/8Zj5LY4Y5uMSnJIuzTLw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.74.87", + "babel-plugin-react-compiler": "0.0.0-experimental-592953e-20240517", + "babel-plugin-react-native-web": "~0.19.10", + "react-refresh": "^0.14.2" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/expo-module-scripts/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "color-name": "1.1.3" } }, - "node_modules/eslint-plugin-drizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-drizzle/-/eslint-plugin-drizzle-0.2.3.tgz", - "integrity": "sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==", - "license": "Apache-2.0", - "peerDependencies": { - "eslint": ">=8.0.0" - } + "node_modules/expo-module-scripts/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "node_modules/expo-module-scripts/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "license": "MIT", "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "@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" }, "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-plugin-expo": { + "node_modules/expo-module-scripts/node_modules/getenv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-1.0.0.tgz", - "integrity": "sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "^8.29.1", - "@typescript-eslint/utils": "^8.29.1", - "eslint": "^9.24.0" - }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "eslint": ">=8.10" + "node": ">=6" } }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "node_modules/expo-module-scripts/node_modules/hermes-estree": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", + "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/hermes-parser": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", + "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", "license": "MIT", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" + "hermes-estree": "0.19.1" + } + }, + "node_modules/expo-module-scripts/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/expo-module-scripts/node_modules/jest-expo": { + "version": "51.0.4", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.4.tgz", + "integrity": "sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@expo/config": "~9.0.0-beta.0", + "@expo/json-file": "^8.3.0", + "@jest/create-cache-key-function": "^29.2.1", + "babel-jest": "^29.2.1", + "find-up": "^5.0.0", + "jest-environment-jsdom": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-test-renderer": "18.2.0", + "stacktrace-js": "^2.0.2" + }, + "bin": { + "jest": "bin/jest.js" } }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "node_modules/expo-module-scripts/node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "license": "MIT", "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", - "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", + "node_modules/expo-module-scripts/node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.12" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "node_modules/expo-module-scripts/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "license": "MIT", "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo-module-scripts/node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + "engines": { + "node": ">=4" } }, - "node_modules/eslint-plugin-react-compiler": { - "version": "19.1.0-rc.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.1.0-rc.2.tgz", - "integrity": "sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "hermes-parser": "^0.25.1", - "zod": "^3.22.4", - "zod-validation-error": "^3.0.3" + "minimist": "^1.2.6" }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/expo-module-scripts/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + "node": ">=8.6" }, - "peerDependencies": { - "eslint": ">=7" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/eslint-plugin-react-compiler/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, - "node_modules/eslint-plugin-react-compiler/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/react-test-renderer": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", + "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", "license": "MIT", "dependencies": { - "hermes-estree": "0.25.1" + "react-is": "^18.2.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" } }, - "node_modules/eslint-plugin-react-compiler/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "dependencies": { + "loose-envify": "^1.1.0" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", - "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "hermes-parser": "^0.25.1", - "zod": "^3.25.0 || ^4.0.0", - "zod-validation-error": "^3.5.0 || ^4.0.0" + "node_modules/expo-module-scripts/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "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" + "node": ">=10" } }, - "node_modules/eslint-plugin-react-hooks/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "dev": true, - "license": "MIT" + "node_modules/expo-module-scripts/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/eslint-plugin-react-hooks/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", "license": "MIT", "dependencies": { - "hermes-estree": "0.25.1" + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "license": "BSD-2-Clause", + "node_modules/expo-module-scripts/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "license": "ISC", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/expo-module-scripts/node_modules/xmlbuilder": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, + "node": ">=8.0" + } + }, + "node_modules/expo-module-scripts/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/eslint-utils": { + "node_modules/expo-module-scripts/node_modules/zod-validation-error": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", + "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, "engines": { - "node": ">=6" + "node": ">=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "peerDependencies": { + "zod": "^3.18.0" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "node_modules/expo-modules-autolinking": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", + "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "license": "Apache-2.0", + "node_modules/expo-modules-autolinking/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 10" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/expo-modules-core": { + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.8.tgz", + "integrity": "sha512-WWcbsDmxqz7YQjr0dDRCpiwrWYoz/T4mxUh7ZbUzj8SzsUGrvmvczPj2kAS7hHviimRyfZcTenAh22Wuw/abBA==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "invariant": "^2.2.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "license": "BSD-2-Clause", + "node_modules/expo-router": { + "version": "55.0.0-preview.7", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-55.0.0-preview.7.tgz", + "integrity": "sha512-nrigtPHg5/5ZIeY0Qjo6/wM7N27bTbq22FuNrTgGsNOt5V8sPkvs8lsMl6OsnvEZCKJ2xFYPkL3UGSEvGVxT9A==", + "license": "MIT", "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" + "@expo/metro-runtime": "^55.0.5", + "@expo/schema-utils": "^55.0.2", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-tabs": "^1.1.12", + "@react-navigation/bottom-tabs": "7.10.1", + "@react-navigation/native": "7.1.28", + "@react-navigation/native-stack": "7.10.1", + "client-only": "^0.0.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "expo-glass-effect": "^55.0.5", + "expo-image": "^55.0.3", + "expo-server": "^55.0.3", + "expo-symbols": "^55.0.3", + "fast-deep-equal": "^3.1.3", + "invariant": "^2.2.4", + "nanoid": "^3.3.8", + "query-string": "^7.1.3", + "react-fast-compare": "^3.2.2", + "react-native-is-edge-to-edge": "^1.1.6", + "semver": "~7.6.3", + "server-only": "^0.0.1", + "sf-symbols-typescript": "^2.1.0", + "shallowequal": "^1.1.0", + "use-latest-callback": "^0.2.1", + "vaul": "^1.1.2" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "peerDependencies": { + "@expo/log-box": "55.0.6", + "@expo/metro-runtime": "^55.0.5", + "@react-navigation/drawer": "^7.7.2", + "@testing-library/react-native": ">= 12.0.0", + "expo": "*", + "expo-constants": "^55.0.4", + "expo-linking": "^55.0.4", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-gesture-handler": "*", + "react-native-reanimated": "*", + "react-native-safe-area-context": ">= 5.4.0", + "react-native-screens": "*", + "react-native-web": "*", + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "@react-navigation/drawer": { + "optional": true + }, + "@testing-library/react-native": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-gesture-handler": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node_modules/expo-router/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "license": "BSD-3-Clause", + "node_modules/expo-router/node_modules/@react-navigation/bottom-tabs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", + "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" }, - "engines": { - "node": ">=0.10" + "peerDependencies": { + "@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" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", + "node_modules/expo-router/node_modules/@react-navigation/native-stack": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.10.1.tgz", + "integrity": "sha512-8jt7olKysn07HuKKSjT/ahZZTV+WaZa96o9RI7gAwh7ATlUDY02rIRttwvCyjovhSjD9KCiuJ+Hd4kwLidHwJw==", + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@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" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", + "node_modules/expo-router/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", - "license": "MIT" - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/expo-server": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", + "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=20.16.0" } }, - "node_modules/eventsource": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", - "dev": true, + "node_modules/expo-sharing": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-55.0.6.tgz", + "integrity": "sha512-4X88AnVZTWUjCEYNvHFtd2UMEX43G2zFJBxVANI8RzAjDny4QrzTgdCEFNg0ufZyGMxZL3V5gzUkXVP5y7IEYg==", "license": "MIT", "dependencies": { - "eventsource-parser": "^3.0.1" + "@expo/config-plugins": "^55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/plist": "^0.5.2" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", - "dev": true, + "node_modules/expo-splash-screen": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-55.0.5.tgz", + "integrity": "sha512-Q8PSVonkFEMUykDMBw9kdwNOtc9cMD7Vlz+MU4PYBTHrVQB5EDONnecmDwFDPYF8wc57ef73wkYxuVmrQO533A==", "license": "MIT", - "engines": { - "node": ">=18.0.0" + "dependencies": { + "@expo/prebuild-config": "^55.0.4" + }, + "peerDependencies": { + "expo": "*" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "node_modules/expo-sqlite": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-55.0.5.tgz", + "integrity": "sha512-tYaktd5dQc3fEsmRSSvPBW80o6sq3mzLyOpQ9smMFWSGKvcSJsfvpbE6c8axgdhRMb3OMF4UAhASui+kL9GONQ==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "await-lock": "^2.2.2" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" + "node_modules/expo-status-bar": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-55.0.2.tgz", + "integrity": "sha512-iV/Az9SqwY2j5e/tZ7Fz7vwolfXp0xFTScET4lnS615oLQfdhyI2HOTg4CL4q7UVlSDW3HN4rCkDK2oASNVO7g==", + "license": "MIT", + "dependencies": { + "react-native-is-edge-to-edge": "^1.2.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", - "dev": true, + "node_modules/expo-structured-headers": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-55.0.0.tgz", + "integrity": "sha512-udaNvuWb45/Sryq9FLC/blwgOChhznuqlTrUzVjC0T83pMdcmscKJX23lnNDW6hCec8p81Y3z1DIFwIyk0g/PQ==", + "license": "MIT" + }, + "node_modules/expo-symbols": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-55.0.3.tgz", + "integrity": "sha512-r3AnrAAPw/zqha6dBdkJV7ueELy/yyeEKU38qzFFz37w1mhcXobuXahnfPSnY54lKrTbqrSiFMj/aGh25ElnoQ==", "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "@expo-google-fonts/material-symbols": "^0.4.1", + "sf-symbols-typescript": "^2.0.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "expo": "*", + "expo-font": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/expo": { - "version": "55.0.0-preview.10", - "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.10.tgz", - "integrity": "sha512-BtHgdcu/XS4yYSJTB4HHbYogT2qHl6S4usFqUPhoFfVu/F440VU3J98uUqbDLh5I8OcsZ2PbhjRpOy7uR+MExg==", + "node_modules/expo-system-ui": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-55.0.5.tgz", + "integrity": "sha512-tcE0SJCfKZgESWUNBleqNIdgFZj6Y41WvgOpwMDhke9Fezwsput1MWz2L2QyHoeo1bUE5KuNuI5+nCWdecSnAQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.20.0", - "@expo/cli": "55.0.7", - "@expo/config": "~55.0.4", - "@expo/config-plugins": "~55.0.4", - "@expo/devtools": "55.0.2", - "@expo/fingerprint": "0.16.3", - "@expo/local-build-cache-provider": "55.0.3", - "@expo/log-box": "55.0.6", - "@expo/metro": "~54.2.0", - "@expo/metro-config": "55.0.5", - "@expo/vector-icons": "^15.0.2", - "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~55.0.4", - "expo-asset": "~55.0.4", - "expo-constants": "~55.0.4", - "expo-file-system": "~55.0.5", - "expo-font": "~55.0.3", - "expo-keep-awake": "~55.0.2", - "expo-modules-autolinking": "55.0.3", - "expo-modules-core": "55.0.8", - "pretty-format": "^29.7.0", - "react-refresh": "^0.14.2", - "whatwg-url-minimum": "^0.1.1" - }, - "bin": { - "expo": "bin/cli", - "expo-modules-autolinking": "bin/autolinking", - "fingerprint": "bin/fingerprint" + "@react-native/normalize-colors": "0.83.1", + "debug": "^4.3.2" }, "peerDependencies": { - "@expo/dom-webview": "*", - "@expo/metro-runtime": "*", - "react": "*", + "expo": "*", "react-native": "*", - "react-native-webview": "*" + "react-native-web": "*" }, "peerDependenciesMeta": { - "@expo/dom-webview": { - "optional": true - }, - "@expo/metro-runtime": { - "optional": true - }, - "react-native-webview": { + "react-native-web": { "optional": true } } }, - "node_modules/expo-application": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-55.0.5.tgz", - "integrity": "sha512-+TSHZMobYEe96CcKRYaNMdO9CcuKpO/hCjBcB0SeoOkEwDbfPyY3KcdoVW6fU7xyPZYN0wucCnLgTXKqAeB5sQ==", + "node_modules/expo-updates": { + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-55.0.7.tgz", + "integrity": "sha512-AkpyXJ2nRfKSB1MF3qkHYQeuG7Or9FMWcQAbrkIzETGeA3jpfPo0APvuq5PJjZf1VDX2AN3zznmYjrQ/MSODTA==", + "license": "MIT", + "dependencies": { + "@expo/code-signing-certificates": "^0.0.6", + "@expo/plist": "^0.5.2", + "@expo/spawn-async": "^1.7.2", + "arg": "4.1.0", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "expo-eas-client": "~55.0.2", + "expo-manifests": "~55.0.5", + "expo-structured-headers": "~55.0.0", + "expo-updates-interface": "~55.1.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-updates": "bin/cli.js" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-updates-interface": { + "version": "55.1.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-55.1.1.tgz", + "integrity": "sha512-++rlh9dNRUgm+uqN+x4vB/8ELidt0gc3kbwec55YzRizdD845kn5ufjTcGpkGs9SbAYHsP0eh8axlKHpY/v7Kg==", "license": "MIT", "peerDependencies": { "expo": "*" } }, - "node_modules/expo-asset": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.4.tgz", - "integrity": "sha512-eaPPe9Sw4V0nL/KkEvuWpyeeSoGhP2fu1ZA7wkldqywhMVhhY+7kerMkQ7nPgJVtevIfkQRw7wD8ghZEzrKzmg==", + "node_modules/expo-updates/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "license": "MIT" + }, + "node_modules/expo-updates/node_modules/glob": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", + "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-updates/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dev": true, "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.8.12", - "expo-constants": "~55.0.4" + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-atlas": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/expo-atlas/-/expo-atlas-0.4.3.tgz", - "integrity": "sha512-nN2bouxFvMsqZqLl0ka+eI9Ofida0PcuoE4v+7fHlgyp95X2cCL8Acf0nRKXmmIBEYazdw0d7BAOZfC0b41oxA==", + "node_modules/express-rate-limit": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", + "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", "dev": true, "license": "MIT", "dependencies": { - "@expo/server": "^0.5.0", - "arg": "^5.0.2", - "chalk": "^4.1.2", - "compression": "^1.7.4", - "connect": "^3.7.0", - "express": "^4.19.2", - "freeport-async": "^2.0.0", - "getenv": "^2.0.0", - "morgan": "^1.10.0", - "open": "^8.4.2", - "serve-static": "^1.15.0", - "stream-json": "^1.8.0" + "ip-address": "10.0.1" }, - "bin": { - "expo-atlas": "build/src/cli/bin.js" + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" }, "peerDependencies": { - "expo": "*" + "express": ">= 4.11" } }, - "node_modules/expo-atlas/node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/express/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "5.2.1" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { "node": ">= 0.6" } }, - "node_modules/expo-atlas/node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/expo-atlas/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/express/node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-atlas/node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "node_modules/express/node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/express" } }, - "node_modules/expo-atlas/node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "node_modules/express/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-atlas/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/express/node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" - } - }, - "node_modules/expo-atlas/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/expo-atlas/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/expo-atlas/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/express/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-atlas/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "node_modules/express/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, - "license": "MIT" - }, - "node_modules/expo-audio": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.5.tgz", - "integrity": "sha512-B2UpahrjHDSi4BPP9rwZIDm1aNBzZ+KwVj09nIoQo2XC5ng2DuHBUFZF5cISX7gmUjS2HhsXtV5/CvKJLUt+6g==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "expo-asset": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-build-properties": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-55.0.6.tgz", - "integrity": "sha512-DfNRMAOGK3a2yao5RmCgNIz4bvCBFS8uHBHwYbd6RZos0n3Qqs96/l+Y9XMWJ/j7xVlXrTacw2wwwstqBGbwYA==", "license": "MIT", - "dependencies": { - "@expo/schema-utils": "^55.0.2", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-build-properties/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" - } - }, - "node_modules/expo-clipboard": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-55.0.5.tgz", - "integrity": "sha512-uzGQikfr46+E8bL//tzo+049VYFUzcc3vFgIqImjPrwF5oboKVkOvzsnwhTIQNC++fyU5i3jkLcGd+YK5EwcmA==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-constants": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.4.tgz", - "integrity": "sha512-zdPxsYnL8LrW91sXivdBIH5nouTDUG0npMZxaYhvEO/2p60iN0W4jK3n2sRFrPl31WctLWSs4ato/wIKnRuUFA==", - "license": "MIT", - "dependencies": { - "@expo/config": "~55.0.4", - "@expo/env": "~2.1.0" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*" + "node": ">= 0.6" } }, - "node_modules/expo-dev-client": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-55.0.5.tgz", - "integrity": "sha512-p0xkyrCYXztUrVl6fqIrhUVR30Cxp5PbP9Vv1IXl2po8OkFDQklu5y908NBN/oeWpgv1lSgKpRTdZ1G2nsJ7IQ==", + "node_modules/express/node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "dev": true, "license": "MIT", "dependencies": { - "expo-dev-launcher": "55.0.6", - "expo-dev-menu": "55.0.5", - "expo-dev-menu-interface": "55.0.1", - "expo-manifests": "~55.0.5", - "expo-updates-interface": "~55.1.1" + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-dev-launcher": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-55.0.6.tgz", - "integrity": "sha512-Zrmdc0cgvizmX9Wd+Kc5iz0T5QQ2DSsx1Sedww9Ra4qQlUcL2GzoVnDqqw63zI5ax+rnMbBVWyiQUqHN1w/l/A==", + "node_modules/express/node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dev": true, "license": "MIT", "dependencies": { - "@expo/schema-utils": "^55.0.2", - "expo-dev-menu": "55.0.5", - "expo-manifests": "~55.0.5" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-dev-menu": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-55.0.5.tgz", - "integrity": "sha512-NCNvsUl+GaVD/FgzEiHtNBLoj4LCE2xE40FKsYsV25csNAp2JizeR5eSIAKW2NX4UTWvgdqOQMIoXhERt7pZBw==", + "node_modules/express/node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, "license": "MIT", "dependencies": { - "expo-dev-menu-interface": "55.0.1" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 0.6" } }, - "node_modules/expo-dev-menu-interface": { - "version": "55.0.1", - "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-55.0.1.tgz", - "integrity": "sha512-FkNtwq1q6NmYoy28pj+ZLuHmirJgc039pQbJ167MZJIaprLcMN1yy67qA7xBHK+FNJ8AN8kGCtMTPByg5UC72A==", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, - "node_modules/expo-device": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-55.0.6.tgz", - "integrity": "sha512-GCO3shHTn8zk5FUBywra3qyFXv08uNQpJSGeNg/gBBJw+GVpgtZ/9mhB3gVh3daueCV+PWRFWn14QT3lW6PwqQ==", + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { - "ua-parser-js": "^0.7.33" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=8.6.0" } }, - "node_modules/expo-drizzle-studio-plugin": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/expo-drizzle-studio-plugin/-/expo-drizzle-studio-plugin-0.2.1.tgz", - "integrity": "sha512-AjMC7SOutMAv/MkeJSp/26gnHLAA17SG8EtsjIKW6tDcBkq4plDVhjMLusoGe9f0vzYK8KrOvWjEWZ/R+KvIGg==", - "license": "MIT", - "peerDependencies": { - "expo": ">=53.0.5", - "expo-sqlite": ">=15.2.9" + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/expo-eas-client": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-55.0.2.tgz", - "integrity": "sha512-fjOgSXaZFBK2Xmzn/uw0DTF3BsYv97JEa4PYXXqVCEvNJPwJB1cV1eX6Xyq6iKGIhMPH9k62sOc+oUdt094WCw==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, - "node_modules/expo-file-system": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.5.tgz", - "integrity": "sha512-ZD9uJS4tmmyPBHcW7j90+CUsdvfavXdSHSQWG22g7Zm1x02E5elHKOAhsv9gFDGsMDc1nvgR+IvrWlokjkXVSQ==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "license": "MIT", - "peerDependencies": { - "expo": "*", - "react-native": "*" + "dependencies": { + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/expo-font": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", - "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", - "license": "MIT", + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", "dependencies": { - "fontfaceobserver": "^2.1.0" + "reusify": "^1.0.4" + } + }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": ">=20" } }, - "node_modules/expo-glass-effect": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-55.0.5.tgz", - "integrity": "sha512-ui3yOuntcqLukx32mPLcnYucRGN0zWk67euC45t6WlM6IPjXsRo6Z830drjKE7LPWbpWlRbOkdM6BpoAj+yDCQ==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" } }, - "node_modules/expo-haptics": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-55.0.5.tgz", - "integrity": "sha512-8bUIjxLtET5290p0WKyMQ8S3lvxMFEOdbA3GHt07QhgPf0eqeCtsH8/+g+ojtVT9RieZM9dZBHiqofdKpwCQfg==", + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/fbjs/node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", "license": "MIT", - "peerDependencies": { - "expo": "*" + "dependencies": { + "node-fetch": "^2.7.0" } }, - "node_modules/expo-image": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", - "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", + "node_modules/fbjs/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "dependencies": { - "sf-symbols-typescript": "^2.2.0" + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "react-native-web": { + "encoding": { "optional": true } } }, - "node_modules/expo-json-utils": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-55.0.0.tgz", - "integrity": "sha512-aupt/o5PDAb8dXDCb0JcRdkqnTLxe/F+La7jrnyd/sXlYFfRgBJLFOa1SqVFXm1E/Xam1SE/yw6eAb+DGY7Arg==", + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/fbjs/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, - "node_modules/expo-keep-awake": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", - "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", + "node_modules/fbjs/node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*" + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" } }, - "node_modules/expo-linear-gradient": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-55.0.5.tgz", - "integrity": "sha512-zesU+u1/chAFCq+hYtV1xy/5XeKbDWTytOrvJlI3cfxUXV3Ezm9hP3xV6iCzbc72a5ROJYyXLAvMuoM4Pl9ZOg==", + "node_modules/fbjs/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/fbjs/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/expo-linking": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-55.0.4.tgz", - "integrity": "sha512-n4gKPzxskShfkiXZoMMOcgyJ/JgwmyOCLSBxBBg3dsBetg+KGTB5vZw7oLCu/MsWuKfbsbc/eyuvzzDyWTrpJw==", + "node_modules/fd-package-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz", + "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==", + "dev": true, "license": "MIT", "dependencies": { - "expo-constants": "~55.0.4", - "invariant": "^2.2.4" + "walk-up-path": "^4.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" }, "peerDependencies": { - "react": "*", - "react-native": "*" + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/expo-localization": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-55.0.5.tgz", - "integrity": "sha512-1AQvwtTqIH1aBZUiGI7kKFs5bTrfJOqYu4wCwmbB18P99dUZ8R4AfYzwmqI3aT/v1LggH5P7WjoW/NI+f40jpg==", + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", "dependencies": { - "rtl-detect": "^1.0.2" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, - "peerDependencies": { - "expo": "*", - "react": "*" + "engines": { + "node": "^12.20 || >= 14.13" } }, - "node_modules/expo-manifests": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-55.0.5.tgz", - "integrity": "sha512-GXSVnEkAJ1o71L/WshV/NmDda/vnD4poDDKi/oSYSMd8him2u0GfqqzCsgec6Odlqz5fMqXO4JgoBaWKtzn8Aw==", + "node_modules/fetch-nodeshim": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", + "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", + "license": "MIT" + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.4", - "expo-json-utils": "~55.0.0" + "flat-cache": "^4.0.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/expo-module-scripts": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/expo-module-scripts/-/expo-module-scripts-3.5.4.tgz", - "integrity": "sha512-grEDrWiUyB5X1F5slHu7lUEbU7sDj1CbokUmKezTt/Zbz34xQFwCuHQlmv4Tl2LPyjJVHZls3VnEytfJ+5yYUw==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { - "@babel/cli": "^7.23.4", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/preset-env": "^7.23.8", - "@babel/preset-typescript": "^7.23.3", - "@expo/npm-proofread": "^1.0.1", - "@testing-library/react-hooks": "^7.0.1", - "@tsconfig/node18": "^18.2.2", - "@types/jest": "^29.2.1", - "babel-plugin-dynamic-import-node": "^2.3.3", - "babel-preset-expo": "~11.0.15", - "commander": "^2.19.0", - "eslint-config-universe": "^12.0.0", - "find-yarn-workspace-root": "^2.0.0", - "glob": "^7.1.7", - "jest-expo": "~51.0.0-unreleased", - "jest-snapshot-prettier": "npm:prettier@^2", - "jest-watch-typeahead": "2.2.1", - "ts-jest": "~29.0.4", - "typescript": "^5.1.3" + "to-regex-range": "^5.0.1" }, - "bin": { - "expo-module": "bin/expo-module.js" + "engines": { + "node": ">=8" } }, - "node_modules/expo-module-scripts/node_modules/@babel/generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", - "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", "license": "MIT", - "dependencies": { - "@babel/types": "^7.2.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/expo-module-scripts/node_modules/@expo/config": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.4.tgz", - "integrity": "sha512-g5ns5u1JSKudHYhjo1zaSfkJ/iZIcWmUmIQptMJZ6ag1C0ShL2sj8qdfU8MmAMuKLOgcIfSaiWlQnm4X3VJVkg==", + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~8.0.8", - "@expo/config-types": "^51.0.3", - "@expo/json-file": "^8.3.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "3.34.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/expo-module-scripts/node_modules/@expo/config-plugins": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.11.tgz", - "integrity": "sha512-oALE1HwnLFthrobAcC9ocnR9KXLzfWEjgIe4CPe+rDsfC6GDs8dGYCXfRFoCEzoLN4TGYs9RdZ8r0KoCcNrm2A==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "@expo/config-types": "^51.0.3", - "@expo/json-file": "~8.3.0", - "@expo/plist": "^0.1.0", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slash": "^3.0.0", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" + "ms": "2.0.0" } }, - "node_modules/expo-module-scripts/node_modules/@expo/config-plugins/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.8" } }, - "node_modules/expo-module-scripts/node_modules/@expo/config-types": { - "version": "51.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.3.tgz", - "integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "license": "ISC", + "node_modules/finalhandler/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6" } }, - "node_modules/expo-module-scripts/node_modules/@expo/json-file": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", - "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/expo-module-scripts/node_modules/@expo/json-file/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/expo-module-scripts/node_modules/@expo/plist": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", - "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "license": "MIT", "dependencies": { - "@xmldom/xmldom": "~0.7.7", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/expo-module-scripts/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3" + "p-try": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-module-scripts/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", - "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "license": "MIT", "dependencies": { - "@react-native/codegen": "0.74.87" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=18" + "node": ">=6" } }, - "node_modules/expo-module-scripts/node_modules/@react-native/babel-preset": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", - "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "@react-native/babel-plugin-codegen": "0.74.87", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" + "find-up": "^3.0.0" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" + "node": ">=6" } }, - "node_modules/expo-module-scripts/node_modules/@react-native/codegen": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", - "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.20.0", - "glob": "^7.1.1", - "hermes-parser": "0.19.1", - "invariant": "^2.2.4", - "jscodeshift": "^0.14.0", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-module-scripts/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "license": "MIT", + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "license": "Apache-2.0", "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "micromatch": "^4.0.2" } }, - "node_modules/expo-module-scripts/node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" } }, - "node_modules/expo-module-scripts/node_modules/@types/yargs": { - "version": "13.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", - "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" }, - "node_modules/expo-module-scripts/node_modules/@xmldom/xmldom": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", - "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", - "deprecated": "this version is no longer supported, please update to at least 0.8.*", + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/flow-parser": { + "version": "0.299.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.299.0.tgz", + "integrity": "sha512-phGMRoNt6SNglPHGRbCyWm9/pxfe6t/t4++EIYPaBGWT6e0lphLBgUMrvpL62NbRo9R549o3oqrbKHq82kANCw==", "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=0.4.0" } }, - "node_modules/expo-module-scripts/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "license": "BSD-2-Clause" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", "dependencies": { - "color-convert": "^1.9.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler": { - "version": "0.0.0-experimental-592953e-20240517", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-592953e-20240517.tgz", - "integrity": "sha512-OjG1SVaeQZaJrqkMFJatg8W/MTow8Ak5rx2SI0ETQBO1XvOk/XZGMbltNCPdFJLKghBYoBjC+Y3Ap/Xr7B01mA==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { - "@babel/generator": "7.2.0", - "@babel/types": "^7.19.0", - "chalk": "4", - "invariant": "^2.2.4", - "pretty-format": "^24", - "zod": "^3.22.4", - "zod-validation-error": "^2.1.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "node_modules/formatly": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz", + "integrity": "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" + "fd-package-json": "^2.0.0" + }, + "bin": { + "formatly": "bin/index.mjs" }, "engines": { - "node": ">= 6" + "node": ">=18.3.0" } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "fetch-blob": "^3.1.2" }, "engines": { - "node": ">= 6" + "node": ">=12.20.0" } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-native-web": { - "version": "0.19.13", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", - "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", - "license": "MIT" + "node_modules/framer-motion": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", + "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", + "license": "MIT", + "dependencies": { + "@motionone/dom": "10.12.0", + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "popmotion": "11.0.3", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": ">=16.8 || ^17.0.0 || ^18.0.0", + "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0" + } }, - "node_modules/expo-module-scripts/node_modules/babel-preset-expo": { - "version": "11.0.15", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.15.tgz", - "integrity": "sha512-rgiMTYwqIPULaO7iZdqyL7aAff9QLOX6OWUtLZBlOrOTreGY1yHah/5+l8MvI6NVc/8Zj5LY4Y5uMSnJIuzTLw==", + "node_modules/framesync": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", + "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", "license": "MIT", "dependencies": { - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.74.87", - "babel-plugin-react-compiler": "0.0.0-experimental-592953e-20240517", - "babel-plugin-react-native-web": "~0.19.10", - "react-refresh": "^0.14.2" + "tslib": "^2.1.0" + } + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/expo-module-scripts/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, "license": "MIT", - "dependencies": { - "color-name": "1.1.3" + "engines": { + "node": ">= 0.8" } }, - "node_modules/expo-module-scripts/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, "license": "MIT", "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" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/expo-module-scripts/node_modules/getenv": { + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "license": "MIT" + }, + "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", - "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/expo-module-scripts/node_modules/hermes-estree": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", - "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/hermes-parser": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", - "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", - "dependencies": { - "hermes-estree": "0.19.1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expo-module-scripts/node_modules/jest-expo": { - "version": "51.0.4", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.4.tgz", - "integrity": "sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug==", - "license": "MIT", - "dependencies": { - "@expo/config": "~9.0.0-beta.0", - "@expo/json-file": "^8.3.0", - "@jest/create-cache-key-function": "^29.2.1", - "babel-jest": "^29.2.1", - "find-up": "^5.0.0", - "jest-environment-jsdom": "^29.2.1", - "jest-watch-select-projects": "^2.0.0", - "jest-watch-typeahead": "2.2.1", - "json5": "^2.2.3", - "lodash": "^4.17.19", - "react-test-renderer": "18.2.0", - "stacktrace-js": "^2.0.2" + "node": ">= 0.4" }, - "bin": { - "jest": "bin/jest.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/expo-module-scripts/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/expo-module-scripts/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { - "node": ">=4" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/expo-module-scripts/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/expo-module-scripts/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/expo-module-scripts/node_modules/react-test-renderer": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", - "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "license": "MIT", - "dependencies": { - "react-is": "^18.2.0", - "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/expo-module-scripts/node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/expo-module-scripts/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-module-scripts/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" + "resolve-pkg-maps": "^1.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "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", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -16663,3180 +19019,3572 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/expo-module-scripts/node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "license": "ISC", "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/expo-module-scripts/node_modules/xmlbuilder": { + "node_modules/globals": { "version": "14.0.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", - "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "license": "MIT", "engines": { - "node": ">=8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-module-scripts/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { - "url": "https://github.com/sponsors/colinhacks" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/zod-validation-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", - "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "zod": "^3.18.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-modules-autolinking": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", - "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0" + "es-define-property": "^1.0.0" }, - "bin": { - "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-modules-autolinking/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { - "node": ">= 10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-modules-core": { - "version": "55.0.8", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.8.tgz", - "integrity": "sha512-WWcbsDmxqz7YQjr0dDRCpiwrWYoz/T4mxUh7ZbUzj8SzsUGrvmvczPj2kAS7hHviimRyfZcTenAh22Wuw/abBA==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { - "invariant": "^2.2.4" + "has-symbols": "^1.0.3" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-router": { - "version": "55.0.0-preview.7", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-55.0.0-preview.7.tgz", - "integrity": "sha512-nrigtPHg5/5ZIeY0Qjo6/wM7N27bTbq22FuNrTgGsNOt5V8sPkvs8lsMl6OsnvEZCKJ2xFYPkL3UGSEvGVxT9A==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "@expo/metro-runtime": "^55.0.5", - "@expo/schema-utils": "^55.0.2", - "@radix-ui/react-slot": "1.2.0", - "@radix-ui/react-tabs": "^1.1.12", - "@react-navigation/bottom-tabs": "7.10.1", - "@react-navigation/native": "7.1.28", - "@react-navigation/native-stack": "7.10.1", - "client-only": "^0.0.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "expo-glass-effect": "^55.0.5", - "expo-image": "^55.0.3", - "expo-server": "^55.0.3", - "expo-symbols": "^55.0.3", - "fast-deep-equal": "^3.1.3", - "invariant": "^2.2.4", - "nanoid": "^3.3.8", - "query-string": "^7.1.3", - "react-fast-compare": "^3.2.2", - "react-native-is-edge-to-edge": "^1.1.6", - "semver": "~7.6.3", - "server-only": "^0.0.1", - "sf-symbols-typescript": "^2.1.0", - "shallowequal": "^1.1.0", - "use-latest-callback": "^0.2.1", - "vaul": "^1.1.2" - }, - "peerDependencies": { - "@expo/log-box": "55.0.6", - "@expo/metro-runtime": "^55.0.5", - "@react-navigation/drawer": "^7.7.2", - "@testing-library/react-native": ">= 12.0.0", - "expo": "*", - "expo-constants": "^55.0.4", - "expo-linking": "^55.0.4", - "react": "*", - "react-dom": "*", - "react-native": "*", - "react-native-gesture-handler": "*", - "react-native-reanimated": "*", - "react-native-safe-area-context": ">= 5.4.0", - "react-native-screens": "*", - "react-native-web": "*", - "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + "function-bind": "^1.1.2" }, - "peerDependenciesMeta": { - "@react-navigation/drawer": { - "optional": true - }, - "@testing-library/react-native": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-native-gesture-handler": { - "optional": true - }, - "react-native-reanimated": { - "optional": true - }, - "react-native-web": { - "optional": true - }, - "react-server-dom-webpack": { - "optional": true - } + "engines": { + "node": ">= 0.4" } }, - "node_modules/expo-router/node_modules/@radix-ui/react-slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", - "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "node_modules/hermes-compiler": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", + "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "license": "MIT" + }, + "node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "hermes-estree": "0.32.0" } }, - "node_modules/expo-router/node_modules/@react-navigation/bottom-tabs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", - "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", - "license": "MIT", + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "license": "MIT" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0" - }, - "peerDependencies": { - "@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-is": "^16.7.0" } }, - "node_modules/expo-router/node_modules/@react-navigation/native-stack": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.10.1.tgz", - "integrity": "sha512-8jt7olKysn07HuKKSjT/ahZZTV+WaZa96o9RI7gAwh7ATlUDY02rIRttwvCyjovhSjD9KCiuJ+Hd4kwLidHwJw==", + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/hono": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.9.tgz", + "integrity": "sha512-Eaw2YTGM6WOxA6CXbckaEvslr2Ne4NFsKrvc0v97JD5awbmeBLO5w9Ho9L9kmKonrwF9RJlW6BxT1PVv/agBHQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0", - "warn-once": "^0.1.1" - }, - "peerDependencies": { - "@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" + "engines": { + "node": ">=16.9.0" } }, - "node_modules/expo-router/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/expo-server": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", - "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", - "license": "MIT", - "engines": { - "node": ">=20.16.0" - } + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, - "node_modules/expo-sharing": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-55.0.6.tgz", - "integrity": "sha512-4X88AnVZTWUjCEYNvHFtd2UMEX43G2zFJBxVANI8RzAjDny4QrzTgdCEFNg0ufZyGMxZL3V5gzUkXVP5y7IEYg==", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "license": "MIT", "dependencies": { - "@expo/config-plugins": "^55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/plist": "^0.5.2" + "whatwg-encoding": "^2.0.0" }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": ">=12" } }, - "node_modules/expo-splash-screen": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-55.0.5.tgz", - "integrity": "sha512-Q8PSVonkFEMUykDMBw9kdwNOtc9cMD7Vlz+MU4PYBTHrVQB5EDONnecmDwFDPYF8wc57ef73wkYxuVmrQO533A==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "@expo/prebuild-config": "^55.0.4" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" }, - "peerDependencies": { - "expo": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-sqlite": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-55.0.5.tgz", - "integrity": "sha512-tYaktd5dQc3fEsmRSSvPBW80o6sq3mzLyOpQ9smMFWSGKvcSJsfvpbE6c8axgdhRMb3OMF4UAhASui+kL9GONQ==", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "license": "MIT", "dependencies": { - "await-lock": "^2.2.2" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": ">= 6" } }, - "node_modules/expo-status-bar": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-55.0.2.tgz", - "integrity": "sha512-iV/Az9SqwY2j5e/tZ7Fz7vwolfXp0xFTScET4lnS615oLQfdhyI2HOTg4CL4q7UVlSDW3HN4rCkDK2oASNVO7g==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "license": "MIT", "dependencies": { - "react-native-is-edge-to-edge": "^1.2.1" + "agent-base": "6", + "debug": "4" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">= 6" } }, - "node_modules/expo-structured-headers": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-55.0.0.tgz", - "integrity": "sha512-udaNvuWb45/Sryq9FLC/blwgOChhznuqlTrUzVjC0T83pMdcmscKJX23lnNDW6hCec8p81Y3z1DIFwIyk0g/PQ==", - "license": "MIT" - }, - "node_modules/expo-symbols": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-55.0.3.tgz", - "integrity": "sha512-r3AnrAAPw/zqha6dBdkJV7ueELy/yyeEKU38qzFFz37w1mhcXobuXahnfPSnY54lKrTbqrSiFMj/aGh25ElnoQ==", - "license": "MIT", - "dependencies": { - "@expo-google-fonts/material-symbols": "^0.4.1", - "sf-symbols-typescript": "^2.0.0" - }, - "peerDependencies": { - "expo": "*", - "expo-font": "*", - "react": "*", - "react-native": "*" + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" } }, - "node_modules/expo-system-ui": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-55.0.5.tgz", - "integrity": "sha512-tcE0SJCfKZgESWUNBleqNIdgFZj6Y41WvgOpwMDhke9Fezwsput1MWz2L2QyHoeo1bUE5KuNuI5+nCWdecSnAQ==", + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", "license": "MIT", - "dependencies": { - "@react-native/normalize-colors": "0.83.1", - "debug": "^4.3.2" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native-web": { - "optional": true - } + "engines": { + "node": ">=20.0.0" } }, - "node_modules/expo-updates": { - "version": "55.0.7", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-55.0.7.tgz", - "integrity": "sha512-AkpyXJ2nRfKSB1MF3qkHYQeuG7Or9FMWcQAbrkIzETGeA3jpfPo0APvuq5PJjZf1VDX2AN3zznmYjrQ/MSODTA==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "license": "MIT", "dependencies": { - "@expo/code-signing-certificates": "^0.0.6", - "@expo/plist": "^0.5.2", - "@expo/spawn-async": "^1.7.2", - "arg": "4.1.0", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "expo-eas-client": "~55.0.2", - "expo-manifests": "~55.0.5", - "expo-structured-headers": "~55.0.0", - "expo-updates-interface": "~55.1.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "ignore": "^5.3.1", - "resolve-from": "^5.0.0" - }, - "bin": { - "expo-updates": "bin/cli.js" + "safer-buffer": ">= 2.1.2 < 3" }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/expo-updates-interface": { - "version": "55.1.1", - "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-55.1.1.tgz", - "integrity": "sha512-++rlh9dNRUgm+uqN+x4vB/8ELidt0gc3kbwec55YzRizdD845kn5ufjTcGpkGs9SbAYHsP0eh8axlKHpY/v7Kg==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 4" } }, - "node_modules/expo-updates/node_modules/arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", - "license": "MIT" - }, - "node_modules/expo-updates/node_modules/glob": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", - "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", - "license": "BlueOak-1.0.0", + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "queue": "6.0.2" }, - "engines": { - "node": "20 || >=22" + "bin": { + "image-size": "bin/image-size.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=16.x" } }, - "node_modules/expo-updates/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "license": "Apache-2.0" - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "dev": true, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=4" } }, - "node_modules/express-rate-limit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", - "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "10.0.1" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">= 16" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/express-rate-limit" - }, - "peerDependencies": { - "express": ">= 4.11" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/express/node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "dev": true, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "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.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/inline-style-prefixer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", + "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", "license": "MIT", "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" + "css-in-js-utils": "^3.1.0" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" } }, - "node_modules/express/node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "dev": true, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "license": "MIT", "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip-address": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">= 12" } }, - "node_modules/express/node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">= 18.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/media-typer": { + "node_modules/is-bigint": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "dev": true, + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "license": "MIT", "dependencies": { - "mime-db": "^1.54.0" + "has-bigints": "^1.0.2" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "dev": true, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/express/node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "dev": true, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "license": "MIT", "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "dev": true, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "license": "MIT", "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 18" + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "dev": true, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "license": "MIT", "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=8.6.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], "license": "MIT", - "dependencies": { - "strnum": "^1.1.1" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/fb-dotslash": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", - "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", - "license": "(MIT OR Apache-2.0)", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", "bin": { - "dotslash": "bin/dotslash" + "is-docker": "cli.js" }, "engines": { - "node": ">=20" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fbjs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", - "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", - "license": "MIT", - "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^1.0.35" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "license": "MIT" - }, - "node_modules/fbjs/node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/fbjs/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "call-bound": "^1.0.3" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fbjs/node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, "license": "MIT", - "dependencies": { - "asap": "~2.0.3" + "engines": { + "node": ">=4" } }, - "node_modules/fbjs/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/fbjs/node_modules/ua-parser-js": { - "version": "1.0.41", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", - "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "license": "MIT", - "bin": { - "ua-parser-js": "script/cli.js" - }, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/fbjs/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/fbjs/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/fd-package-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz", - "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", - "dependencies": { - "walk-up-path": "^4.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "license": "MIT", "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, "engines": { - "node": "^12.20 || >= 14.13" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fetch-nodeshim": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", - "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", - "license": "MIT" - }, - "node_modules/fflate": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", - "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", - "license": "MIT" + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "isobject": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" + "engines": { + "node": ">=8" }, - "engines": { - "node": ">= 0.8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "license": "MIT", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "license": "MIT", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "find-up": "^3.0.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "license": "Apache-2.0", + "node_modules/jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", + "dev": true, + "license": "MIT", "dependencies": { - "micromatch": "^4.0.2" + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", + "import-local": "^3.2.0", + "jest-cli": "30.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "node_modules/jest-changed-files": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", + "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "execa": "^5.1.1", + "jest-util": "30.2.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=16" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "license": "ISC" - }, - "node_modules/flow-enums-runtime": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", - "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", - "license": "MIT" - }, - "node_modules/flow-parser": { - "version": "0.299.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.299.0.tgz", - "integrity": "sha512-phGMRoNt6SNglPHGRbCyWm9/pxfe6t/t4++EIYPaBGWT6e0lphLBgUMrvpL62NbRo9R549o3oqrbKHq82kANCw==", + "node_modules/jest-circus": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "p-limit": "^3.1.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, "engines": { - "node": ">=0.4.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/fontfaceobserver": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", - "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", - "license": "BSD-2-Clause" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/jest-circus/node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.2.7" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "node_modules/jest-circus/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/jest-circus/node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" + "license": "MIT", + "dependencies": { + "expect": "30.2.0", + "jest-snapshot": "30.2.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "node_modules/jest-circus/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">= 6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/formatly": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz", - "integrity": "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==", + "node_modules/jest-circus/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "fd-package-json": "^2.0.0" - }, - "bin": { - "formatly": "bin/index.mjs" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=18.3.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "node_modules/jest-circus/node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", "dev": true, "license": "MIT", "dependencies": { - "fetch-blob": "^3.1.2" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": ">=12.20.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/jest-circus/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, "engines": { - "node": ">= 0.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/framer-motion": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", - "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", + "node_modules/jest-circus/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { - "@motionone/dom": "10.12.0", - "framesync": "6.0.1", - "hey-listen": "^1.0.8", - "popmotion": "11.0.3", - "style-value-types": "5.0.0", - "tslib": "^2.1.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, - "peerDependencies": { - "react": ">=16.8 || ^17.0.0 || ^18.0.0", - "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/framesync": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", - "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", + "node_modules/jest-circus/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-circus/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/freeport-async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", - "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "node_modules/jest-circus/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "node_modules/jest-circus/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/jest-circus/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, "engines": { - "node": ">=6 <7 || >=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "license": "MIT" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, + "node_modules/jest-circus/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "license": "MIT", + "node_modules/jest-circus/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=6.9.0" + "node": ">=10" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/jest-circus/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "license": "ISC", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/jest-circus/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", + "node_modules/jest-circus/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/jest-cli": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/core": "30.2.0", + "@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", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "node_modules/jest-cli/node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "node_modules/jest-cli/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "resolve-pkg-maps": "^1.0.0" + "@sinclair/typebox": "^0.34.0" }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/getenv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", - "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", - "license": "MIT", "engines": { - "node": ">=6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "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", - "license": "ISC", + "node_modules/jest-cli/node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=10.13.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "node_modules/jest-cli/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/jest-cli/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/jest-cli/node_modules/jest-validate": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/jest-cli/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/jest-cli/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "node_modules/jest-config": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@babel/core": "^7.27.4", + "@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", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", + "node_modules/jest-config/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", "dependencies": { - "es-define-property": "^1.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "node_modules/jest-config/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.0" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/jest-config/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/jest-config/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" + "@sinclair/typebox": "^0.34.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/jest-config/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/hermes-compiler": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", - "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", - "license": "MIT" - }, - "node_modules/hermes-estree": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", - "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", - "license": "MIT" - }, - "node_modules/hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", - "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "node_modules/jest-config/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { - "hermes-estree": "0.32.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "node_modules/jest-config/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, "license": "MIT" }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "node_modules/jest-config/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { - "react-is": "^16.7.0" + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/hono": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.9.tgz", - "integrity": "sha512-Eaw2YTGM6WOxA6CXbckaEvslr2Ne4NFsKrvc0v97JD5awbmeBLO5w9Ho9L9kmKonrwF9RJlW6BxT1PVv/agBHQ==", + "node_modules/jest-config/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" + "node": ">=12" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/jest-config/node_modules/babel-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "license": "MIT", + "node_modules/jest-config/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", + "dev": true, "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "@types/babel__core": "^7.20.5" }, "engines": { - "node": ">= 6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/jest-config/node_modules/babel-preset-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, "engines": { - "node": ">=10.17.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, - "node_modules/hyphenate-style-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", - "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", - "license": "BSD-3-Clause" - }, - "node_modules/iceberg-js": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", - "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=20.0.0" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/jest-config/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/jest-config/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, "funding": [ { "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-config/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/image-size": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", - "license": "MIT", + "node_modules/jest-config/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "queue": "6.0.2" + "@isaacs/cliui": "^8.0.2" }, - "bin": { - "image-size": "bin/image-size.js" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-config/node_modules/jest-environment-node": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" }, "engines": { - "node": ">=16.x" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/jest-config/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": ">=6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/jest-config/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/jest-config/node_modules/jest-validate": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jest-config/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, "engines": { - "node": ">=0.8.19" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "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.", + "node_modules/jest-config/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, "license": "ISC", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/inline-style-prefixer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", - "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", - "license": "MIT", + "node_modules/jest-config/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "css-in-js-utils": "^3.1.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "node_modules/jest-config/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" + "node_modules/jest-config/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-config/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "node_modules/jest-config/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">= 12" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/jest-config/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">= 0.10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "node_modules/jest-config/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "node_modules/jest-config/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "license": "MIT", "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/jest-config/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", "dependencies": { - "has-bigints": "^1.0.2" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "node_modules/jest-diff/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-diff/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "detect-newline": "^3.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/jest-each": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "node_modules/jest-each/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "node_modules/jest-each/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "node_modules/jest-each/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/jest-each/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/jest-each/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, + "node_modules/jest-environment-jsdom/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/jest-environment-node/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, + "node_modules/jest-environment-node/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/jest-environment-node/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/jest-expo": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", + "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@expo/config": "~55.0.4", + "@expo/json-file": "^10.0.12", + "@jest/create-cache-key-function": "^29.2.1", + "@jest/globals": "^29.2.1", + "babel-jest": "^29.2.1", + "jest-environment-jsdom": "^29.2.1", + "jest-snapshot": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-test-renderer": "19.2.0", + "server-only": "^0.0.1", + "stacktrace-js": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "jest": "bin/jest.js" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + }, + "peerDependenciesMeta": { + "react-server-dom-webpack": { + "optional": true + } } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "license": "MIT", - "engines": { - "node": ">=8" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/jest-haste-map/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "license": "MIT" - }, - "node_modules/is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "node_modules/jest-leak-detector": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "node_modules/jest-leak-detector/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.16" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "node_modules/jest-message-util/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "node_modules/jest-message-util/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, "license": "MIT" }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/jest-mock/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "node_modules/jest-mock/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "license": "MIT" + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "node_modules/jest-resolve": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", + "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "node_modules/jest-resolve-dependencies": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", + "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^9.0.0" + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.2.0" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/jest-resolve-dependencies/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "@sinclair/typebox": "^0.34.0" }, "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 - } + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/jest-resolve-dependencies/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-changed-files/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-changed-files/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-resolve-dependencies/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "node_modules/jest-resolve-dependencies/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.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.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/jest-resolve-dependencies/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-circus/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/jest-resolve-dependencies/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-resolve-dependencies/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "license": "MIT" + }, + "node_modules/jest-resolve-dependencies/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-circus/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-resolve-dependencies/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8.6" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "node_modules/jest-resolve-dependencies/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-resolve/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-cli/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-resolve/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "node_modules/jest-resolve/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "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.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-resolve/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/jest-config/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-resolve/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-diff": { + "node_modules/jest-resolve/node_modules/jest-validate": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/diff-sequences": "30.0.1", "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", "chalk": "^4.1.2", + "leven": "^3.1.0", "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-diff/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/jest-resolve/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-diff/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-diff/node_modules/pretty-format": { + "node_modules/jest-resolve/node_modules/pretty-format": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", @@ -19851,381 +22599,363 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-diff/node_modules/react-is": { + "node_modules/jest-resolve/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "node_modules/jest-runner": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-runner/node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-each/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-runner/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "jest-mock": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/jest-runner/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", "@types/node": "*", - "jest-util": "^29.7.0" + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-runner/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/jest-runner/node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-node/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/jest-runner/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-node/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node_modules/jest-runner/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/jest-expo": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", - "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "@expo/config": "~55.0.4", - "@expo/json-file": "^10.0.12", - "@jest/create-cache-key-function": "^29.2.1", - "@jest/globals": "^29.2.1", - "babel-jest": "^29.2.1", - "jest-environment-jsdom": "^29.2.1", - "jest-snapshot": "^29.2.1", - "jest-watch-select-projects": "^2.0.0", - "jest-watch-typeahead": "2.2.1", - "json5": "^2.2.3", - "lodash": "^4.17.19", - "react-test-renderer": "19.2.0", - "server-only": "^0.0.1", - "stacktrace-js": "^2.0.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*", - "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "react-server-dom-webpack": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-expo/node_modules/react-test-renderer": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", - "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", + "node_modules/jest-runner/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "react-is": "^19.2.0", - "scheduler": "^0.27.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, - "peerDependencies": { - "react": "^19.2.0" + "engines": { + "node": ">=12" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/jest-runner/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/jest-runner/node_modules/jest-environment-node": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-haste-map/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-runner/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "node_modules/jest-runner/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-matcher-utils": { + "node_modules/jest-runner/node_modules/jest-validate": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", "chalk": "^4.1.2", - "jest-diff": "30.2.0", + "leven": "^3.1.0", "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/jest-runner/node_modules/jest-watcher": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.2.0", + "string-length": "^4.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "node_modules/jest-runner/node_modules/pretty-format": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", @@ -20240,137 +22970,258 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { + "node_modules/jest-runner/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, - "node_modules/jest-message-util": { + "node_modules/jest-runner/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", + "@types/node": "*", "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "strip-bom": "^4.0.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/jest-runtime/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-runtime/node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/@jest/types": { + "node_modules/jest-runtime/node_modules/@jest/environment": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "jest-mock": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "node_modules/jest-runtime/node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "expect": "30.2.0", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-runtime/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { + "node_modules/jest-runtime/node_modules/@jest/globals": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/jest-runtime/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/jest-mock": { + "node_modules/jest-runtime/node_modules/@jest/test-result": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", "dev": true, "license": "MIT", "dependencies": { + "@jest/console": "30.2.0", "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-mock/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/jest-runtime/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-mock/node_modules/@jest/types": { + "node_modules/jest-runtime/node_modules/@jest/types": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", @@ -20389,301 +23240,390 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-mock/node_modules/@sinclair/typebox": { + "node_modules/jest-runtime/node_modules/@sinclair/typebox": { "version": "0.34.48", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, "license": "MIT" }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/jest-runtime/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-runtime/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" + "node": ">=12" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "node_modules/jest-runtime/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-runtime/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-runtime/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/jest-resolve/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-runtime/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "node_modules/jest-runtime/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, "license": "MIT", "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": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "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" + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/jest-runtime/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-runtime/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-runtime/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-runner/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-runtime/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8.6" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "node_modules/jest-runtime/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "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": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "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" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/jest-runtime/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-runtime/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-runtime/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/jest-snapshot": { @@ -21204,6 +24144,45 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, "node_modules/jimp-compact": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", @@ -24659,9 +27638,9 @@ } }, "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", "dev": true, "funding": [ { @@ -25768,26 +28747,19 @@ } }, "node_modules/react-test-renderer": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.0.0.tgz", - "integrity": "sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", + "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", "dev": true, "license": "MIT", "dependencies": { - "react-is": "^19.0.0", - "scheduler": "^0.25.0" + "react-is": "^19.2.0", + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.0.0" + "react": "^19.2.0" } }, - "node_modules/react-test-renderer/node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", - "dev": true, - "license": "MIT" - }, "node_modules/react-timer-mixin": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz", @@ -26081,16 +29053,6 @@ "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", "license": "MIT" }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -27095,6 +30057,32 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/string-width/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -27209,6 +30197,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -27894,57 +30896,6 @@ "node": ">=10" } }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -28934,13 +31885,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", @@ -29279,6 +32223,25 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -29445,16 +32408,6 @@ "node": ">=12" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 5dc227684..dfba4ed62 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "react": "19.2.0", "react-compiler-runtime": "^1.0.0", "react-dom": "19.2.0", - "react-hook-form": "^7.54.2", + "react-hook-form": "^7.71.1", "react-native": "0.83.1", "react-native-audio-concat": "^0.9.0", "react-native-element-dropdown": "2.12.4", @@ -155,12 +155,12 @@ "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", "react-native-worklets": "^0.7.2", - "tailwind-merge": "^3.3.0", + "tailwind-merge": "^3.4.0", "tailwindcss-animate": "^1.0.7", "testflight-dev-deploy": "^0.0.8", "vaul": "^1.1.2", - "zod": "^4.1.11", - "zustand": "^5.0.3" + "zod": "^4.3.6", + "zustand": "^5.0.11" }, "devDependencies": { "@babel/core": "^7.20.0", @@ -181,7 +181,7 @@ "babel-preset-expo": "~55.0.0", "cross-env": "^10.1.0", "default-gateway": "^7.2.2", - "drizzle-kit": "^0.31.4", + "drizzle-kit": "^0.31.9", "drizzle-orm": "^0.45.1", "eslint": "^9.38.0", "eslint-plugin-import": "^2.31.0", @@ -189,23 +189,22 @@ "eslint-plugin-react-compiler": "^19.1.0-rc.2", "eslint-plugin-react-hooks": "^7.0.1", "expo-atlas": "^0.4.0", - "jest": "^29.2.1", + "jest": "^30.2.0", "jest-expo": "~55.0.6", "jiti": "^2.6.1", - "knip": "^5.64.2", + "knip": "^5.83.1", "metro-react-native-babel-transformer": "^0.77.0", "patch-package": "^8.0.1", - "prettier": "^3.6.2", + "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", "react-native-svg-transformer": "^1.5.1", - "react-test-renderer": "19.0.0", + "react-test-renderer": "19.2.0", "sharp-cli": "^5.2.0", "supabase": "^2.48.3", - "tailwindcss": "^3.4.17", - "ts-node": "^10.9.2", - "tsx": "^4.19.2", + "tailwindcss": "^3.4.19", + "tsx": "^4.21.0", "typescript": "~5.9.2", - "typescript-eslint": "^8.20.0" + "typescript-eslint": "^8.55.0" }, "overrides": { "ajv": "^6.12.6", From 3e2ce05003301c1a62ea3ce46b7afd90101c1253 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 16:24:00 -0600 Subject: [PATCH 037/143] migrate dependencies to expo doctor suggestions --- app.config.ts | 1 + package-lock.json | 24723 ++++++++++++++++++-------------------------- package.json | 17 +- 3 files changed, 9987 insertions(+), 14754 deletions(-) diff --git a/app.config.ts b/app.config.ts index a43944ddb..eb17987e6 100644 --- a/app.config.ts +++ b/app.config.ts @@ -110,6 +110,7 @@ export default ({ config }: ConfigContext): ExpoConfig => 'expo-router', // TODO: migrate existing localization to expo-localization 'expo-localization', + 'expo-asset', 'expo-audio', [ 'expo-splash-screen', diff --git a/package-lock.json b/package-lock.json index d78c74ec3..675cf51b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,8 +26,8 @@ "@powersync/web": "^1.27.1", "@quidone/react-native-wheel-picker": "^1.6.1", "@react-native-async-storage/async-storage": "2.2.0", - "@react-native-community/netinfo": "11.5.2", - "@react-native-community/slider": "5.1.2", + "@react-native-community/netinfo": "11.4.1", + "@react-native-community/slider": "5.1.1", "@react-native-documents/picker": "^12.0.1", "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/native": "^7.1.6", @@ -57,6 +57,7 @@ "eslint-plugin-drizzle": "^0.2.3", "expo": "^55.0.0-preview.10", "expo-application": "~55.0.5", + "expo-asset": "~55.0.4", "expo-audio": "~55.0.5", "expo-build-properties": "~55.0.6", "expo-clipboard": "~55.0.5", @@ -94,18 +95,18 @@ "react-native-audio-concat": "^0.9.0", "react-native-element-dropdown": "2.12.4", "react-native-gesture-handler": "~2.30.0", - "react-native-keyboard-controller": "1.20.7", + "react-native-keyboard-controller": "1.20.4", "react-native-onboarding": "^1.0.6", "react-native-pager-view": "8.0.0", "react-native-reanimated": "^4.2.1", "react-native-reorderable-list": "^0.18.0", "react-native-safe-area-context": "~5.6.0", - "react-native-screens": "~4.23.0", - "react-native-svg": "15.15.3", + "react-native-screens": "4.22.0", + "react-native-svg": "15.15.1", "react-native-url-polyfill": "^3.0.0", "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", - "react-native-worklets": "^0.7.2", + "react-native-worklets": "0.7.2", "tailwind-merge": "^3.4.0", "tailwindcss-animate": "^1.0.7", "testflight-dev-deploy": "^0.0.8", @@ -124,7 +125,7 @@ "@total-typescript/ts-reset": "^0.6.1", "@types/bidirectional-map": "^1.0.4", "@types/default-gateway": "^7.2.2", - "@types/jest": "^30.0.0", + "@types/jest": "29.5.14", "@types/node": "^25.2.2", "@types/react": "~19.2.2", "@types/react-test-renderer": "^19.0.0", @@ -140,7 +141,7 @@ "eslint-plugin-react-compiler": "^19.1.0-rc.2", "eslint-plugin-react-hooks": "^7.0.1", "expo-atlas": "^0.4.0", - "jest": "^30.2.0", + "jest": "~29.7.0", "jest-expo": "~55.0.6", "jiti": "^2.6.1", "knip": "^5.83.1", @@ -5684,93 +5685,44 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/console/node_modules/jest-message-util": { + "node_modules/@jest/core": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", + "@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/stack-utils": "^2.0.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "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.4", "pretty-format": "^29.7.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "strip-ansi": "^6.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@jest/core": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", - "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", - "dev": true, - "license": "MIT", - "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": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.2.0", - "jest-config": "30.2.0", - "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" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -5781,14352 +5733,10098 @@ } } }, - "node_modules/@jest/core/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", - "dev": true, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "@jest/types": "^29.6.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" + "jest-get-type": "^29.6.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jest/core/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@jest/core/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", + "@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.18", "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/@jest/core/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@jest/core/node_modules/jest-snapshot": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", - "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", - "dev": true, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "pretty-format": "30.2.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/jest-validate": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", - "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.2.0" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/jest-watcher": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", - "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", - "dev": true, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "license": "MIT", "dependencies": { - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.2.0", - "string-length": "^4.0.2" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/core/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">=10" - } - }, - "node_modules/@jest/core/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", + "node_modules/@journeyapps/wa-sqlite": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@journeyapps/wa-sqlite/-/wa-sqlite-1.4.1.tgz", + "integrity": "sha512-xAWys6opteBpWaKmHG1pZvBmQViEKFK/46YVEkYlWxa4F9VAG0gIjCpfIdcQvXdqZf7X3ByADGmNBcR/cJ1DqQ==", + "hasInstallScript": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jest/create-cache-key-function": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", - "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6.0.0" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@jest/environment/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jest/environment/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@legendapp/list": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@legendapp/list/-/list-2.0.19.tgz", + "integrity": "sha512-zDWg8yg0smKxxk+M7gwAbZAnf5uczohPA+IjqLSkImz7+e9ytxeT0Mq35RBO9RTKODOXfV/aIgm1uqUHLBEdmg==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "use-sync-external-store": "^1.5.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@jest/environment/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@libsql/client": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", + "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "@libsql/core": "^0.17.0", + "@libsql/hrana-client": "^0.9.0", + "js-base64": "^3.7.5", + "libsql": "^0.5.22", + "promise-limit": "^2.7.0" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@libsql/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", + "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "js-base64": "^3.7.5" } }, - "node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "node_modules/@libsql/darwin-arm64": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.5.22.tgz", + "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@jest/expect/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@libsql/darwin-x64": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.5.22.tgz", + "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@jest/expect/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/@libsql/hrana-client": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", + "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", "dev": true, "license": "MIT", "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@libsql/isomorphic-ws": "^0.1.5", + "cross-fetch": "^4.0.0", + "js-base64": "^3.7.5", + "node-fetch": "^3.3.2" } }, - "node_modules/@jest/expect/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/@libsql/isomorphic-ws": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", + "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@types/ws": "^8.5.4", + "ws": "^8.13.0" } }, - "node_modules/@jest/expect/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/@libsql/linux-arm-gnueabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-gnueabihf/-/linux-arm-gnueabihf-0.5.22.tgz", + "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/expect/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/@libsql/linux-arm-musleabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-musleabihf/-/linux-arm-musleabihf-0.5.22.tgz", + "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/expect/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@libsql/linux-arm64-gnu": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.5.22.tgz", + "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/expect/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@libsql/linux-arm64-musl": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.5.22.tgz", + "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "node_modules/@libsql/linux-x64-gnu": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.5.22.tgz", + "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/fake-timers/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/@libsql/linux-x64-musl": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.5.22.tgz", + "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/win32-x64-msvc": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.5.22.tgz", + "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } } }, - "node_modules/@jest/fake-timers/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/@motionone/animation": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", + "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@motionone/easing": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" } }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@motionone/dom": { + "version": "10.12.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", + "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@motionone/animation": "^10.12.0", + "@motionone/generators": "^10.12.0", + "@motionone/types": "^10.12.0", + "@motionone/utils": "^10.12.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" } }, - "node_modules/@jest/fake-timers/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@motionone/easing": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", + "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" } }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, + "node_modules/@motionone/generators": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", + "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "dependencies": { + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, + "node_modules/@motionone/types": { + "version": "10.17.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", + "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", + "license": "MIT" + }, + "node_modules/@motionone/utils": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", + "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@motionone/types": "^10.17.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" } }, - "node_modules/@jest/globals/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" } }, - "node_modules/@jest/globals/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@neon-rs/load": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", + "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", "dev": true, + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "license": "MIT", + "optional": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/@jest/globals/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">= 8" } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 8" } }, - "node_modules/@jest/pattern/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=12.4.0" } }, - "node_modules/@jest/reporters": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", - "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", - "dev": true, + "node_modules/@op-engineering/op-sqlite": { + "version": "15.2.5", + "resolved": "https://registry.npmjs.org/@op-engineering/op-sqlite/-/op-sqlite-15.2.5.tgz", + "integrity": "sha512-Vmgwt0AzY7qoge3X6EONhsb5NlM2yoQUF0/lseUWBelfc9BUili7/DFsFsS73cvtYWlwPpqeTGOoce5mzHozBw==", "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, + "workspaces": [ + "example", + "node" + ], "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "react": "*", + "react-native": "*" } }, - "node_modules/@jest/reporters/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": ">=8.0.0" } }, - "node_modules/@jest/reporters/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/api-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", + "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "@opentelemetry/api": "^1.3.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8.0.0" } }, - "node_modules/@jest/reporters/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", + "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", + "license": "Apache-2.0", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", + "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", + "license": "Apache-2.0", "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-exporter-base": "0.208.0", + "@opentelemetry/otlp-transformer": "0.208.0", + "@opentelemetry/sdk-logs": "0.208.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@jest/reporters/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", + "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", + "license": "Apache-2.0", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-transformer": "0.208.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", + "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", + "license": "Apache-2.0", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/sdk-logs": "0.208.0", + "@opentelemetry/sdk-metrics": "2.2.0", + "@opentelemetry/sdk-trace-base": "2.2.0", + "protobufjs": "^7.3.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/reporters/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, "engines": { - "node": ">=12" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/resources": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", + "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, "engines": { - "node": ">=12" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", + "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "dev": true, - "license": "ISC", + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", + "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", + "license": "Apache-2.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/sdk-metrics": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", + "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.19.0 || >=20.6.0" }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/@jest/reporters/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", + "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^2.0.1" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "^18.19.0 || >=20.6.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@jest/reporters/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", + "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", + "license": "Apache-2.0", "engines": { "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/reporters/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@oxc-resolver/binding-android-arm-eabi": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.17.1.tgz", + "integrity": "sha512-+VuZyMYYaap5uDAU1xDU3Kul0FekLqpBS8kI5JozlWfYQKnc/HsZg2gHPkQrj0SC9lt74WMNCfOzZZJlYXSdEQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/@oxc-resolver/binding-android-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.17.1.tgz", + "integrity": "sha512-YlDDTjvOEKhom/cRSVsXsMVeXVIAM9PJ/x2mfe08rfuS0iIEfJd8PngKbEIhG72WPxleUa+vkEZj9ncmC14z3Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@oxc-resolver/binding-darwin-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.17.1.tgz", + "integrity": "sha512-HOYYLSY4JDk14YkXaz/ApgJYhgDP4KsG8EZpgpOxdszGW9HmIMMY/vXqVKYW74dSH+GQkIXYxBrEh3nv+XODVg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@jest/reporters/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@oxc-resolver/binding-darwin-x64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.17.1.tgz", + "integrity": "sha512-JHPJbsa5HvPq2/RIdtGlqfaG9zV2WmgvHrKTYmlW0L5esqtKCBuetFudXTBzkNcyD69kSZLzH92AzTr6vFHMFg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@jest/reporters/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/@oxc-resolver/binding-freebsd-x64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.17.1.tgz", + "integrity": "sha512-UD1FRC8j8xZstFXYsXwQkNmmg7vUbee006IqxokwDUUA+xEgKZDpLhBEiVKM08Urb+bn7Q0gn6M1pyNR0ng5mg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@jest/snapshot-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", - "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", + "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.17.1.tgz", + "integrity": "sha512-wFWC1wyf2ROFWTxK5x0Enm++DSof3EBQ/ypyAesMDLiYxOOASDoMOZG1ylWUnlKaCt5W7eNOWOzABpdfFf/ssA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.17.1.tgz", + "integrity": "sha512-k/hUif0GEBk/csSqCfTPXb8AAVs1NNWCa/skBghvNbTtORcWfOVqJ3mM+2pE189+enRm4UnryLREu5ysI0kXEQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.17.1.tgz", + "integrity": "sha512-Cwm6A071ww60QouJ9LoHAwBgEoZzHQ0Qaqk2E7WLfBdiQN9mLXIDhnrpn04hlRElRPhLiu/dtg+o5PPLvaINXQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "node_modules/@oxc-resolver/binding-linux-arm64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.17.1.tgz", + "integrity": "sha512-+hwlE2v3m0r3sk93SchJL1uyaKcPjf+NGO/TD2DZUDo+chXx7FfaEj0nUMewigSt7oZ2sQN9Z4NJOtUa75HE5Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.17.1.tgz", + "integrity": "sha512-bO+rsaE5Ox8cFyeL5Ct5tzot1TnQpFa/Wmu5k+hqBYSH2dNVDGoi0NizBN5QV8kOIC6O5MZr81UG4yW/2FyDTA==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/test-sequencer": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", - "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.17.1.tgz", + "integrity": "sha512-B/P+hxKQ1oX4YstI9Lyh4PGzqB87Ddqj/A4iyRBbPdXTcxa+WW3oRLx1CsJKLmHPdDk461Hmbghq1Bm3pl+8Aw==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/test-result": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/test-sequencer/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.17.1.tgz", + "integrity": "sha512-ulp2H3bFXzd/th2maH+QNKj5qgOhJ3v9Yspdf1svTw3CDOuuTl6sRKsWQ7MUw0vnkSNvQndtflBwVXgzZvURsQ==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.17.1.tgz", + "integrity": "sha512-LAXYVe3rKk09Zo9YKF2ZLBcH8sz8Oj+JIyiUxiHtq0hiYLMsN6dOpCf2hzQEjPAmsSEA/hdC1PVKeXo+oma8mQ==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/test-sequencer/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "node_modules/@oxc-resolver/binding-linux-x64-gnu": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.17.1.tgz", + "integrity": "sha512-3RAhxipMKE8RCSPn7O//sj440i+cYTgYbapLeOoDvQEt6R1QcJjTsFgI4iz99FhVj3YbPxlZmcLB5VW+ipyRTA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/test-sequencer/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "node_modules/@oxc-resolver/binding-linux-x64-musl": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.17.1.tgz", + "integrity": "sha512-wpjMEubGU8r9VjZTLdZR3aPHaBqTl8Jl8F4DBbgNoZ+yhkhQD1/MGvY70v2TLnAI6kAHSvcqgfvaqKDa2iWsPQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "node_modules/@oxc-resolver/binding-openharmony-arm64": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.17.1.tgz", + "integrity": "sha512-XIE4w17RYAVIgx+9Gs3deTREq5tsmalbatYOOBGNdH7n0DfTE600c7wYXsp7ANc3BPDXsInnOzXDEPCvO1F6cg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] }, - "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/@oxc-resolver/binding-wasm32-wasi": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.17.1.tgz", + "integrity": "sha512-Lqi5BlHX3zS4bpSOkIbOKVf7DIk6Gvmdifr2OuOI58eUUyP944M8/OyaB09cNpPy9Vukj7nmmhOzj8pwLgAkIg==", + "cpu": [ + "wasm32" + ], "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "@napi-rs/wasm-runtime": "^1.1.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "node": ">=14.0.0" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.17.1.tgz", + "integrity": "sha512-l6lTcLBQVj1HNquFpXSsrkCIM8X5Hlng5YNQJrg00z/KyovvDV5l3OFhoRyZ+aLBQ74zUnMRaJZC7xcBnHyeNg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@jest/test-sequencer/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.17.1.tgz", + "integrity": "sha512-VTzVtfnCCsU/6GgvursWoyZrhe3Gj/RyXzDWmh4/U1Y3IW0u1FZbp+hCIlBL16pRPbDc5YvXVtCOnA41QOrOoQ==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@jest/test-sequencer/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@oxc-resolver/binding-win32-x64-msvc": { + "version": "11.17.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.17.1.tgz", + "integrity": "sha512-jRPVU+6/12baj87q2+UGRh30FBVBzqKdJ7rP/mSqiL1kpNQB9yZ1j0+m3sru1m+C8hiFK7lBFwjUtYUBI7+UpQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@jest/transform/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://opencollective.com/pkgr" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@posthog/core": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.21.0.tgz", + "integrity": "sha512-0a2JUIX1vhduP2El/6/J8s5AeYAurIoufQGFgMiGnJE5ajd63o9LFocu2vFYYBnIOmy75y4ADNeW8zSl1keEQQ==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "cross-spawn": "^7.0.6" } }, - "node_modules/@journeyapps/wa-sqlite": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@journeyapps/wa-sqlite/-/wa-sqlite-1.4.1.tgz", - "integrity": "sha512-xAWys6opteBpWaKmHG1pZvBmQViEKFK/46YVEkYlWxa4F9VAG0gIjCpfIdcQvXdqZf7X3ByADGmNBcR/cJ1DqQ==", - "hasInstallScript": true + "node_modules/@posthog/types": { + "version": "1.345.2", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.345.2.tgz", + "integrity": "sha512-VZ1I+bp1YbYG4pSN84YAYCfvUyG5PmKIHx0ucZ6HO23sRgMZw381LLzfBAtmsA4tQ9+uMLigCTIZ4sDMl4ADFw==", + "license": "MIT" }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "node_modules/@powersync/attachments": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@powersync/attachments/-/attachments-2.4.2.tgz", + "integrity": "sha512-RXAzMVd1MCZm4VqP6V3rvp29xGCVHzfktV+tWVgSmS3GhvHL3mp70h7D/kcHOcHcPtCASXaasKDxXbuswlbaBw==", + "license": "Apache-2.0", + "peerDependencies": { + "@powersync/common": "^1.46.0" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "license": "MIT", + "node_modules/@powersync/common": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", + "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "async-mutex": "^0.5.0", + "event-iterator": "^2.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" + "node_modules/@powersync/drizzle-driver": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@powersync/drizzle-driver/-/drizzle-driver-0.7.2.tgz", + "integrity": "sha512-urzkvimN44qWufmNonDdvwI3tcN9qFA0XB6BpoQDXFonkRzjunnZiUHas558PdDiw98AEJ4bD+FbtvvgJKzDcw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.1" + }, + "peerDependencies": { + "@powersync/common": "^1.46.0", + "drizzle-orm": "<1.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "license": "MIT", + "node_modules/@powersync/op-sqlite": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@powersync/op-sqlite/-/op-sqlite-0.8.0.tgz", + "integrity": "sha512-1FNzuSipyGCtxROkhg2DG7mOZjOtPMTj+YEgHqSVFuMdrkzjx31jmf+Lw5VI+UeCWNSUNuUcD/UMrrEUAmRxBw==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@powersync/common": "1.46.0", + "async-lock": "^1.4.1" + }, + "peerDependencies": { + "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0 || ^15.0.0", + "@powersync/common": "^1.46.0", + "react": "*", + "react-native": "*" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node_modules/@powersync/react": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@powersync/react/-/react-1.8.2.tgz", + "integrity": "sha512-15z8JKt66dq2bqX2P7QQ71eUIx3DWLc5WMdB/PDc9MIAHf1SERqKfzbzWGxKplQGHC/GogDA7G8IDoRadhNXOA==", + "license": "Apache-2.0", + "peerDependencies": { + "@powersync/common": "^1.41.1", + "react": "*" } }, - "node_modules/@legendapp/list": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@legendapp/list/-/list-2.0.19.tgz", - "integrity": "sha512-zDWg8yg0smKxxk+M7gwAbZAnf5uczohPA+IjqLSkImz7+e9ytxeT0Mq35RBO9RTKODOXfV/aIgm1uqUHLBEdmg==", - "license": "MIT", + "node_modules/@powersync/react-native": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@powersync/react-native/-/react-native-1.29.0.tgz", + "integrity": "sha512-U7wg1v4WA/STdyeHVb2Z2SUEVG6fM7JZZvYt+7xL6bd3ORLxloAIxIrORFZcsOYzaKjDL9D+R8wkSXFy2s5vbg==", + "license": "Apache-2.0", "dependencies": { - "use-sync-external-store": "^1.5.0" + "@powersync/common": "1.46.0", + "@powersync/react": "1.8.2", + "async-mutex": "^0.5.0" }, "peerDependencies": { + "@journeyapps/react-native-quick-sqlite": "^2.5.0", + "@powersync/common": "^1.46.0", "react": "*", "react-native": "*" + }, + "peerDependenciesMeta": { + "@journeyapps/react-native-quick-sqlite": { + "optional": true + } } }, - "node_modules/@libsql/client": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", - "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", - "dev": true, - "license": "MIT", + "node_modules/@powersync/tanstack-react-query": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@powersync/tanstack-react-query/-/tanstack-react-query-0.1.14.tgz", + "integrity": "sha512-mx1TR+Syh3PtoGaajPbHIZe5S8oJLtxBfmNaTZaHzhwchcrZR/EoJfiS+7hdwwx3mb3YOjKmZbqAx1YKlZwUgw==", + "license": "Apache-2.0", "dependencies": { - "@libsql/core": "^0.17.0", - "@libsql/hrana-client": "^0.9.0", - "js-base64": "^3.7.5", - "libsql": "^0.5.22", - "promise-limit": "^2.7.0" + "@powersync/common": "1.46.0", + "@powersync/react": "1.8.2", + "@tanstack/react-query": "^5.70.0" + }, + "peerDependencies": { + "@powersync/common": "^1.46.0", + "react": "*" } }, - "node_modules/@libsql/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", - "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", - "dev": true, - "license": "MIT", + "node_modules/@powersync/web": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@powersync/web/-/web-1.32.0.tgz", + "integrity": "sha512-AYXF+0x5DTfyjPc2Eh89GZLTSanCZYqxsE/js1C9yRzI9+e3NkAjnX7r9n3FFkJS9PSlHlctDMxyb5x2epvMJg==", + "license": "Apache-2.0", "dependencies": { - "js-base64": "^3.7.5" + "@powersync/common": "1.46.0", + "async-mutex": "^0.5.0", + "bson": "^6.10.4", + "comlink": "^4.4.2", + "commander": "^12.1.0" + }, + "bin": { + "powersync-web": "bin/powersync.cjs" + }, + "peerDependencies": { + "@journeyapps/wa-sqlite": "^1.4.1", + "@powersync/common": "^1.46.0" } }, - "node_modules/@libsql/darwin-arm64": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.5.22.tgz", - "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" }, - "node_modules/@libsql/darwin-x64": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.5.22.tgz", - "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" }, - "node_modules/@libsql/hrana-client": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", - "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@libsql/isomorphic-ws": "^0.1.5", - "cross-fetch": "^4.0.0", - "js-base64": "^3.7.5", - "node-fetch": "^3.3.2" - } + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" }, - "node_modules/@libsql/isomorphic-ws": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", - "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", - "dev": true, - "license": "MIT", + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", "dependencies": { - "@types/ws": "^8.5.4", - "ws": "^8.13.0" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/@libsql/linux-arm-gnueabihf": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm-gnueabihf/-/linux-arm-gnueabihf-0.5.22.tgz", - "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-arm-musleabihf": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm-musleabihf/-/linux-arm-musleabihf-0.5.22.tgz", - "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@libsql/linux-arm64-gnu": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.5.22.tgz", - "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" }, - "node_modules/@libsql/linux-arm64-musl": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.5.22.tgz", - "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" }, - "node_modules/@libsql/linux-x64-gnu": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.5.22.tgz", - "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" }, - "node_modules/@libsql/linux-x64-musl": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.5.22.tgz", - "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" }, - "node_modules/@libsql/win32-x64-msvc": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.5.22.tgz", - "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", - "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", - "dev": true, + "node_modules/@quidone/react-native-wheel-picker": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@quidone/react-native-wheel-picker/-/react-native-wheel-picker-1.6.1.tgz", + "integrity": "sha512-EFmrqM5k8OUr8k44cU4YRg2WPQwwG+ZtUr04qESNqhOFlvktFCrq6wH2PwnMzBel0Z+9t2PgsMh/2uoTse5RfA==", "license": "MIT", "dependencies": { - "@hono/node-server": "^1.19.9", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.2.1", - "express-rate-limit": "^8.2.1", - "hono": "^4.11.4", - "jose": "^6.1.3", - "json-schema-typed": "^8.0.2", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.1" + "@rozhkov/react-useful-hooks": "^1.0.10", + "date-fns": "^4.1.0" }, "engines": { - "node": ">=18" + "node": ">= 16.0.0" }, "peerDependencies": { - "@cfworker/json-schema": "^4.1.1", - "zod": "^3.25 || ^4.0" - }, - "peerDependenciesMeta": { - "@cfworker/json-schema": { - "optional": true - }, - "zod": { - "optional": false - } - } - }, - "node_modules/@motionone/animation": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", - "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", - "license": "MIT", - "dependencies": { - "@motionone/easing": "^10.18.0", - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" + "react": ">=16.8", + "react-native": ">=0.71.6" } }, - "node_modules/@motionone/dom": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", - "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", - "license": "MIT", - "dependencies": { - "@motionone/animation": "^10.12.0", - "@motionone/generators": "^10.12.0", - "@motionone/types": "^10.12.0", - "@motionone/utils": "^10.12.0", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" - } + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" }, - "node_modules/@motionone/easing": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", - "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", - "license": "MIT", - "dependencies": { - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" - } + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" }, - "node_modules/@motionone/generators": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", - "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", "license": "MIT", "dependencies": { - "@motionone/types": "^10.17.1", - "@motionone/utils": "^10.18.0", - "tslib": "^2.3.1" + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@motionone/types": { - "version": "10.17.1", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", - "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", - "license": "MIT" - }, - "node_modules/@motionone/utils": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", - "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", "license": "MIT", "dependencies": { - "@motionone/types": "^10.17.1", - "hey-listen": "^1.0.8", - "tslib": "^2.3.1" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", - "dev": true, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", "license": "MIT", - "optional": true, "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@neon-rs/load": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", - "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "license": "MIT", - "optional": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">= 8" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", "license": "MIT", - "engines": { - "node": ">= 8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", "license": "MIT", - "engines": { - "node": ">=12.4.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@op-engineering/op-sqlite": { - "version": "15.2.5", - "resolved": "https://registry.npmjs.org/@op-engineering/op-sqlite/-/op-sqlite-15.2.5.tgz", - "integrity": "sha512-Vmgwt0AzY7qoge3X6EONhsb5NlM2yoQUF0/lseUWBelfc9BUili7/DFsFsS73cvtYWlwPpqeTGOoce5mzHozBw==", + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", "license": "MIT", - "workspaces": [ - "example", - "node" - ], + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", - "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": ">=8.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@opentelemetry/core": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", - "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", - "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/otlp-exporter-base": "0.208.0", - "@opentelemetry/otlp-transformer": "0.208.0", - "@opentelemetry/sdk-logs": "0.208.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", - "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-label": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", + "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/otlp-transformer": "0.208.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", - "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", - "@opentelemetry/sdk-logs": "0.208.0", - "@opentelemetry/sdk-metrics": "2.2.0", - "@opentelemetry/sdk-trace-base": "2.2.0", - "protobufjs": "^7.3.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@opentelemetry/resources": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", - "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.5.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", - "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/sdk-logs": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", - "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/sdk-metrics": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", - "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.8.tgz", + "integrity": "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0" + "@radix-ui/react-context": "1.1.3", + "@radix-ui/react-primitive": "2.1.4" }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.3.tgz", + "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==", + "license": "MIT", "peerDependencies": { - "@opentelemetry/api": ">=1.9.0 <1.10.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", - "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", - "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@oxc-resolver/binding-android-arm-eabi": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.17.1.tgz", - "integrity": "sha512-+VuZyMYYaap5uDAU1xDU3Kul0FekLqpBS8kI5JozlWfYQKnc/HsZg2gHPkQrj0SC9lt74WMNCfOzZZJlYXSdEQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@oxc-resolver/binding-android-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.17.1.tgz", - "integrity": "sha512-YlDDTjvOEKhom/cRSVsXsMVeXVIAM9PJ/x2mfe08rfuS0iIEfJd8PngKbEIhG72WPxleUa+vkEZj9ncmC14z3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.17.1.tgz", - "integrity": "sha512-HOYYLSY4JDk14YkXaz/ApgJYhgDP4KsG8EZpgpOxdszGW9HmIMMY/vXqVKYW74dSH+GQkIXYxBrEh3nv+XODVg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.17.1.tgz", - "integrity": "sha512-JHPJbsa5HvPq2/RIdtGlqfaG9zV2WmgvHrKTYmlW0L5esqtKCBuetFudXTBzkNcyD69kSZLzH92AzTr6vFHMFg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.17.1.tgz", - "integrity": "sha512-UD1FRC8j8xZstFXYsXwQkNmmg7vUbee006IqxokwDUUA+xEgKZDpLhBEiVKM08Urb+bn7Q0gn6M1pyNR0ng5mg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.17.1.tgz", - "integrity": "sha512-wFWC1wyf2ROFWTxK5x0Enm++DSof3EBQ/ypyAesMDLiYxOOASDoMOZG1ylWUnlKaCt5W7eNOWOzABpdfFf/ssA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.17.1.tgz", - "integrity": "sha512-k/hUif0GEBk/csSqCfTPXb8AAVs1NNWCa/skBghvNbTtORcWfOVqJ3mM+2pE189+enRm4UnryLREu5ysI0kXEQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.17.1.tgz", - "integrity": "sha512-Cwm6A071ww60QouJ9LoHAwBgEoZzHQ0Qaqk2E7WLfBdiQN9mLXIDhnrpn04hlRElRPhLiu/dtg+o5PPLvaINXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.17.1.tgz", - "integrity": "sha512-+hwlE2v3m0r3sk93SchJL1uyaKcPjf+NGO/TD2DZUDo+chXx7FfaEj0nUMewigSt7oZ2sQN9Z4NJOtUa75HE5Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.17.1.tgz", - "integrity": "sha512-bO+rsaE5Ox8cFyeL5Ct5tzot1TnQpFa/Wmu5k+hqBYSH2dNVDGoi0NizBN5QV8kOIC6O5MZr81UG4yW/2FyDTA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.17.1.tgz", - "integrity": "sha512-B/P+hxKQ1oX4YstI9Lyh4PGzqB87Ddqj/A4iyRBbPdXTcxa+WW3oRLx1CsJKLmHPdDk461Hmbghq1Bm3pl+8Aw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.17.1.tgz", - "integrity": "sha512-ulp2H3bFXzd/th2maH+QNKj5qgOhJ3v9Yspdf1svTw3CDOuuTl6sRKsWQ7MUw0vnkSNvQndtflBwVXgzZvURsQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.17.1.tgz", - "integrity": "sha512-LAXYVe3rKk09Zo9YKF2ZLBcH8sz8Oj+JIyiUxiHtq0hiYLMsN6dOpCf2hzQEjPAmsSEA/hdC1PVKeXo+oma8mQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.17.1.tgz", - "integrity": "sha512-3RAhxipMKE8RCSPn7O//sj440i+cYTgYbapLeOoDvQEt6R1QcJjTsFgI4iz99FhVj3YbPxlZmcLB5VW+ipyRTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.17.1.tgz", - "integrity": "sha512-wpjMEubGU8r9VjZTLdZR3aPHaBqTl8Jl8F4DBbgNoZ+yhkhQD1/MGvY70v2TLnAI6kAHSvcqgfvaqKDa2iWsPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-openharmony-arm64": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.17.1.tgz", - "integrity": "sha512-XIE4w17RYAVIgx+9Gs3deTREq5tsmalbatYOOBGNdH7n0DfTE600c7wYXsp7ANc3BPDXsInnOzXDEPCvO1F6cg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.17.1.tgz", - "integrity": "sha512-Lqi5BlHX3zS4bpSOkIbOKVf7DIk6Gvmdifr2OuOI58eUUyP944M8/OyaB09cNpPy9Vukj7nmmhOzj8pwLgAkIg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.17.1.tgz", - "integrity": "sha512-l6lTcLBQVj1HNquFpXSsrkCIM8X5Hlng5YNQJrg00z/KyovvDV5l3OFhoRyZ+aLBQ74zUnMRaJZC7xcBnHyeNg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.17.1.tgz", - "integrity": "sha512-VTzVtfnCCsU/6GgvursWoyZrhe3Gj/RyXzDWmh4/U1Y3IW0u1FZbp+hCIlBL16pRPbDc5YvXVtCOnA41QOrOoQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "11.17.1", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.17.1.tgz", - "integrity": "sha512-jRPVU+6/12baj87q2+UGRh30FBVBzqKdJ7rP/mSqiL1kpNQB9yZ1j0+m3sru1m+C8hiFK7lBFwjUtYUBI7+UpQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@posthog/core": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.21.0.tgz", - "integrity": "sha512-0a2JUIX1vhduP2El/6/J8s5AeYAurIoufQGFgMiGnJE5ajd63o9LFocu2vFYYBnIOmy75y4ADNeW8zSl1keEQQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.6" - } - }, - "node_modules/@posthog/types": { - "version": "1.345.2", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.345.2.tgz", - "integrity": "sha512-VZ1I+bp1YbYG4pSN84YAYCfvUyG5PmKIHx0ucZ6HO23sRgMZw381LLzfBAtmsA4tQ9+uMLigCTIZ4sDMl4ADFw==", - "license": "MIT" - }, - "node_modules/@powersync/attachments": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@powersync/attachments/-/attachments-2.4.2.tgz", - "integrity": "sha512-RXAzMVd1MCZm4VqP6V3rvp29xGCVHzfktV+tWVgSmS3GhvHL3mp70h7D/kcHOcHcPtCASXaasKDxXbuswlbaBw==", - "license": "Apache-2.0", - "peerDependencies": { - "@powersync/common": "^1.46.0" - } - }, - "node_modules/@powersync/common": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@powersync/common/-/common-1.46.0.tgz", - "integrity": "sha512-NVIORj/IvLDBF6sWHsaO6U1u7v40yZaEGpscb+etIh7D7Oyaovv2novxdW94sSjbqmLAq4L8tFmgwNwgcU96Jg==", - "license": "Apache-2.0", - "dependencies": { - "async-mutex": "^0.5.0", - "event-iterator": "^2.0.0" - } - }, - "node_modules/@powersync/drizzle-driver": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@powersync/drizzle-driver/-/drizzle-driver-0.7.2.tgz", - "integrity": "sha512-urzkvimN44qWufmNonDdvwI3tcN9qFA0XB6BpoQDXFonkRzjunnZiUHas558PdDiw98AEJ4bD+FbtvvgJKzDcw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.1" - }, - "peerDependencies": { - "@powersync/common": "^1.46.0", - "drizzle-orm": "<1.0.0" - } - }, - "node_modules/@powersync/op-sqlite": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@powersync/op-sqlite/-/op-sqlite-0.8.0.tgz", - "integrity": "sha512-1FNzuSipyGCtxROkhg2DG7mOZjOtPMTj+YEgHqSVFuMdrkzjx31jmf+Lw5VI+UeCWNSUNuUcD/UMrrEUAmRxBw==", - "license": "Apache-2.0", - "dependencies": { - "@powersync/common": "1.46.0", - "async-lock": "^1.4.1" - }, - "peerDependencies": { - "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0 || ^15.0.0", - "@powersync/common": "^1.46.0", - "react": "*", - "react-native": "*" - } - }, - "node_modules/@powersync/react": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@powersync/react/-/react-1.8.2.tgz", - "integrity": "sha512-15z8JKt66dq2bqX2P7QQ71eUIx3DWLc5WMdB/PDc9MIAHf1SERqKfzbzWGxKplQGHC/GogDA7G8IDoRadhNXOA==", - "license": "Apache-2.0", - "peerDependencies": { - "@powersync/common": "^1.41.1", - "react": "*" - } - }, - "node_modules/@powersync/react-native": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@powersync/react-native/-/react-native-1.29.0.tgz", - "integrity": "sha512-U7wg1v4WA/STdyeHVb2Z2SUEVG6fM7JZZvYt+7xL6bd3ORLxloAIxIrORFZcsOYzaKjDL9D+R8wkSXFy2s5vbg==", - "license": "Apache-2.0", - "dependencies": { - "@powersync/common": "1.46.0", - "@powersync/react": "1.8.2", - "async-mutex": "^0.5.0" - }, - "peerDependencies": { - "@journeyapps/react-native-quick-sqlite": "^2.5.0", - "@powersync/common": "^1.46.0", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@journeyapps/react-native-quick-sqlite": { - "optional": true - } - } - }, - "node_modules/@powersync/tanstack-react-query": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@powersync/tanstack-react-query/-/tanstack-react-query-0.1.14.tgz", - "integrity": "sha512-mx1TR+Syh3PtoGaajPbHIZe5S8oJLtxBfmNaTZaHzhwchcrZR/EoJfiS+7hdwwx3mb3YOjKmZbqAx1YKlZwUgw==", - "license": "Apache-2.0", - "dependencies": { - "@powersync/common": "1.46.0", - "@powersync/react": "1.8.2", - "@tanstack/react-query": "^5.70.0" - }, - "peerDependencies": { - "@powersync/common": "^1.46.0", - "react": "*" - } - }, - "node_modules/@powersync/web": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@powersync/web/-/web-1.32.0.tgz", - "integrity": "sha512-AYXF+0x5DTfyjPc2Eh89GZLTSanCZYqxsE/js1C9yRzI9+e3NkAjnX7r9n3FFkJS9PSlHlctDMxyb5x2epvMJg==", - "license": "Apache-2.0", - "dependencies": { - "@powersync/common": "1.46.0", - "async-mutex": "^0.5.0", - "bson": "^6.10.4", - "comlink": "^4.4.2", - "commander": "^12.1.0" - }, - "bin": { - "powersync-web": "bin/powersync.cjs" - }, - "peerDependencies": { - "@journeyapps/wa-sqlite": "^1.4.1", - "@powersync/common": "^1.46.0" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, - "node_modules/@quidone/react-native-wheel-picker": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@quidone/react-native-wheel-picker/-/react-native-wheel-picker-1.6.1.tgz", - "integrity": "sha512-EFmrqM5k8OUr8k44cU4YRg2WPQwwG+ZtUr04qESNqhOFlvktFCrq6wH2PwnMzBel0Z+9t2PgsMh/2uoTse5RfA==", - "license": "MIT", - "dependencies": { - "@rozhkov/react-useful-hooks": "^1.0.10", - "date-fns": "^4.1.0" - }, - "engines": { - "node": ">= 16.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-native": ">=0.71.6" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", - "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", - "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", - "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-checkbox": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", - "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", - "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", - "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-focus-guards": "1.1.3", - "@radix-ui/react-focus-scope": "1.1.7", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", - "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", - "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-escape-keydown": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", - "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", - "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", - "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", - "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", - "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popper": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", - "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", - "license": "MIT", - "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-rect": "1.1.1", - "@radix-ui/react-use-size": "1.1.1", - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", - "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", - "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", - "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.8.tgz", - "integrity": "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-context": "1.1.3", - "@radix-ui/react-primitive": "2.1.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.3.tgz", - "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", - "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-slot": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", - "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", - "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-select": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", - "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-focus-guards": "1.1.3", - "@radix-ui/react-focus-scope": "1.1.7", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.8", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-visually-hidden": "1.2.3", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slider": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", - "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-switch": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", - "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-use-size": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", - "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.11", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", - "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", - "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.11", - "@radix-ui/react-toggle": "1.1.10", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", - "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.8", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-visually-hidden": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", - "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", - "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", - "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", - "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", - "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", - "license": "MIT", - "dependencies": { - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", - "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", - "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", - "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", - "license": "MIT" - }, - "node_modules/@react-native-async-storage/async-storage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", - "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", - "license": "MIT", - "dependencies": { - "merge-options": "^3.0.4" - }, - "peerDependencies": { - "react-native": "^0.0.0-0 || >=0.65 <1.0" - } - }, - "node_modules/@react-native-community/cli": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", - "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-clean": "20.1.1", - "@react-native-community/cli-config": "20.1.1", - "@react-native-community/cli-doctor": "20.1.1", - "@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.4.1", - "deepmerge": "^4.3.0", - "execa": "^5.0.0", - "find-up": "^5.0.0", - "fs-extra": "^8.1.0", - "graceful-fs": "^4.1.3", - "picocolors": "^1.1.1", - "prompts": "^2.4.2", - "semver": "^7.5.2" - }, - "bin": { - "rnc-cli": "build/bin.js" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@react-native-community/cli-clean": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", - "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-glob": "^3.3.2", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-config": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", - "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "cosmiconfig": "^9.0.0", - "deepmerge": "^4.3.0", - "fast-glob": "^3.3.2", - "joi": "^17.2.1", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-config-android": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", - "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "fast-glob": "^3.3.2", - "fast-xml-parser": "^4.4.1", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-config-apple": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", - "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-glob": "^3.3.2", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-doctor": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", - "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-config": "20.1.1", - "@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.8", - "deepmerge": "^4.3.0", - "envinfo": "^7.13.0", - "execa": "^5.0.0", - "node-stream-zip": "^1.9.1", - "ora": "^5.4.1", - "picocolors": "^1.1.1", - "semver": "^7.5.2", - "wcwidth": "^1.0.1", - "yaml": "^2.2.1" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", - "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-config-android": "20.1.1", - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "logkitty": "^0.7.1", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-platform-apple": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", - "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-config-apple": "20.1.1", - "@react-native-community/cli-tools": "20.1.1", - "execa": "^5.0.0", - "fast-xml-parser": "^4.4.1", - "picocolors": "^1.1.1" - } - }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", - "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-platform-apple": "20.1.1" - } - }, - "node_modules/@react-native-community/cli-server-api": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", - "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "20.1.1", - "body-parser": "^1.20.3", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.1", - "nocache": "^3.0.1", - "open": "^6.2.0", - "pretty-format": "^29.7.0", - "serve-static": "^1.13.1", - "strict-url-sanitise": "0.0.1", - "ws": "^6.2.3" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/@react-native-community/cli-tools": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", - "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vscode/sudo-prompt": "^9.0.0", - "appdirsjs": "^1.2.4", - "execa": "^5.0.0", - "find-up": "^5.0.0", - "launch-editor": "^2.9.1", - "mime": "^2.4.1", - "ora": "^5.4.1", - "picocolors": "^1.1.1", - "prompts": "^2.4.2", - "semver": "^7.5.2" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native-community/cli-types": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", - "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", - "dev": true, - "license": "MIT", - "dependencies": { - "joi": "^17.2.1" - } - }, - "node_modules/@react-native-community/cli/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@react-native-community/cli/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native-community/netinfo": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.5.2.tgz", - "integrity": "sha512-/g0m65BtX9HU+bPiCH2517bOHpEIUsGrWFXDzi1a5nNKn5KujQgm04WhL7/OSXWKHyrT8VVtUoJA0XKRxueBpQ==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": ">=0.59" - } - }, - "node_modules/@react-native-community/slider": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.2.tgz", - "integrity": "sha512-UV/MjCyCtSjS5BQDrrGIMmCXm309xEG6XbR0Dj65kzTraJSVDxSjQS2uBUXgX+5SZUOCzCxzv3OufOZBdtQY4w==", - "license": "MIT" - }, - "node_modules/@react-native-documents/picker": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", - "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", - "license": "MIT", - "funding": { - "url": "https://github.com/react-native-documents/document-picker?sponsor=1" - }, - "peerDependencies": { - "react": "*", - "react-native": ">=0.79.0" - } - }, - "node_modules/@react-native/assets-registry": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", - "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", - "license": "MIT", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", - "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.83.1" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/babel-preset": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", - "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.4", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.25.4", - "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-react-display-name": "^7.24.7", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.25.2", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.83.1", - "babel-plugin-syntax-hermes-parser": "0.32.0", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", - "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.32.0" - } - }, - "node_modules/@react-native/codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", - "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/parser": "^7.25.3", - "glob": "^7.1.1", - "hermes-parser": "0.32.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/community-cli-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", - "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", - "license": "MIT", - "dependencies": { - "@react-native/dev-middleware": "0.83.1", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "metro": "^0.83.3", - "metro-config": "^0.83.3", - "metro-core": "^0.83.3", - "semver": "^7.1.3" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@react-native-community/cli": "*", - "@react-native/metro-config": "*" - }, - "peerDependenciesMeta": { - "@react-native-community/cli": { - "optional": true - }, - "@react-native/metro-config": { - "optional": true - } - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", - "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.6", - "fb-dotslash": "0.5.8" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/dev-middleware": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", - "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", - "license": "MIT", - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.83.1", - "@react-native/debugger-shell": "0.83.1", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^7.5.10" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", - "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", - "license": "MIT", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/js-polyfills": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", - "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", - "license": "MIT", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/normalize-colors": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", - "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", - "license": "MIT" - }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", - "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", - "license": "MIT", - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@types/react": "^19.2.0", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@react-navigation/bottom-tabs": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.13.0.tgz", - "integrity": "sha512-qxxjRDpjhZ4vIZqG4rBU1Vx2jgOAO/ciUKc9sJqVlTM005E2E+aK1EaE3lGaBDyZxTpjonollAucZcqL7OTscQ==", - "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0" - }, - "peerDependencies": { - "@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" - } - }, - "node_modules/@react-navigation/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", - "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", - "license": "MIT", - "dependencies": { - "@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-is": "^19.1.0", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" - }, - "peerDependencies": { - "react": ">= 18.2.0" - } - }, - "node_modules/@react-navigation/elements": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", - "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", - "license": "MIT", - "dependencies": { - "color": "^4.2.3", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" - }, - "peerDependencies": { - "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0" - }, - "peerDependenciesMeta": { - "@react-native-masked-view/masked-view": { - "optional": true - } - } - }, - "node_modules/@react-navigation/native": { - "version": "7.1.28", - "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", - "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", - "license": "MIT", - "dependencies": { - "@react-navigation/core": "^7.14.0", - "escape-string-regexp": "^4.0.0", - "fast-deep-equal": "^3.1.3", - "nanoid": "^3.3.11", - "use-latest-callback": "^0.2.4" - }, - "peerDependencies": { - "react": ">= 18.2.0", - "react-native": "*" - } - }, - "node_modules/@react-navigation/native-stack": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.12.0.tgz", - "integrity": "sha512-XmNJsPshjkNsahgbxNgGWQUq4s1l6HqH/Fei4QsjBNn/0mTvVrRVZwJ1XrY9YhWYvyiYkAN6/OmarWQaQJ0otQ==", - "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0", - "warn-once": "^0.1.1" - }, - "peerDependencies": { - "@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" - } - }, - "node_modules/@react-navigation/routers": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", - "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11" - } - }, - "node_modules/@rn-primitives/checkbox": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/checkbox/-/checkbox-1.2.0.tgz", - "integrity": "sha512-FU/c81eoo6zGm4J4uCccjnqijrQ0grMkt6W3xhnOFkxqxiU2QrnlXN7ddhm2yN+s8CNnke4bOj/xr78wIaYfiw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-checkbox": "^1.3.2", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/hooks": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/hooks/-/hooks-1.3.0.tgz", - "integrity": "sha512-BR97reSu7uVDpyMeQdRJHT0w8KdS6jdYnOL6xQtqS2q3H6N7vXBlX4LFERqJZphD+aziJFIAJ3HJF1vtt6XlpQ==", - "license": "MIT", - "dependencies": { - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/label": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/label/-/label-1.2.0.tgz", - "integrity": "sha512-eThBr6vn2jS81ZS4JNcg0+02TkEircH4bZmjF4IZUDl4XRpevwK95NyOkbfhGYmpVbAuisAVxDmvNOQ4OVjfug==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-label": "^2.1.7", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/portal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/portal/-/portal-1.3.0.tgz", - "integrity": "sha512-a2DSce7TcSfcs0cCngLadAJOvx/+mdH9NRu+GxkX8NPRsGGhJvDEOqouMgDqLwx7z9mjXoUaZcwaVcemUSW9/A==", - "license": "MIT", - "dependencies": { - "zustand": "^5.0.4" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/progress": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/progress/-/progress-1.2.0.tgz", - "integrity": "sha512-bbO4WGSNAd2idYDW0ma4xCX9UFOjNK3U4F4hLRhMKglz3c/QVYfpKvlGQ0Y0d7kpelA7MQizvFeqGGYfxSuisw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-progress": "^1.1.7", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/select/-/select-1.2.0.tgz", - "integrity": "sha512-W3qFkdSAFPnjNMM7II5MiLCItjWOGXr8f+3obPtLAHcWrcsX/d1KogmplWXwmhBvVStCgE1OpJAD3DE2CHx9Rw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-select": "^2.2.5", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "@rn-primitives/portal": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/slider": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/slider/-/slider-1.2.0.tgz", - "integrity": "sha512-JRxTQelfEdG7tWA+7v5YY/9hUeZXe99BrfRH4b/kUbdMdzMp+MEEvJ6y1iqUlNIys5B6uuTWLnFjI8IhG/MkXw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slider": "^1.3.5", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/slot/-/slot-1.2.0.tgz", - "integrity": "sha512-cpbn+JLjSeq3wcA4uqgFsUimMrWYWx2Ks7r5rkwd1ds1utxynsGkLOKpYVQkATwWrYhtcoF1raxIKEqXuMN+/w==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/switch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/switch/-/switch-1.2.0.tgz", - "integrity": "sha512-M4r4LvLUFgn3SIkrMuEkDIxnRbHPLZF2cvKhdHmsk1vk6DSIw3WxYEA+0GkU6a8wnOCFzWRl4kHh5+x86bo1/w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-switch": "^1.2.5", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/tabs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/tabs/-/tabs-1.2.0.tgz", - "integrity": "sha512-sKqVYQD1s46eS8kGBsCGxJrtZ4my+sjXD5m2auGSdTJmJ8dNYqZJEI1caiMm64ZvRuQDe2bFsekAFGexBD4qUQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-tabs": "^1.1.12", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/toggle": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/toggle/-/toggle-1.2.0.tgz", - "integrity": "sha512-pVhlIdGCOaxBmcrSUYF3EUTeqOoLHCYEuj/qo64Ai89DnI5aSmReBgpttY5v/r0gNrku9dJZfrOe+uGzWNUn8Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-toggle": "^1.1.9", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/toggle-group": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/toggle-group/-/toggle-group-1.2.0.tgz", - "integrity": "sha512-xCbYZzGzCbr/3pu3xE9pEKzuXU5LHT0ZlK9WMdECQUHLRjSI2A6KnUiZJ+JqZ3lzcVlgCE2lZeZXmpvVyBXnNQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-toggle-group": "^1.1.10", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0", - "@rn-primitives/utils": "1.2.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/tooltip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/tooltip/-/tooltip-1.2.0.tgz", - "integrity": "sha512-Fn1Y/maW1o64QI+nmBj2jBI/KdCEXv8kVGbDjjDFI68KUxDjuig/hACLiD7fEbLBhZqB/QnHUSRsnPUUOOVGdA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-tooltip": "^1.2.7", - "@rn-primitives/hooks": "1.3.0", - "@rn-primitives/slot": "1.2.0", - "@rn-primitives/types": "1.2.0" - }, - "peerDependencies": { - "@rn-primitives/portal": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/types": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/types/-/types-1.2.0.tgz", - "integrity": "sha512-b+6zKgdKVqAfaFPSfhwlQL0dnPQXPpW890m3eguC0VDI1eOsoEvUfVb6lmgH4bum9MmI0xymq4tOUI/fsKLoCQ==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rn-primitives/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rn-primitives/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-vLXV5NuxIHDeb4Bw57FzdUh89/g8gz6GERm8TsbJaSUPsDXfnC/ffeYiZJb0LxNteKE3Nr8na4Jy2n26tFil7w==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } - }, - "node_modules/@rozhkov/react-useful-hooks": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@rozhkov/react-useful-hooks/-/react-useful-hooks-1.0.10.tgz", - "integrity": "sha512-aEDZDiqkpPJX8WqLqcnPGjXzRpCFiZmbtdr5RVUOciNbbANhdNu+oIxJv3g7ezMcgsYhgWp2/XGxU+g/ClsBew==", - "license": "MIT", - "dependencies": { - "default-values": "^1.0.2" - }, - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "license": "MIT" - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@standard-schema/utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", - "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", - "license": "MIT" - }, - "node_modules/@supabase/auth-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.95.3.tgz", - "integrity": "sha512-vD2YoS8E2iKIX0F7EwXTmqhUpaNsmbU6X2R0/NdFcs02oEfnHyNP/3M716f3wVJ2E5XHGiTFXki6lRckhJ0Thg==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/functions-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.95.3.tgz", - "integrity": "sha512-uTuOAKzs9R/IovW1krO0ZbUHSJnsnyJElTXIRhjJTqymIVGcHzkAYnBCJqd7468Fs/Foz1BQ7Dv6DCl05lr7ig==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/postgrest-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.95.3.tgz", - "integrity": "sha512-LTrRBqU1gOovxRm1vRXPItSMPBmEFqrfTqdPTRtzOILV4jPSueFz6pES5hpb4LRlkFwCPRmv3nQJ5N625V2Xrg==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/realtime-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.95.3.tgz", - "integrity": "sha512-D7EAtfU3w6BEUxDACjowWNJo/ZRo7sDIuhuOGKHIm9FHieGeoJV5R6GKTLtga/5l/6fDr2u+WcW/m8I9SYmaIw==", - "license": "MIT", - "dependencies": { - "@types/phoenix": "^1.6.6", - "@types/ws": "^8.18.1", - "tslib": "2.8.1", - "ws": "^8.18.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/storage-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.95.3.tgz", - "integrity": "sha512-4GxkJiXI3HHWjxpC3sDx1BVrV87O0hfX+wvJdqGv67KeCu+g44SPnII8y0LL/Wr677jB7tpjAxKdtVWf+xhc9A==", - "license": "MIT", - "dependencies": { - "iceberg-js": "^0.8.1", - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/supabase-js": { - "version": "2.95.3", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.95.3.tgz", - "integrity": "sha512-Fukw1cUTQ6xdLiHDJhKKPu6svEPaCEDvThqCne3OaQyZvuq2qjhJAd91kJu3PXLG18aooCgYBaB6qQz35hhABg==", - "license": "MIT", - "dependencies": { - "@supabase/auth-js": "2.95.3", - "@supabase/functions-js": "2.95.3", - "@supabase/postgrest-js": "2.95.3", - "@supabase/realtime-js": "2.95.3", - "@supabase/storage-js": "2.95.3" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", - "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", - "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", - "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", - "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", - "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", - "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-preset": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", - "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", - "@svgr/babel-plugin-transform-svg-component": "8.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/core": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", - "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^8.1.3", - "snake-case": "^3.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/core/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@svgr/core/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", - "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.21.3", - "entities": "^4.4.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/@svgr/plugin-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", - "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "@svgr/hast-util-to-babel-ast": "8.0.0", - "svg-parser": "^2.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", - "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^8.1.3", - "deepmerge": "^4.3.1", - "svgo": "^3.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@tanstack/query-core": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", - "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/query-persist-client-core": { - "version": "5.91.19", - "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.91.19.tgz", - "integrity": "sha512-whrASqbVq8261Ue+/ZzpHsrLDYVfRaENs4HTdLuYKxawkGWzdMfV7BmOdWl8ZF0mEBEbrQR8V6oE3R635JF2Fw==", - "license": "MIT", - "dependencies": { - "@tanstack/query-core": "5.90.20" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/react-query": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", - "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", - "license": "MIT", - "dependencies": { - "@tanstack/query-core": "5.90.20" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^18 || ^19" - } - }, - "node_modules/@tanstack/react-query-persist-client": { - "version": "5.90.22", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.22.tgz", - "integrity": "sha512-BrD3Y/SsrSIDl+t/gpYvjvGHXd7m7oF+GIqktKE8LmTgt7bS1lYHd/CLkVxMPixTU53gHHVFfPNGmY7Hv4L/7g==", - "license": "MIT", - "dependencies": { - "@tanstack/query-persist-client-core": "5.91.19" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "@tanstack/react-query": "^5.90.20", - "react": "^18 || ^19" - } - }, - "node_modules/@testing-library/react-hooks": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz", - "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@types/react": ">=16.9.0", - "@types/react-dom": ">=16.9.0", - "@types/react-test-renderer": ">=16.9.0", - "react-error-boundary": "^3.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0", - "react-test-renderer": ">=16.9.0" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-test-renderer": { - "optional": true - } - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@total-typescript/ts-reset": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.6.1.tgz", - "integrity": "sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@tsconfig/node18": { - "version": "18.2.6", - "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz", - "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==", - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/bidirectional-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/bidirectional-map/-/bidirectional-map-1.0.4.tgz", - "integrity": "sha512-jxMzw5jyGHm46E0CHRWAarV6pVI8DvmIs/+bmOzo/grJy1Iga8LDFRB7lyFaBwARLLaAwfaqJr2Tuaog204npw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@types/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-35C93fYQlnLKLASkMPoxRvok4fENwB3By9clRLd2I/08n/XRl0pCdf7EB17K5oMMwZu8NBYA8i66jH5r/LYBKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hammerjs": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", - "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/phoenix": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", - "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "19.2.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", - "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", - "license": "MIT", - "dependencies": { - "csstype": "^3.2.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/@types/react-test-renderer": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", - "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", - "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/type-utils": "8.55.0", - "@typescript-eslint/utils": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.55.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", - "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", - "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.55.0", - "@typescript-eslint/types": "^8.55.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", - "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", - "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", - "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/utils": "8.55.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", - "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", - "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.55.0", - "@typescript-eslint/tsconfig-utils": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", - "debug": "^4.4.3", - "minimatch": "^9.0.5", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", - "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", - "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.55.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vscode/sudo-prompt": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", - "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "license": "BSD-3-Clause" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/anser": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", - "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "license": "MIT" - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-fragments": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", - "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "colorette": "^1.0.7", - "slice-ansi": "^2.0.0", - "strip-ansi": "^5.0.0" - } - }, - "node_modules/ansi-fragments/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-fragments/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/appdirsjs": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", - "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "dev": true, - "license": "MIT" - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/aria-hidden": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", - "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "license": "MIT" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" - }, - "node_modules/assign-deep": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/assign-deep/-/assign-deep-0.4.8.tgz", - "integrity": "sha512-uxqXJCnNZDEjPnsaLKVzmh/ST5+Pqoz0wi06HDfHKx1ASNpSbbvz2qW2Gl8ZyHwr5jnm11X2S5eMQaP1lMZmCg==", - "license": "MIT", - "dependencies": { - "assign-symbols": "^0.1.1", - "is-primitive": "^2.0.0", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-0.1.1.tgz", - "integrity": "sha512-gwzH8QS/GV4pQsf6XOrlpBC6aDE8uJeZvymbEJ0W9TuDYqYOZc4RodvKDH98HCc+KFPYil1kD2XT0X0JWeOzQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-lock": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", - "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", - "license": "MIT" - }, - "node_modules/async-mutex": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", - "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/await-lock": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", - "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", - "license": "MIT" - }, - "node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "license": "MIT", - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "license": "MIT", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-inline-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz", - "integrity": "sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==", - "dev": true, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", "license": "MIT", "dependencies": { - "require-resolve": "0.0.2" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "license": "BSD-3-Clause", + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "@radix-ui/react-compose-refs": "1.1.2" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", - "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.6", - "semver": "^6.3.1" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", - "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.6" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/babel-plugin-react-compiler": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", - "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/babel-plugin-react-native-web": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", - "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", - "license": "MIT" - }, - "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", - "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", "license": "MIT", - "dependencies": { - "hermes-parser": "0.29.1" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", "license": "MIT", "dependencies": { - "hermes-estree": "0.29.1" - } - }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "dev": true, - "license": "MIT" + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/babel-plugin-transform-flow-enums": { + "node_modules/@radix-ui/react-use-effect-event": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", - "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", "license": "MIT", "dependencies": { - "@babel/plugin-syntax-flow": "^7.12.1" + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/babel-preset-expo": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.4.tgz", - "integrity": "sha512-GGPhL1bpJOFOQFRTkkVyhitf1CRtNjdVq2F1Ps7CWfw0fK/AmzAGO79cnnHuD24GhnwQe7C+Eip5U6ALbvPE3w==", + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", "license": "MIT", - "dependencies": { - "@babel/generator": "^7.20.5", - "@babel/helper-module-imports": "^7.25.9", - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.83.1", - "babel-plugin-react-compiler": "^1.0.0", - "babel-plugin-react-native-web": "~0.21.0", - "babel-plugin-syntax-hermes-parser": "^0.29.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "debug": "^4.3.4", - "resolve-from": "^5.0.0" - }, "peerDependencies": { - "@babel/runtime": "^7.20.0", - "expo": "*", - "expo-widgets": "^55.0.0-alpha.6", - "react-refresh": ">=0.14.0 <1.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "@babel/runtime": { - "optional": true - }, - "expo": { + "@types/react": { "optional": true - }, - "expo-widgets": { + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { "optional": true } } }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "dev": true, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", "license": "MIT", "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + "@radix-ui/rect": "1.1.1" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "@types/react-dom": { + "optional": true } - ], + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", "license": "MIT" }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" + "node_modules/@react-native-async-storage/async-storage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", + "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", + "license": "MIT", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || >=0.65 <1.0" } }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "node_modules/@react-native-community/cli": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", + "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "5.1.2" + "@react-native-community/cli-clean": "20.1.1", + "@react-native-community/cli-config": "20.1.1", + "@react-native-community/cli-doctor": "20.1.1", + "@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.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "rnc-cli": "build/bin.js" }, "engines": { - "node": ">= 0.8" + "node": ">=20.19.4" } }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/@react-native-community/cli-clean": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", + "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "node_modules/@react-native-community/cli-config": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", + "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", + "dev": true, "license": "MIT", "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" + "@react-native-community/cli-tools": "20.1.1", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1", + "picocolors": "^1.1.1" } }, - "node_modules/better-opn/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/@react-native-community/cli-config-android": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", + "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", + "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@react-native-community/cli-tools": "20.1.1", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" } }, - "node_modules/bidirectional-map": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bidirectional-map/-/bidirectional-map-1.1.1.tgz", - "integrity": "sha512-qfpqHKQbSpc5Eev0W35FZoPnoNUvItDrHbVU0YYKkAOBCZ4Dp3CYi9tjAQcdmqN6ui/9+ioIkb9m0uz8EZqPkA==", - "license": "ISC" + "node_modules/@react-native-community/cli-config-apple": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", + "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "license": "Unlicense", - "engines": { - "node": ">=0.6" + "node_modules/@react-native-community/cli-doctor": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", + "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config": "20.1.1", + "@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.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.13.0", + "execa": "^5.0.0", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "semver": "^7.5.2", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" } }, - "node_modules/bin-links": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz", - "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==", + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", - "dependencies": { - "cmd-shim": "^8.0.0", - "npm-normalize-package-bin": "^5.0.0", - "proc-log": "^6.0.0", - "read-cmd-shim": "^6.0.0", - "write-file-atomic": "^7.0.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=10" } }, - "node_modules/bin-links/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "node_modules/@react-native-community/cli-platform-android": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", + "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config-android": "20.1.1", + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "logkitty": "^0.7.1", + "picocolors": "^1.1.1" } }, - "node_modules/bin-links/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/@react-native-community/cli-platform-apple": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", + "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config-apple": "20.1.1", + "@react-native-community/cli-tools": "20.1.1", + "execa": "^5.0.0", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" } }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", - "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "node_modules/@react-native-community/cli-platform-ios": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", + "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@react-native-community/cli-platform-apple": "20.1.1" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "devOptional": true, + "node_modules/@react-native-community/cli-server-api": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", + "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@react-native-community/cli-tools": "20.1.1", + "body-parser": "^1.20.3", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "open": "^6.2.0", + "pretty-format": "^29.7.0", + "serve-static": "^1.13.1", + "strict-url-sanitise": "0.0.1", + "ws": "^6.2.3" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/@react-native-community/cli-server-api/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", "dev": true, "license": "MIT", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", + "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" } }, - "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "license": "MIT", - "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.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=10" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@react-native-community/cli-types": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", + "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "joi": "^17.2.1" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/@react-native-community/cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/bplist-creator": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", - "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "node_modules/@react-native-community/netinfo": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.4.1.tgz", + "integrity": "sha512-B0BYAkghz3Q2V09BF88RA601XursIEA111tnc2JOaN7axJWmNefmfjZqw/KdSxKZp7CZUuPpjBmz/WCR9uaHYg==", "license": "MIT", - "dependencies": { - "stream-buffers": "2.2.x" + "peerDependencies": { + "react-native": ">=0.59" } }, - "node_modules/bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "node_modules/@react-native-community/slider": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-5.1.1.tgz", + "integrity": "sha512-W98If/LnTaziU3/0h5+G1LvJaRhMc6iLQBte6UWa4WBIHDMaDPglNBIFKcCXc9Dxp83W+f+5Wv22Olq9M2HJYA==", + "license": "MIT" + }, + "node_modules/@react-native-documents/picker": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", + "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", "license": "MIT", - "dependencies": { - "big-integer": "1.6.x" + "funding": { + "url": "https://github.com/react-native-documents/document-picker?sponsor=1" }, - "engines": { - "node": ">= 5.10.0" + "peerDependencies": { + "react": "*", + "react-native": ">=0.79.0" } }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/@react-native/assets-registry": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", + "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">= 20.19.4" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", + "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.83.1" }, "engines": { - "node": ">=8" + "node": ">= 20.19.4" } }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/@react-native/babel-preset": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", + "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.83.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", "license": "MIT", "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" + "hermes-parser": "0.32.0" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "license": "Apache-2.0", + "node_modules/@react-native/codegen": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", + "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "license": "MIT", "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/bson": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", - "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", - "license": "Apache-2.0", + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.32.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, "engines": { - "node": ">=16.20.1" + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/bubble-stream-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz", - "integrity": "sha512-Rqf0ly5H4HGt+ki/n3m7GxoR2uIGtNqezPlOLX8Vuo13j5/tfPuVvAr84eoGF7sYm6lKdbGnT/3q8qmzuT5Y9w==", - "dev": true, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", + "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", "license": "MIT", "dependencies": { - "once": "^1.3.3", - "sliced": "^1.0.1" + "@react-native/dev-middleware": "0.83.1", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", + "semver": "^7.1.3" }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "@react-native/metro-config": { + "optional": true } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", + "node_modules/@react-native/debugger-frontend": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", + "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.8" + "node": ">= 20.19.4" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/@react-native/debugger-shell": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", + "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 20.19.4" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/@react-native/dev-middleware": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", + "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.83.1", + "@react-native/debugger-shell": "0.83.1", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^7.5.10" }, "engines": { - "node": ">= 0.4" + "node": ">= 20.19.4" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "license": "MIT", - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001769", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", - "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "utf-8-validate": { + "optional": true } - ], - "license": "CC-BY-4.0" + } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@react-native/gradle-plugin": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", + "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 20.19.4" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/@react-native/js-polyfills": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", + "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 20.19.4" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "devOptional": true, + "node_modules/@react-native/normalize-colors": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", + "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "license": "MIT" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", + "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">= 20.19.4" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "@types/react": "^19.2.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, - "license": "ISC", + "node_modules/@react-navigation/bottom-tabs": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.13.0.tgz", + "integrity": "sha512-qxxjRDpjhZ4vIZqG4rBU1Vx2jgOAO/ciUKc9sJqVlTM005E2E+aK1EaE3lGaBDyZxTpjonollAucZcqL7OTscQ==", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "@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" } }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" + "node_modules/@react-navigation/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", + "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", + "license": "MIT", + "dependencies": { + "@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-is": "^19.1.0", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "react": ">= 18.2.0" } }, - "node_modules/chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "license": "Apache-2.0", + "node_modules/@react-navigation/elements": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", + "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", + "license": "MIT", "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" + "color": "^4.2.3", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" }, - "engines": { - "node": ">=12.13.0" + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } } }, - "node_modules/chromium-edge-launcher": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", - "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", - "license": "Apache-2.0", + "node_modules/@react-navigation/native": { + "version": "7.1.28", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", + "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", + "license": "MIT", "dependencies": { - "@types/node": "*", + "@react-navigation/core": "^7.14.0", "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "use-latest-callback": "^0.2.4" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@react-navigation/native-stack": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.12.0.tgz", + "integrity": "sha512-XmNJsPshjkNsahgbxNgGWQUq4s1l6HqH/Fei4QsjBNn/0mTvVrRVZwJ1XrY9YhWYvyiYkAN6/OmarWQaQJ0otQ==", "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", "dependencies": { - "clsx": "^2.1.1" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" }, - "funding": { - "url": "https://polar.sh/cva" + "peerDependencies": { + "@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" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, + "node_modules/@react-navigation/routers": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", + "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" + "nanoid": "^3.3.11" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "node_modules/@rn-primitives/checkbox": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/checkbox/-/checkbox-1.2.0.tgz", + "integrity": "sha512-FU/c81eoo6zGm4J4uCccjnqijrQ0grMkt6W3xhnOFkxqxiU2QrnlXN7ddhm2yN+s8CNnke4bOj/xr78wIaYfiw==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@radix-ui/react-checkbox": "^1.3.2", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", + "node_modules/@rn-primitives/hooks": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/hooks/-/hooks-1.3.0.tgz", + "integrity": "sha512-BR97reSu7uVDpyMeQdRJHT0w8KdS6jdYnOL6xQtqS2q3H6N7vXBlX4LFERqJZphD+aziJFIAJ3HJF1vtt6XlpQ==", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@rn-primitives/types": "1.2.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/@rn-primitives/label": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/label/-/label-1.2.0.tgz", + "integrity": "sha512-eThBr6vn2jS81ZS4JNcg0+02TkEircH4bZmjF4IZUDl4XRpevwK95NyOkbfhGYmpVbAuisAVxDmvNOQ4OVjfug==", "license": "MIT", - "engines": { - "node": ">=0.8" + "dependencies": { + "@radix-ui/react-label": "^2.1.7", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/@rn-primitives/portal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/portal/-/portal-1.3.0.tgz", + "integrity": "sha512-a2DSce7TcSfcs0cCngLadAJOvx/+mdH9NRu+GxkX8NPRsGGhJvDEOqouMgDqLwx7z9mjXoUaZcwaVcemUSW9/A==", "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "zustand": "^5.0.4" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/@rn-primitives/progress": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/progress/-/progress-1.2.0.tgz", + "integrity": "sha512-bbO4WGSNAd2idYDW0ma4xCX9UFOjNK3U4F4hLRhMKglz3c/QVYfpKvlGQ0Y0d7kpelA7MQizvFeqGGYfxSuisw==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@radix-ui/react-progress": "^1.1.7", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "node_modules/@rn-primitives/select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/select/-/select-1.2.0.tgz", + "integrity": "sha512-W3qFkdSAFPnjNMM7II5MiLCItjWOGXr8f+3obPtLAHcWrcsX/d1KogmplWXwmhBvVStCgE1OpJAD3DE2CHx9Rw==", "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cmd-shim": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", - "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "dependencies": { + "@radix-ui/react-select": "^2.2.5", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "@rn-primitives/portal": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, + "node_modules/@rn-primitives/slider": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/slider/-/slider-1.2.0.tgz", + "integrity": "sha512-JRxTQelfEdG7tWA+7v5YY/9hUeZXe99BrfRH4b/kUbdMdzMp+MEEvJ6y1iqUlNIys5B6uuTWLnFjI8IhG/MkXw==", "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "dependencies": { + "@radix-ui/react-slider": "^1.3.5", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "license": "MIT" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "node_modules/@rn-primitives/slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/slot/-/slot-1.2.0.tgz", + "integrity": "sha512-cpbn+JLjSeq3wcA4uqgFsUimMrWYWx2Ks7r5rkwd1ds1utxynsGkLOKpYVQkATwWrYhtcoF1raxIKEqXuMN+/w==", "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" }, - "engines": { - "node": ">=12.5.0" + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@rn-primitives/switch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/switch/-/switch-1.2.0.tgz", + "integrity": "sha512-M4r4LvLUFgn3SIkrMuEkDIxnRbHPLZF2cvKhdHmsk1vk6DSIw3WxYEA+0GkU6a8wnOCFzWRl4kHh5+x86bo1/w==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@radix-ui/react-switch": "^1.2.5", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "node_modules/@rn-primitives/tabs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/tabs/-/tabs-1.2.0.tgz", + "integrity": "sha512-sKqVYQD1s46eS8kGBsCGxJrtZ4my+sjXD5m2auGSdTJmJ8dNYqZJEI1caiMm64ZvRuQDe2bFsekAFGexBD4qUQ==", "license": "MIT", "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "@radix-ui/react-tabs": "^1.1.12", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@rn-primitives/toggle": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/toggle/-/toggle-1.2.0.tgz", + "integrity": "sha512-pVhlIdGCOaxBmcrSUYF3EUTeqOoLHCYEuj/qo64Ai89DnI5aSmReBgpttY5v/r0gNrku9dJZfrOe+uGzWNUn8Q==", "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "@radix-ui/react-toggle": "^1.1.9", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comlink": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", - "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", - "license": "Apache-2.0" - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true, - "license": "MIT" + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "node_modules/@rn-primitives/toggle-group": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/toggle-group/-/toggle-group-1.2.0.tgz", + "integrity": "sha512-xCbYZzGzCbr/3pu3xE9pEKzuXU5LHT0ZlK9WMdECQUHLRjSI2A6KnUiZJ+JqZ3lzcVlgCE2lZeZXmpvVyBXnNQ==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@radix-ui/react-toggle-group": "^1.1.10", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0", + "@rn-primitives/utils": "1.2.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/comment-json": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", - "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", + "node_modules/@rn-primitives/tooltip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/tooltip/-/tooltip-1.2.0.tgz", + "integrity": "sha512-Fn1Y/maW1o64QI+nmBj2jBI/KdCEXv8kVGbDjjDFI68KUxDjuig/hACLiD7fEbLBhZqB/QnHUSRsnPUUOOVGdA==", "license": "MIT", "dependencies": { - "array-timsort": "^1.0.3", - "core-util-is": "^1.0.3", - "esprima": "^4.0.1" + "@radix-ui/react-tooltip": "^1.2.7", + "@rn-primitives/hooks": "1.3.0", + "@rn-primitives/slot": "1.2.0", + "@rn-primitives/types": "1.2.0" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "@rn-primitives/portal": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "license": "MIT" + "node_modules/@rn-primitives/types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/types/-/types-1.2.0.tgz", + "integrity": "sha512-b+6zKgdKVqAfaFPSfhwlQL0dnPQXPpW890m3eguC0VDI1eOsoEvUfVb6lmgH4bum9MmI0xymq4tOUI/fsKLoCQ==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/@rn-primitives/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rn-primitives/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-vLXV5NuxIHDeb4Bw57FzdUh89/g8gz6GERm8TsbJaSUPsDXfnC/ffeYiZJb0LxNteKE3Nr8na4Jy2n26tFil7w==", "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" }, - "engines": { - "node": ">= 0.6" + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } } }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "node_modules/@rozhkov/react-useful-hooks": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@rozhkov/react-useful-hooks/-/react-useful-hooks-1.0.10.tgz", + "integrity": "sha512-aEDZDiqkpPJX8WqLqcnPGjXzRpCFiZmbtdr5RVUOciNbbANhdNu+oIxJv3g7ezMcgsYhgWp2/XGxU+g/ClsBew==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" + "default-values": "^1.0.2" }, - "engines": { - "node": ">= 0.8.0" + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ms": "2.0.0" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/compression/node_modules/ms": { + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "license": "MIT" }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "license": "MIT", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" + "type-detect": "4.0.8" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", "dependencies": { - "ms": "2.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", "license": "MIT" }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "dev": true, + "node_modules/@supabase/auth-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.95.3.tgz", + "integrity": "sha512-vD2YoS8E2iKIX0F7EwXTmqhUpaNsmbU6X2R0/NdFcs02oEfnHyNP/3M716f3wVJ2E5XHGiTFXki6lRckhJ0Thg==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "2.8.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, + "node_modules/@supabase/functions-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.95.3.tgz", + "integrity": "sha512-uTuOAKzs9R/IovW1krO0ZbUHSJnsnyJElTXIRhjJTqymIVGcHzkAYnBCJqd7468Fs/Foz1BQ7Dv6DCl05lr7ig==", "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=20.0.0" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, + "node_modules/@supabase/postgrest-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.95.3.tgz", + "integrity": "sha512-LTrRBqU1gOovxRm1vRXPItSMPBmEFqrfTqdPTRtzOILV4jPSueFz6pES5hpb4LRlkFwCPRmv3nQJ5N625V2Xrg==", "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=20.0.0" } }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "dev": true, + "node_modules/@supabase/realtime-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.95.3.tgz", + "integrity": "sha512-D7EAtfU3w6BEUxDACjowWNJo/ZRo7sDIuhuOGKHIm9FHieGeoJV5R6GKTLtga/5l/6fDr2u+WcW/m8I9SYmaIw==", "license": "MIT", + "dependencies": { + "@types/phoenix": "^1.6.6", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + }, "engines": { - "node": ">=6.6.0" + "node": ">=20.0.0" } }, - "node_modules/core-js": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", - "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", - "hasInstallScript": true, + "node_modules/@supabase/storage-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.95.3.tgz", + "integrity": "sha512-4GxkJiXI3HHWjxpC3sDx1BVrV87O0hfX+wvJdqGv67KeCu+g44SPnII8y0LL/Wr677jB7tpjAxKdtVWf+xhc9A==", "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "dependencies": { + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/core-js-compat": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", - "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "node_modules/@supabase/supabase-js": { + "version": "2.95.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.95.3.tgz", + "integrity": "sha512-Fukw1cUTQ6xdLiHDJhKKPu6svEPaCEDvThqCne3OaQyZvuq2qjhJAd91kJu3PXLG18aooCgYBaB6qQz35hhABg==", "license": "MIT", "dependencies": { - "browserslist": "^4.28.1" + "@supabase/auth-js": "2.95.3", + "@supabase/functions-js": "2.95.3", + "@supabase/postgrest-js": "2.95.3", + "@supabase/realtime-js": "2.95.3", + "@supabase/storage-js": "2.95.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", "dev": true, "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, "engines": { - "node": ">= 0.10" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "dev": true, "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, "engines": { "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/cross-env": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", - "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "dev": true, "license": "MIT", - "dependencies": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" + "engines": { + "node": ">=14" }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, - "engines": { - "node": ">=20" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", "dev": true, "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", "dev": true, "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, "engines": { - "node": "4.x || >=6.0.0" + "node": ">=14" }, - "peerDependencies": { - "encoding": "^0.1.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cross-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/cross-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", "dev": true, "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, "engines": { - "node": ">= 8" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/css-in-js-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", - "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, "license": "MIT", - "dependencies": { - "hyphenate-style-name": "^1.0.3" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "node_modules/@svgr/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", - "dependencies": { - "css-tree": "~2.2.0" - }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", "dev": true, - "license": "CC0-1.0" - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "@babel/types": "^7.21.3", + "entities": "^4.4.0" }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" + "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, "engines": { - "node": ">= 12" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" }, "engines": { - "node": ">=12" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "node_modules/@tanstack/query-core": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-persist-client-core": { + "version": "5.91.19", + "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.91.19.tgz", + "integrity": "sha512-whrASqbVq8261Ue+/ZzpHsrLDYVfRaENs4HTdLuYKxawkGWzdMfV7BmOdWl8ZF0mEBEbrQR8V6oE3R635JF2Fw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "@tanstack/query-core": "5.90.20" }, "funding": { - "url": "https://github.com/sponsors/inspect-js" + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "node_modules/@tanstack/react-query": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", + "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "@tanstack/query-core": "5.90.20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" } }, - "node_modules/date-fns": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", - "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "node_modules/@tanstack/react-query-persist-client": { + "version": "5.90.22", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.22.tgz", + "integrity": "sha512-BrD3Y/SsrSIDl+t/gpYvjvGHXd7m7oF+GIqktKE8LmTgt7bS1lYHd/CLkVxMPixTU53gHHVFfPNGmY7Hv4L/7g==", "license": "MIT", + "dependencies": { + "@tanstack/query-persist-client-core": "5.91.19" + }, "funding": { "type": "github", - "url": "https://github.com/sponsors/kossnocorp" + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.90.20", + "react": "^18 || ^19" } }, - "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/@testing-library/react-hooks": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz", + "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "@babel/runtime": "^7.12.5", + "@types/react": ">=16.9.0", + "@types/react-dom": ">=16.9.0", + "@types/react-test-renderer": ">=16.9.0", + "react-error-boundary": "^3.1.0" }, "engines": { - "node": ">=6.0" + "node": ">=12" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0", + "react-test-renderer": ">=16.9.0" }, "peerDependenciesMeta": { - "supports-color": { + "react-dom": { + "optional": true + }, + "react-test-renderer": { "optional": true } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "node_modules/@total-typescript/ts-reset": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.6.1.tgz", + "integrity": "sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==", + "dev": true, "license": "MIT" }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dedent": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", - "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "license": "ISC", + "engines": { + "node": ">=10.13.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/@tsconfig/node18": { + "version": "18.2.6", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz", + "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==", "license": "MIT" }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", "dependencies": { - "execa": "^7.1.1" - }, - "engines": { - "node": ">= 16" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/default-gateway/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "@babel/types": "^7.0.0" } }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@babel/types": "^7.28.2" } }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/@types/bidirectional-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/bidirectional-map/-/bidirectional-map-1.0.4.tgz", + "integrity": "sha512-jxMzw5jyGHm46E0CHRWAarV6pVI8DvmIs/+bmOzo/grJy1Iga8LDFRB7lyFaBwARLLaAwfaqJr2Tuaog204npw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@types/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-35C93fYQlnLKLASkMPoxRvok4fENwB3By9clRLd2I/08n/XRl0pCdf7EB17K5oMMwZu8NBYA8i66jH5r/LYBKA==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*" } }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "license": "MIT", "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/istanbul-lib-report": "*" } }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, - "node_modules/default-gateway/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/default-values": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/default-values/-/default-values-1.0.2.tgz", - "integrity": "sha512-OaZEvojjexigvv1IT6N0rKUD5Af7fG11a0jg87jySv5xzjc2+IEW9oWNvqxWLHGhShRRZ0QopCGzGjJv/aY+mw==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "license": "MIT", "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "undici-types": "~7.16.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/@types/phoenix": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", + "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "csstype": "^3.2.2" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "license": "MIT", - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "^19.2.0" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/@types/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/react": "*" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT", - "engines": { - "node": ">=0.4.0" - } + "optional": true }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "@types/node": "*" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", + "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/type-utils": "8.55.0", + "@typescript-eslint/utils": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.55.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 4" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/@typescript-eslint/parser": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", + "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", "license": "MIT", "dependencies": { - "path-type": "^4.0.0" + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "debug": "^4.4.3" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/dnssd-advertise": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", - "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", - "license": "MIT" - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", + "node_modules/@typescript-eslint/project-service": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", + "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "@typescript-eslint/tsconfig-utils": "^8.55.0", + "@typescript-eslint/types": "^8.55.0", + "debug": "^4.4.3" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", + "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", + "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", + "license": "MIT", "engines": { - "node": ">=0.12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", + "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", "license": "MIT", "dependencies": { - "webidl-conversions": "^7.0.0" + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0", + "@typescript-eslint/utils": "8.55.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", + "node_modules/@typescript-eslint/types": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", + "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", + "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", + "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0" + "@typescript-eslint/project-service": "8.55.0", + "@typescript-eslint/tsconfig-utils": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/visitor-keys": "8.55.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">= 4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/dompurify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", - "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/drizzle-kit": { - "version": "0.31.9", - "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.9.tgz", - "integrity": "sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==", - "dev": true, + "node_modules/@typescript-eslint/utils": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", + "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", "license": "MIT", "dependencies": { - "@drizzle-team/brocli": "^0.10.2", - "@esbuild-kit/esm-loader": "^2.5.5", - "esbuild": "^0.25.4", - "esbuild-register": "^3.5.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.55.0", + "@typescript-eslint/types": "8.55.0", + "@typescript-eslint/typescript-estree": "8.55.0" }, - "bin": { - "drizzle-kit": "bin.cjs" - } - }, - "node_modules/drizzle-orm": { - "version": "0.45.1", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", - "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "@aws-sdk/client-rds-data": ">=3", - "@cloudflare/workers-types": ">=4", - "@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": "*", - "@tidbcloud/serverless": "*", - "@types/better-sqlite3": "*", - "@types/pg": "*", - "@types/sql.js": "*", - "@upstash/redis": ">=1.34.7", - "@vercel/postgres": ">=0.8.0", - "@xata.io/client": "*", - "better-sqlite3": ">=7", - "bun-types": "*", - "expo-sqlite": ">=14.0.0", - "gel": ">=2", - "knex": "*", - "kysely": "*", - "mysql2": ">=2", - "pg": ">=8", - "postgres": ">=3", - "sql.js": ">=1", - "sqlite3": ">=5" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "@aws-sdk/client-rds-data": { - "optional": true - }, - "@cloudflare/workers-types": { - "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 - }, - "@tidbcloud/serverless": { - "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 - }, - "knex": { - "optional": true - }, - "kysely": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "postgres": { - "optional": true - }, - "prisma": { - "optional": true - }, - "sql.js": { - "optional": true - }, - "sqlite3": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", + "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "@typescript-eslint/types": "8.55.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/electron-to-chromium": { - "version": "1.5.286", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", - "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", - "license": "ISC" + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/env-editor": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", - "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "license": "MIT", - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], "license": "MIT", - "engines": { - "node": ">=6" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/envinfo": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", - "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", - "dev": true, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/errorhandler": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", - "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", - "dev": true, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "escape-html": "~1.0.3" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/sudo-prompt": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=10.0.0" } }, - "node_modules/es-iterator-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", - "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.1", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.1.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.3.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.5", - "safe-array-concat": "^1.1.3" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6.5" } }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 0.4" + "node": ">=0.4.0" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", "license": "MIT", "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "dev": true, - "hasInstallScript": true, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" }, "engines": { - "node": ">=18" - }, - "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" + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "peerDependencies": { - "esbuild": ">=0.12 <1" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "dev": true, + "license": "MIT", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=6" } }, - "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "ansi-regex": "^4.1.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "node": ">=6" } }, - "node_modules/eslint-config-expo": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-55.0.0.tgz", - "integrity": "sha512-YvhaKrp1g7pR/qjdI12E5nw9y0DJZWgYr815vyW8wskGLsFvxATY3mtKL8zm3ZYzWj3Bvc37tRIS661TEkrv9A==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^8.18.2", - "@typescript-eslint/parser": "^8.18.2", - "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-expo": "^1.0.0", - "eslint-plugin-import": "^2.30.0", - "eslint-plugin-react": "^7.37.3", - "eslint-plugin-react-hooks": "^5.1.0", - "globals": "^16.0.0" - }, - "peerDependencies": { - "eslint": ">=8.10" + "engines": { + "node": ">=8" } }, - "node_modules/eslint-config-expo/node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-config-expo/node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" + "dependencies": { + "tslib": "^2.0.0" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">=10" } }, - "node_modules/eslint-config-universe": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-universe/-/eslint-config-universe-12.1.0.tgz", - "integrity": "sha512-nAT0/rcOyYvsy0tY1yq0/BchUQImRCpORONzCvLkjixRBH5CbkMddb/V8ZlOLPgkfu3lp+sByRmSXNfoupTj2w==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, - "peerDependencies": { - "eslint": ">=8.10", - "prettier": ">=3" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "license": "BSD-2-Clause", + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "license": "BSD-2-Clause", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 0.4" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-universe/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/assign-deep": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/assign-deep/-/assign-deep-0.4.8.tgz", + "integrity": "sha512-uxqXJCnNZDEjPnsaLKVzmh/ST5+Pqoz0wi06HDfHKx1ASNpSbbvz2qW2Gl8ZyHwr5jnm11X2S5eMQaP1lMZmCg==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" + "assign-symbols": "^0.1.1", + "is-primitive": "^2.0.0", + "kind-of": "^5.0.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=0.10.0" } }, - "node_modules/eslint-config-universe/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/assign-symbols": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-0.1.1.tgz", + "integrity": "sha512-gwzH8QS/GV4pQsf6XOrlpBC6aDE8uJeZvymbEJ0W9TuDYqYOZc4RodvKDH98HCc+KFPYil1kD2XT0X0JWeOzQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/eslint-config-universe/node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "node": ">=4" } }, - "node_modules/eslint-config-universe/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 0.4" } }, - "node_modules/eslint-config-universe/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "license": "ISC", + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "license": "MIT" + }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "tslib": "^2.4.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-config-universe/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node_modules/await-lock": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", + "license": "MIT" + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/eslint-config-universe/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "typescript": ">=4.2.0" + "@babel/core": "^7.8.0" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "license": "MIT", "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "object.assign": "^4.1.0" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/babel-plugin-inline-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz", + "integrity": "sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "require-resolve": "0.0.2" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", - "license": "ISC", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/eslint-plugin-drizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-drizzle/-/eslint-plugin-drizzle-0.2.3.tgz", - "integrity": "sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==", - "license": "Apache-2.0", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, "peerDependencies": { - "eslint": ">=8.0.0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", "license": "MIT", "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "@babel/helper-define-polyfill-provider": "^0.6.6" }, "peerDependencies": { - "eslint": ">=4.19.1" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/eslint-plugin-expo": { + "node_modules/babel-plugin-react-compiler": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-1.0.0.tgz", - "integrity": "sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.29.1", - "@typescript-eslint/utils": "^8.29.1", - "eslint": "^9.24.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "eslint": ">=8.10" + "@babel/types": "^7.26.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "node_modules/babel-plugin-react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", + "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", + "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", "license": "MIT", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "hermes-parser": "0.29.1" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "hermes-estree": "0.29.1" } }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", "license": "MIT", "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "eslint": ">=5.16.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", - "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", + "node_modules/babel-preset-expo": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.4.tgz", + "integrity": "sha512-GGPhL1bpJOFOQFRTkkVyhitf1CRtNjdVq2F1Ps7CWfw0fK/AmzAGO79cnnHuD24GhnwQe7C+Eip5U6ALbvPE3w==", "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.12" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" + "@babel/generator": "^7.20.5", + "@babel/helper-module-imports": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.83.1", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.29.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "debug": "^4.3.4", + "resolve-from": "^5.0.0" }, "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" + "@babel/runtime": "^7.20.0", + "expo": "*", + "expo-widgets": "^55.0.0-alpha.6", + "react-refresh": ">=0.14.0 <1.0.0" }, "peerDependenciesMeta": { - "@types/eslint": { + "@babel/runtime": { "optional": true }, - "eslint-config-prettier": { + "expo": { "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + }, + "expo-widgets": { + "optional": true + } + } + }, + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + "@babel/core": "^7.0.0" } }, - "node_modules/eslint-plugin-react-compiler": { - "version": "19.1.0-rc.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.1.0-rc.2.tgz", - "integrity": "sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==", - "dev": true, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "hermes-parser": "^0.25.1", - "zod": "^3.22.4", - "zod-validation-error": "^3.0.3" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "eslint": ">=7" + "@babel/core": "^7.0.0" } }, - "node_modules/eslint-plugin-react-compiler/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "dev": true, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, - "node_modules/eslint-plugin-react-compiler/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "dev": true, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", "license": "MIT", - "dependencies": { - "hermes-estree": "0.25.1" + "engines": { + "node": ">= 0.6.0" } }, - "node_modules/eslint-plugin-react-compiler/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", - "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "hermes-parser": "^0.25.1", - "zod": "^3.25.0 || ^4.0.0", - "zod-validation-error": "^3.5.0 || ^4.0.0" + "safe-buffer": "5.1.2" }, "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" + "node": ">= 0.8" } }, - "node_modules/eslint-plugin-react-hooks/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, - "node_modules/eslint-plugin-react-hooks/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "dev": true, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "license": "MIT", "dependencies": { - "hermes-estree": "0.25.1" + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/better-opn/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "node_modules/bidirectional-map": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bidirectional-map/-/bidirectional-map-1.1.1.tgz", + "integrity": "sha512-qfpqHKQbSpc5Eev0W35FZoPnoNUvItDrHbVU0YYKkAOBCZ4Dp3CYi9tjAQcdmqN6ui/9+ioIkb9m0uz8EZqPkA==", + "license": "ISC" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=0.6" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "license": "MIT", + "node_modules/bin-links": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz", + "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==", + "dev": true, + "license": "ISC", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "cmd-shim": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "proc-log": "^6.0.0", + "read-cmd-shim": "^6.0.0", + "write-file-atomic": "^7.0.0" }, "engines": { - "node": ">=6" + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/bin-links/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/bin-links/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", + "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, "engines": { - "node": ">=4" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "license": "Apache-2.0", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "devOptional": true, + "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=8" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "license": "BSD-2-Clause", + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "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.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "license": "BSD-3-Clause", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" + "ms": "2.0.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=4.0" + "node": ">= 0.8" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, "engines": { - "node": ">= 0.6" + "node": ">= 5.10.0" } }, - "node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", - "license": "MIT" - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eventsource": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", - "dev": true, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { - "eventsource-parser": "^3.0.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", - "dev": true, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">=18.0.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "fast-json-stable-stringify": "2.x" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">= 6" } }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, - "license": "MIT", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/bson": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", + "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", + "license": "Apache-2.0", "engines": { - "node": ">= 0.8.0" + "node": ">=16.20.1" } }, - "node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "node_modules/bubble-stream-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz", + "integrity": "sha512-Rqf0ly5H4HGt+ki/n3m7GxoR2uIGtNqezPlOLX8Vuo13j5/tfPuVvAr84eoGF7sYm6lKdbGnT/3q8qmzuT5Y9w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "once": "^1.3.3", + "sliced": "^1.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4.0" } }, - "node_modules/expo": { - "version": "55.0.0-preview.10", - "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.10.tgz", - "integrity": "sha512-BtHgdcu/XS4yYSJTB4HHbYogT2qHl6S4usFqUPhoFfVu/F440VU3J98uUqbDLh5I8OcsZ2PbhjRpOy7uR+MExg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.0", - "@expo/cli": "55.0.7", - "@expo/config": "~55.0.4", - "@expo/config-plugins": "~55.0.4", - "@expo/devtools": "55.0.2", - "@expo/fingerprint": "0.16.3", - "@expo/local-build-cache-provider": "55.0.3", - "@expo/log-box": "55.0.6", - "@expo/metro": "~54.2.0", - "@expo/metro-config": "55.0.5", - "@expo/vector-icons": "^15.0.2", - "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~55.0.4", - "expo-asset": "~55.0.4", - "expo-constants": "~55.0.4", - "expo-file-system": "~55.0.5", - "expo-font": "~55.0.3", - "expo-keep-awake": "~55.0.2", - "expo-modules-autolinking": "55.0.3", - "expo-modules-core": "55.0.8", - "pretty-format": "^29.7.0", - "react-refresh": "^0.14.2", - "whatwg-url-minimum": "^0.1.1" - }, - "bin": { - "expo": "bin/cli", - "expo-modules-autolinking": "bin/autolinking", - "fingerprint": "bin/fingerprint" - }, - "peerDependencies": { - "@expo/dom-webview": "*", - "@expo/metro-runtime": "*", - "react": "*", - "react-native": "*", - "react-native-webview": "*" - }, - "peerDependenciesMeta": { - "@expo/dom-webview": { - "optional": true + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "@expo/metro-runtime": { - "optional": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "react-native-webview": { - "optional": true + { + "type": "consulting", + "url": "https://feross.org/support" } - } - }, - "node_modules/expo-application": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-55.0.5.tgz", - "integrity": "sha512-+TSHZMobYEe96CcKRYaNMdO9CcuKpO/hCjBcB0SeoOkEwDbfPyY3KcdoVW6fU7xyPZYN0wucCnLgTXKqAeB5sQ==", + ], "license": "MIT", - "peerDependencies": { - "expo": "*" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/expo-asset": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.4.tgz", - "integrity": "sha512-eaPPe9Sw4V0nL/KkEvuWpyeeSoGhP2fu1ZA7wkldqywhMVhhY+7kerMkQ7nPgJVtevIfkQRw7wD8ghZEzrKzmg==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", - "dependencies": { - "@expo/image-utils": "^0.8.12", - "expo-constants": "~55.0.4" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": ">= 0.8" } }, - "node_modules/expo-atlas": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/expo-atlas/-/expo-atlas-0.4.3.tgz", - "integrity": "sha512-nN2bouxFvMsqZqLl0ka+eI9Ofida0PcuoE4v+7fHlgyp95X2cCL8Acf0nRKXmmIBEYazdw0d7BAOZfC0b41oxA==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "license": "MIT", "dependencies": { - "@expo/server": "^0.5.0", - "arg": "^5.0.2", - "chalk": "^4.1.2", - "compression": "^1.7.4", - "connect": "^3.7.0", - "express": "^4.19.2", - "freeport-async": "^2.0.0", - "getenv": "^2.0.0", - "morgan": "^1.10.0", - "open": "^8.4.2", - "serve-static": "^1.15.0", - "stream-json": "^1.8.0" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, - "bin": { - "expo-atlas": "build/src/cli/bin.js" + "engines": { + "node": ">= 0.4" }, - "peerDependencies": { - "expo": "*" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-atlas/node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { - "safe-buffer": "5.2.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/expo-atlas/node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/expo-atlas/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": ">= 0.4" } }, - "node_modules/expo-atlas/node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-atlas/node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "dev": true, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/expo-atlas/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/expo-atlas/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 6" } }, - "node_modules/expo-atlas/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "node_modules/expo-atlas/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/expo-atlas/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/expo-audio": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.5.tgz", - "integrity": "sha512-B2UpahrjHDSi4BPP9rwZIDm1aNBzZ+KwVj09nIoQo2XC5ng2DuHBUFZF5cISX7gmUjS2HhsXtV5/CvKJLUt+6g==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "license": "MIT", - "peerDependencies": { - "expo": "*", - "expo-asset": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": ">=10" } }, - "node_modules/expo-build-properties": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-55.0.6.tgz", - "integrity": "sha512-DfNRMAOGK3a2yao5RmCgNIz4bvCBFS8uHBHwYbd6RZos0n3Qqs96/l+Y9XMWJ/j7xVlXrTacw2wwwstqBGbwYA==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@expo/schema-utils": "^55.0.2", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/expo-build-properties/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/expo-clipboard": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-55.0.5.tgz", - "integrity": "sha512-uzGQikfr46+E8bL//tzo+049VYFUzcc3vFgIqImjPrwF5oboKVkOvzsnwhTIQNC++fyU5i3jkLcGd+YK5EwcmA==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, - "node_modules/expo-constants": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.4.tgz", - "integrity": "sha512-zdPxsYnL8LrW91sXivdBIH5nouTDUG0npMZxaYhvEO/2p60iN0W4jK3n2sRFrPl31WctLWSs4ato/wIKnRuUFA==", - "license": "MIT", + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", "dependencies": { - "@expo/config": "~55.0.4", - "@expo/env": "~2.1.0" + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" }, - "peerDependencies": { - "expo": "*", - "react-native": "*" + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" } }, - "node_modules/expo-dev-client": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-55.0.5.tgz", - "integrity": "sha512-p0xkyrCYXztUrVl6fqIrhUVR30Cxp5PbP9Vv1IXl2po8OkFDQklu5y908NBN/oeWpgv1lSgKpRTdZ1G2nsJ7IQ==", + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", "dependencies": { - "expo-dev-launcher": "55.0.6", - "expo-dev-menu": "55.0.5", - "expo-dev-menu-interface": "55.0.1", - "expo-manifests": "~55.0.5", - "expo-updates-interface": "~55.1.1" + "clsx": "^2.1.1" }, - "peerDependencies": { - "expo": "*" + "funding": { + "url": "https://polar.sh/cva" } }, - "node_modules/expo-dev-launcher": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-55.0.6.tgz", - "integrity": "sha512-Zrmdc0cgvizmX9Wd+Kc5iz0T5QQ2DSsx1Sedww9Ra4qQlUcL2GzoVnDqqw63zI5ax+rnMbBVWyiQUqHN1w/l/A==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, "license": "MIT", "dependencies": { - "@expo/schema-utils": "^55.0.2", - "expo-dev-menu": "55.0.5", - "expo-manifests": "~55.0.5" + "restore-cursor": "^3.1.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=8" } }, - "node_modules/expo-dev-menu": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-55.0.5.tgz", - "integrity": "sha512-NCNvsUl+GaVD/FgzEiHtNBLoj4LCE2xE40FKsYsV25csNAp2JizeR5eSIAKW2NX4UTWvgdqOQMIoXhERt7pZBw==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { - "expo-dev-menu-interface": "55.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=12" } }, - "node_modules/expo-dev-menu-interface": { - "version": "55.0.1", - "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-55.0.1.tgz", - "integrity": "sha512-FkNtwq1q6NmYoy28pj+ZLuHmirJgc039pQbJ167MZJIaprLcMN1yy67qA7xBHK+FNJ8AN8kGCtMTPByg5UC72A==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "license": "MIT", - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=0.8" } }, - "node_modules/expo-device": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-55.0.6.tgz", - "integrity": "sha512-GCO3shHTn8zk5FUBywra3qyFXv08uNQpJSGeNg/gBBJw+GVpgtZ/9mhB3gVh3daueCV+PWRFWn14QT3lW6PwqQ==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "license": "MIT", "dependencies": { - "ua-parser-js": "^0.7.33" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=6" } }, - "node_modules/expo-drizzle-studio-plugin": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/expo-drizzle-studio-plugin/-/expo-drizzle-studio-plugin-0.2.1.tgz", - "integrity": "sha512-AjMC7SOutMAv/MkeJSp/26gnHLAA17SG8EtsjIKW6tDcBkq4plDVhjMLusoGe9f0vzYK8KrOvWjEWZ/R+KvIGg==", + "node_modules/clone-deep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "license": "MIT", - "peerDependencies": { - "expo": ">=53.0.5", - "expo-sqlite": ">=15.2.9" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/expo-eas-client": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-55.0.2.tgz", - "integrity": "sha512-fjOgSXaZFBK2Xmzn/uw0DTF3BsYv97JEa4PYXXqVCEvNJPwJB1cV1eX6Xyq6iKGIhMPH9k62sOc+oUdt094WCw==", - "license": "MIT" - }, - "node_modules/expo-file-system": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.5.tgz", - "integrity": "sha512-ZD9uJS4tmmyPBHcW7j90+CUsdvfavXdSHSQWG22g7Zm1x02E5elHKOAhsv9gFDGsMDc1nvgR+IvrWlokjkXVSQ==", + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "license": "MIT", - "peerDependencies": { - "expo": "*", - "react-native": "*" + "engines": { + "node": ">=6" } }, - "node_modules/expo-font": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", - "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", - "license": "MIT", - "dependencies": { - "fontfaceobserver": "^2.1.0" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "node_modules/cmd-shim": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", + "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/expo-glass-effect": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-55.0.5.tgz", - "integrity": "sha512-ui3yOuntcqLukx32mPLcnYucRGN0zWk67euC45t6WlM6IPjXsRo6Z830drjKE7LPWbpWlRbOkdM6BpoAj+yDCQ==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/expo-haptics": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-55.0.5.tgz", - "integrity": "sha512-8bUIjxLtET5290p0WKyMQ8S3lvxMFEOdbA3GHt07QhgPf0eqeCtsH8/+g+ojtVT9RieZM9dZBHiqofdKpwCQfg==", + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "license": "MIT" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "license": "MIT", - "peerDependencies": { - "expo": "*" + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" } }, - "node_modules/expo-image": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", - "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "sf-symbols-typescript": "^2.2.0" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" + "color-name": "~1.1.4" }, - "peerDependenciesMeta": { - "react-native-web": { - "optional": true - } + "engines": { + "node": ">=7.0.0" } }, - "node_modules/expo-json-utils": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-55.0.0.tgz", - "integrity": "sha512-aupt/o5PDAb8dXDCb0JcRdkqnTLxe/F+La7jrnyd/sXlYFfRgBJLFOa1SqVFXm1E/Xam1SE/yw6eAb+DGY7Arg==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/expo-keep-awake": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", - "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*" + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/expo-linear-gradient": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-55.0.5.tgz", - "integrity": "sha512-zesU+u1/chAFCq+hYtV1xy/5XeKbDWTytOrvJlI3cfxUXV3Ezm9hP3xV6iCzbc72a5ROJYyXLAvMuoM4Pl9ZOg==", + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/expo-linking": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-55.0.4.tgz", - "integrity": "sha512-n4gKPzxskShfkiXZoMMOcgyJ/JgwmyOCLSBxBBg3dsBetg+KGTB5vZw7oLCu/MsWuKfbsbc/eyuvzzDyWTrpJw==", + "node_modules/comlink": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", - "dependencies": { - "expo-constants": "~55.0.4", - "invariant": "^2.2.4" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=18" } }, - "node_modules/expo-localization": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-55.0.5.tgz", - "integrity": "sha512-1AQvwtTqIH1aBZUiGI7kKFs5bTrfJOqYu4wCwmbB18P99dUZ8R4AfYzwmqI3aT/v1LggH5P7WjoW/NI+f40jpg==", + "node_modules/comment-json": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", + "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", "license": "MIT", "dependencies": { - "rtl-detect": "^1.0.2" + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" }, - "peerDependencies": { - "expo": "*", - "react": "*" + "engines": { + "node": ">= 6" } }, - "node_modules/expo-manifests": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-55.0.5.tgz", - "integrity": "sha512-GXSVnEkAJ1o71L/WshV/NmDda/vnD4poDDKi/oSYSMd8him2u0GfqqzCsgec6Odlqz5fMqXO4JgoBaWKtzn8Aw==", + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.4", - "expo-json-utils": "~55.0.0" + "mime-db": ">= 1.43.0 < 2" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 0.6" } }, - "node_modules/expo-module-scripts": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/expo-module-scripts/-/expo-module-scripts-3.5.4.tgz", - "integrity": "sha512-grEDrWiUyB5X1F5slHu7lUEbU7sDj1CbokUmKezTt/Zbz34xQFwCuHQlmv4Tl2LPyjJVHZls3VnEytfJ+5yYUw==", + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "license": "MIT", "dependencies": { - "@babel/cli": "^7.23.4", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/preset-env": "^7.23.8", - "@babel/preset-typescript": "^7.23.3", - "@expo/npm-proofread": "^1.0.1", - "@testing-library/react-hooks": "^7.0.1", - "@tsconfig/node18": "^18.2.2", - "@types/jest": "^29.2.1", - "babel-plugin-dynamic-import-node": "^2.3.3", - "babel-preset-expo": "~11.0.15", - "commander": "^2.19.0", - "eslint-config-universe": "^12.0.0", - "find-yarn-workspace-root": "^2.0.0", - "glob": "^7.1.7", - "jest-expo": "~51.0.0-unreleased", - "jest-snapshot-prettier": "npm:prettier@^2", - "jest-watch-typeahead": "2.2.1", - "ts-jest": "~29.0.4", - "typescript": "^5.1.3" + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" }, - "bin": { - "expo-module": "bin/expo-module.js" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/expo-module-scripts/node_modules/@babel/generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", - "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.2.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "ms": "2.0.0" } }, - "node_modules/expo-module-scripts/node_modules/@expo/config": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.4.tgz", - "integrity": "sha512-g5ns5u1JSKudHYhjo1zaSfkJ/iZIcWmUmIQptMJZ6ag1C0ShL2sj8qdfU8MmAMuKLOgcIfSaiWlQnm4X3VJVkg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~8.0.8", - "@expo/config-types": "^51.0.3", - "@expo/json-file": "^8.3.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "3.34.0" - } + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, - "node_modules/expo-module-scripts/node_modules/@expo/config-plugins": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.11.tgz", - "integrity": "sha512-oALE1HwnLFthrobAcC9ocnR9KXLzfWEjgIe4CPe+rDsfC6GDs8dGYCXfRFoCEzoLN4TGYs9RdZ8r0KoCcNrm2A==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^51.0.3", - "@expo/json-file": "~8.3.0", - "@expo/plist": "^0.1.0", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slash": "^3.0.0", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" - } + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, - "node_modules/expo-module-scripts/node_modules/@expo/config-plugins/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "license": "ISC", + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.10.0" } }, - "node_modules/expo-module-scripts/node_modules/@expo/config-types": { - "version": "51.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.3.tgz", - "integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" + "ms": "2.0.0" } }, - "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-module-scripts/node_modules/@expo/json-file": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", - "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/expo-module-scripts/node_modules/@expo/json-file/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" + "engines": { + "node": ">= 0.6" } }, - "node_modules/expo-module-scripts/node_modules/@expo/plist": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", - "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "~0.7.7", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" + "engines": { + "node": ">=6.6.0" } }, - "node_modules/expo-module-scripts/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/core-js": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", + "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/expo-module-scripts/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", - "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", "license": "MIT", "dependencies": { - "@react-native/codegen": "0.74.87" + "browserslist": "^4.28.1" }, - "engines": { - "node": ">=18" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/expo-module-scripts/node_modules/@react-native/babel-preset": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", - "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "@react-native/babel-plugin-codegen": "0.74.87", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" + "object-assign": "^4", + "vary": "^1" }, "engines": { - "node": ">=18" + "node": ">= 0.10" }, - "peerDependencies": { - "@babel/core": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/expo-module-scripts/node_modules/@react-native/codegen": { - "version": "0.74.87", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", - "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.20.0", - "glob": "^7.1.1", - "hermes-parser": "0.19.1", - "invariant": "^2.2.4", - "jscodeshift": "^0.14.0", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=18" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/expo-module-scripts/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/expo-module-scripts/node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expo-module-scripts/node_modules/@types/yargs": { - "version": "13.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", - "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/expo-module-scripts/node_modules/@xmldom/xmldom": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", - "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", - "deprecated": "this version is no longer supported, please update to at least 0.8.*", - "license": "MIT", + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, "engines": { - "node": ">=10.0.0" + "node": ">=20" } }, - "node_modules/expo-module-scripts/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "node-fetch": "^2.7.0" } }, - "node_modules/expo-module-scripts/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=4" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler": { - "version": "0.0.0-experimental-592953e-20240517", - "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-592953e-20240517.tgz", - "integrity": "sha512-OjG1SVaeQZaJrqkMFJatg8W/MTow8Ak5rx2SI0ETQBO1XvOk/XZGMbltNCPdFJLKghBYoBjC+Y3Ap/Xr7B01mA==", - "license": "MIT", - "dependencies": { - "@babel/generator": "7.2.0", - "@babel/types": "^7.19.0", - "chalk": "4", - "invariant": "^2.2.4", - "pretty-format": "^24", - "zod": "^3.22.4", - "zod-validation-error": "^2.1.0" - } + "node_modules/cross-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "node_modules/cross-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-native-web": { - "version": "0.19.13", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", - "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/babel-preset-expo": { - "version": "11.0.15", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.15.tgz", - "integrity": "sha512-rgiMTYwqIPULaO7iZdqyL7aAff9QLOX6OWUtLZBlOrOTreGY1yHah/5+l8MvI6NVc/8Zj5LY4Y5uMSnJIuzTLw==", + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", "license": "MIT", "dependencies": { - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.74.87", - "babel-plugin-react-compiler": "0.0.0-experimental-592953e-20240517", - "babel-plugin-react-native-web": "~0.19.10", - "react-refresh": "^0.14.2" + "hyphenate-style-name": "^1.0.3" } }, - "node_modules/expo-module-scripts/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "1.1.3" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/expo-module-scripts/node_modules/color-name": { + "node_modules/css-tree": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "license": "MIT", "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" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8.0.0" } }, - "node_modules/expo-module-scripts/node_modules/getenv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", - "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", - "license": "MIT", + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", "engines": { - "node": ">=6" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/expo-module-scripts/node_modules/hermes-estree": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", - "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", - "license": "MIT" - }, - "node_modules/expo-module-scripts/node_modules/hermes-parser": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", - "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "license": "MIT", - "dependencies": { - "hermes-estree": "0.19.1" + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" } }, - "node_modules/expo-module-scripts/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "css-tree": "~2.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/expo-module-scripts/node_modules/jest-expo": { - "version": "51.0.4", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.4.tgz", - "integrity": "sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, "license": "MIT", "dependencies": { - "@expo/config": "~9.0.0-beta.0", - "@expo/json-file": "^8.3.0", - "@jest/create-cache-key-function": "^29.2.1", - "babel-jest": "^29.2.1", - "find-up": "^5.0.0", - "jest-environment-jsdom": "^29.2.1", - "jest-watch-select-projects": "^2.0.0", - "jest-watch-typeahead": "2.2.1", - "json5": "^2.2.3", - "lodash": "^4.17.19", - "react-test-renderer": "18.2.0", - "stacktrace-js": "^2.0.2" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, - "bin": { - "jest": "bin/jest.js" + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/expo-module-scripts/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "cssom": "~0.3.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/expo-module-scripts/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 12" } }, - "node_modules/expo-module-scripts/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/expo-module-scripts/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/expo-module-scripts/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-module-scripts/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "dev": true, "license": "MIT" }, - "node_modules/expo-module-scripts/node_modules/react-test-renderer": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", - "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { - "react-is": "^18.2.0", - "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.0" + "ms": "^2.1.3" }, - "peerDependencies": { - "react": "^18.2.0" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/expo-module-scripts/node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/expo-module-scripts/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10" } }, - "node_modules/expo-module-scripts/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/expo-module-scripts/node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "license": "MIT", + "node_modules/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" + "execa": "^7.1.1" }, "engines": { - "node": ">=8" + "node": ">= 16" } }, - "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/default-gateway/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": "*" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/expo-module-scripts/node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "node_modules/default-gateway/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" } }, - "node_modules/expo-module-scripts/node_modules/xmlbuilder": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", - "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "node_modules/default-gateway/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-module-scripts/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "node_modules/default-gateway/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, "funding": { - "url": "https://github.com/sponsors/colinhacks" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-module-scripts/node_modules/zod-validation-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", - "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, "engines": { - "node": ">=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "zod": "^3.18.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-modules-autolinking": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", - "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", + "node_modules/default-gateway/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, "license": "MIT", "dependencies": { - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0" + "mimic-fn": "^4.0.0" }, - "bin": { - "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-modules-autolinking/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/default-gateway/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-modules-core": { - "version": "55.0.8", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.8.tgz", - "integrity": "sha512-WWcbsDmxqz7YQjr0dDRCpiwrWYoz/T4mxUh7ZbUzj8SzsUGrvmvczPj2kAS7hHviimRyfZcTenAh22Wuw/abBA==", + "node_modules/default-gateway/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, "license": "MIT", - "dependencies": { - "invariant": "^2.2.4" + "engines": { + "node": ">=12" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-router": { - "version": "55.0.0-preview.7", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-55.0.0-preview.7.tgz", - "integrity": "sha512-nrigtPHg5/5ZIeY0Qjo6/wM7N27bTbq22FuNrTgGsNOt5V8sPkvs8lsMl6OsnvEZCKJ2xFYPkL3UGSEvGVxT9A==", + "node_modules/default-values": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/default-values/-/default-values-1.0.2.tgz", + "integrity": "sha512-OaZEvojjexigvv1IT6N0rKUD5Af7fG11a0jg87jySv5xzjc2+IEW9oWNvqxWLHGhShRRZ0QopCGzGjJv/aY+mw==", + "license": "MIT" + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "license": "MIT", "dependencies": { - "@expo/metro-runtime": "^55.0.5", - "@expo/schema-utils": "^55.0.2", - "@radix-ui/react-slot": "1.2.0", - "@radix-ui/react-tabs": "^1.1.12", - "@react-navigation/bottom-tabs": "7.10.1", - "@react-navigation/native": "7.1.28", - "@react-navigation/native-stack": "7.10.1", - "client-only": "^0.0.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "expo-glass-effect": "^55.0.5", - "expo-image": "^55.0.3", - "expo-server": "^55.0.3", - "expo-symbols": "^55.0.3", - "fast-deep-equal": "^3.1.3", - "invariant": "^2.2.4", - "nanoid": "^3.3.8", - "query-string": "^7.1.3", - "react-fast-compare": "^3.2.2", - "react-native-is-edge-to-edge": "^1.1.6", - "semver": "~7.6.3", - "server-only": "^0.0.1", - "sf-symbols-typescript": "^2.1.0", - "shallowequal": "^1.1.0", - "use-latest-callback": "^0.2.1", - "vaul": "^1.1.2" - }, - "peerDependencies": { - "@expo/log-box": "55.0.6", - "@expo/metro-runtime": "^55.0.5", - "@react-navigation/drawer": "^7.7.2", - "@testing-library/react-native": ">= 12.0.0", - "expo": "*", - "expo-constants": "^55.0.4", - "expo-linking": "^55.0.4", - "react": "*", - "react-dom": "*", - "react-native": "*", - "react-native-gesture-handler": "*", - "react-native-reanimated": "*", - "react-native-safe-area-context": ">= 5.4.0", - "react-native-screens": "*", - "react-native-web": "*", - "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + "clone": "^1.0.2" }, - "peerDependenciesMeta": { - "@react-navigation/drawer": { - "optional": true - }, - "@testing-library/react-native": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-native-gesture-handler": { - "optional": true - }, - "react-native-reanimated": { - "optional": true - }, - "react-native-web": { - "optional": true - }, - "react-server-dom-webpack": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expo-router/node_modules/@radix-ui/react-slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", - "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-router/node_modules/@react-navigation/bottom-tabs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", - "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0" - }, - "peerDependencies": { - "@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" + "engines": { + "node": ">=8" } }, - "node_modules/expo-router/node_modules/@react-navigation/native-stack": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.10.1.tgz", - "integrity": "sha512-8jt7olKysn07HuKKSjT/ahZZTV+WaZa96o9RI7gAwh7ATlUDY02rIRttwvCyjovhSjD9KCiuJ+Hd4kwLidHwJw==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0", - "warn-once": "^0.1.1" - }, - "peerDependencies": { - "@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" - } - }, - "node_modules/expo-router/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expo-server": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", - "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", "engines": { - "node": ">=20.16.0" + "node": ">=0.4.0" } }, - "node_modules/expo-sharing": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-55.0.6.tgz", - "integrity": "sha512-4X88AnVZTWUjCEYNvHFtd2UMEX43G2zFJBxVANI8RzAjDny4QrzTgdCEFNg0ufZyGMxZL3V5gzUkXVP5y7IEYg==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "license": "MIT", - "dependencies": { - "@expo/config-plugins": "^55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/plist": "^0.5.2" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": ">= 0.8" } }, - "node_modules/expo-splash-screen": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-55.0.5.tgz", - "integrity": "sha512-Q8PSVonkFEMUykDMBw9kdwNOtc9cMD7Vlz+MU4PYBTHrVQB5EDONnecmDwFDPYF8wc57ef73wkYxuVmrQO533A==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "license": "MIT", - "dependencies": { - "@expo/prebuild-config": "^55.0.4" - }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/expo-sqlite": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-55.0.5.tgz", - "integrity": "sha512-tYaktd5dQc3fEsmRSSvPBW80o6sq3mzLyOpQ9smMFWSGKvcSJsfvpbE6c8axgdhRMb3OMF4UAhASui+kL9GONQ==", - "license": "MIT", - "dependencies": { - "await-lock": "^2.2.2" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" } }, - "node_modules/expo-status-bar": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-55.0.2.tgz", - "integrity": "sha512-iV/Az9SqwY2j5e/tZ7Fz7vwolfXp0xFTScET4lnS615oLQfdhyI2HOTg4CL4q7UVlSDW3HN4rCkDK2oASNVO7g==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, "license": "MIT", - "dependencies": { - "react-native-is-edge-to-edge": "^1.2.1" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=8" } }, - "node_modules/expo-structured-headers": { - "version": "55.0.0", - "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-55.0.0.tgz", - "integrity": "sha512-udaNvuWb45/Sryq9FLC/blwgOChhznuqlTrUzVjC0T83pMdcmscKJX23lnNDW6hCec8p81Y3z1DIFwIyk0g/PQ==", + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", "license": "MIT" }, - "node_modules/expo-symbols": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-55.0.3.tgz", - "integrity": "sha512-r3AnrAAPw/zqha6dBdkJV7ueELy/yyeEKU38qzFFz37w1mhcXobuXahnfPSnY54lKrTbqrSiFMj/aGh25ElnoQ==", + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "license": "MIT", - "dependencies": { - "@expo-google-fonts/material-symbols": "^0.4.1", - "sf-symbols-typescript": "^2.0.0" - }, - "peerDependencies": { - "expo": "*", - "expo-font": "*", - "react": "*", - "react-native": "*" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expo-system-ui": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-55.0.5.tgz", - "integrity": "sha512-tcE0SJCfKZgESWUNBleqNIdgFZj6Y41WvgOpwMDhke9Fezwsput1MWz2L2QyHoeo1bUE5KuNuI5+nCWdecSnAQ==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "license": "MIT", "dependencies": { - "@react-native/normalize-colors": "0.83.1", - "debug": "^4.3.2" + "path-type": "^4.0.0" }, - "peerDependencies": { - "expo": "*", - "react-native": "*", - "react-native-web": "*" + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dnssd-advertise": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", + "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" }, - "peerDependenciesMeta": { - "react-native-web": { - "optional": true - } + "engines": { + "node": ">=0.10.0" } }, - "node_modules/expo-updates": { - "version": "55.0.7", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-55.0.7.tgz", - "integrity": "sha512-AkpyXJ2nRfKSB1MF3qkHYQeuG7Or9FMWcQAbrkIzETGeA3jpfPo0APvuq5PJjZf1VDX2AN3zznmYjrQ/MSODTA==", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { - "@expo/code-signing-certificates": "^0.0.6", - "@expo/plist": "^0.5.2", - "@expo/spawn-async": "^1.7.2", - "arg": "4.1.0", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "expo-eas-client": "~55.0.2", - "expo-manifests": "~55.0.5", - "expo-structured-headers": "~55.0.0", - "expo-updates-interface": "~55.1.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "ignore": "^5.3.1", - "resolve-from": "^5.0.0" - }, - "bin": { - "expo-updates": "bin/cli.js" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/expo-updates-interface": { - "version": "55.1.1", - "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-55.1.1.tgz", - "integrity": "sha512-++rlh9dNRUgm+uqN+x4vB/8ELidt0gc3kbwec55YzRizdD845kn5ufjTcGpkGs9SbAYHsP0eh8axlKHpY/v7Kg==", - "license": "MIT", - "peerDependencies": { - "expo": "*" + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/expo-updates/node_modules/arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", - "license": "MIT" + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" }, - "node_modules/expo-updates/node_modules/glob": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", - "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", - "license": "BlueOak-1.0.0", + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "webidl-conversions": "^7.0.0" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/expo-updates/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "domelementtype": "^2.3.0" }, "engines": { - "node": "20 || >=22" + "node": ">= 4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "license": "Apache-2.0" + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "dev": true, - "license": "MIT", + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/express-rate-limit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", - "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "10.0.1" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/express-rate-limit" - }, - "peerDependencies": { - "express": ">= 4.11" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/express/node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "node_modules/drizzle-kit": { + "version": "0.31.9", + "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.31.9.tgz", + "integrity": "sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" + "@drizzle-team/brocli": "^0.10.2", + "@esbuild-kit/esm-loader": "^2.5.5", + "esbuild": "^0.25.4", + "esbuild-register": "^3.5.0" }, - "engines": { - "node": ">= 0.6" + "bin": { + "drizzle-kit": "bin.cjs" } }, - "node_modules/express/node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "node_modules/drizzle-orm": { + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", + "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=4", + "@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": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/sql.js": "*", + "@upstash/redis": ">=1.34.7", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=14.0.0", + "gel": ">=2", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "sql.js": ">=1", + "sqlite3": ">=5" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "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 + }, + "@tidbcloud/serverless": { + "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 + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } } }, - "node_modules/express/node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "dev": true, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">= 0.4" } }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, - "node_modules/express/node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "license": "ISC" }, - "node_modules/express/node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "dev": true, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/express/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, - "node_modules/express/node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "dev": true, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">= 0.8" } }, - "node_modules/express/node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", "engines": { - "node": ">= 18" + "node": ">=0.12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^1.1.1" - }, - "bin": { - "fxparser": "src/cli/cli.js" + "node": ">=8" } }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/fb-dotslash": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", - "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", - "license": "(MIT OR Apache-2.0)", + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, + "license": "MIT", "bin": { - "dotslash": "bin/dotslash" + "envinfo": "dist/cli.js" }, "engines": { - "node": ">=20" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" + "node": ">=4" } }, - "node_modules/fbjs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", - "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, "license": "MIT", "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^1.0.35" + "is-arrayish": "^0.2.1" } }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "license": "MIT" - }, - "node_modules/fbjs/node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "license": "MIT", "dependencies": { - "node-fetch": "^2.7.0" + "stackframe": "^1.3.4" } }, - "node_modules/fbjs/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/errorhandler": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", + "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "accepts": "~1.3.8", + "escape-html": "~1.0.3" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">= 0.8" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/fbjs/node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "license": "MIT", "dependencies": { - "asap": "~2.0.3" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fbjs/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/fbjs/node_modules/ua-parser-js": { - "version": "1.0.41", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", - "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "bin": { - "ua-parser-js": "script/cli.js" - }, "engines": { - "node": "*" + "node": ">= 0.4" } }, - "node_modules/fbjs/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/fbjs/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/fd-package-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz", - "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==", - "dev": true, + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", "license": "MIT", "dependencies": { - "walk-up-path": "^4.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "license": "MIT", "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": "^12.20 || >= 14.13" + "node": ">= 0.4" } }, - "node_modules/fetch-nodeshim": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", - "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", - "license": "MIT" - }, - "node_modules/fflate": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", - "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", - "license": "MIT" - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=16.0.0" + "node": ">= 0.4" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "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" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "debug": "^4.3.4" }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", "dependencies": { - "ms": "2.0.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/eslint": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">= 0.8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/eslint-config-expo": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-expo/-/eslint-config-expo-55.0.0.tgz", + "integrity": "sha512-YvhaKrp1g7pR/qjdI12E5nw9y0DJZWgYr815vyW8wskGLsFvxATY3mtKL8zm3ZYzWj3Bvc37tRIS661TEkrv9A==", "license": "MIT", "dependencies": { - "ee-first": "1.1.1" + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-expo": "^1.0.0", + "eslint-plugin-import": "^2.30.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "^5.1.0", + "globals": "^16.0.0" }, - "engines": { - "node": ">= 0.8" + "peerDependencies": { + "eslint": ">=8.10" } }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/eslint-config-expo/node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "license": "MIT", "engines": { - "node": ">= 0.6" + "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" } }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "node_modules/eslint-config-expo/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/eslint-config-universe": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-universe/-/eslint-config-universe-12.1.0.tgz", + "integrity": "sha512-nAT0/rcOyYvsy0tY1yq0/BchUQImRCpORONzCvLkjixRBH5CbkMddb/V8ZlOLPgkfu3lp+sByRmSXNfoupTj2w==", "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "eslint": ">=8.10", + "prettier": ">=3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "license": "MIT", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=6" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "license": "BSD-2-Clause", "dependencies": { - "p-try": "^2.0.0" + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=6" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { - "node": ">=6" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, "engines": { - "node": ">=4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/find-cache-dir/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "license": "MIT", "engines": { - "node": ">=6" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "license": "MIT", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "license": "BSD-2-Clause", "dependencies": { - "find-up": "^3.0.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=10" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "node_modules/eslint-config-universe/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=16" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "license": "ISC" - }, - "node_modules/flow-enums-runtime": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", - "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", - "license": "MIT" - }, - "node_modules/flow-parser": { - "version": "0.299.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.299.0.tgz", - "integrity": "sha512-phGMRoNt6SNglPHGRbCyWm9/pxfe6t/t4++EIYPaBGWT6e0lphLBgUMrvpL62NbRo9R549o3oqrbKHq82kANCw==", + "node_modules/eslint-config-universe/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", - "engines": { - "node": ">=0.4.0" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/fontfaceobserver": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", - "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", - "license": "BSD-2-Clause" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/eslint-config-universe/node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, + "node_modules/eslint-config-universe/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/eslint" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, + "node_modules/eslint-config-universe/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=14" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "node_modules/eslint-config-universe/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/formatly": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz", - "integrity": "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==", - "dev": true, + "node_modules/eslint-config-universe/node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "license": "MIT", - "dependencies": { - "fd-package-json": "^2.0.0" - }, - "bin": { - "formatly": "bin/index.mjs" - }, "engines": { - "node": ">=18.3.0" + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "license": "MIT", "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/framer-motion": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", - "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", - "license": "MIT", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "license": "ISC", "dependencies": { - "@motionone/dom": "10.12.0", - "framesync": "6.0.1", - "hey-listen": "^1.0.8", - "popmotion": "11.0.3", - "style-value-types": "5.0.0", - "tslib": "^2.1.0" + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" }, "peerDependencies": { - "react": ">=16.8 || ^17.0.0 || ^18.0.0", - "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0" + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, - "node_modules/framesync": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", - "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "license": "MIT", "dependencies": { - "tslib": "^2.1.0" + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/freeport-async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", - "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", - "dev": true, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node_modules/eslint-plugin-drizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-drizzle/-/eslint-plugin-drizzle-0.2.3.tgz", + "integrity": "sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==", + "license": "Apache-2.0", + "peerDependencies": { + "eslint": ">=8.0.0" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "license": "MIT" - }, - "node_modules/fs.realpath": { + "node_modules/eslint-plugin-expo": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, + "resolved": "https://registry.npmjs.org/eslint-plugin-expo/-/eslint-plugin-expo-1.0.0.tgz", + "integrity": "sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@typescript-eslint/types": "^8.29.1", + "@typescript-eslint/utils": "^8.29.1", + "eslint": "^9.24.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.10" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": ">= 0.4" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "license": "MIT", + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/eslint-plugin-prettier": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" + }, "engines": { - "node": ">=6.9.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/eslint-plugin-react-compiler": { + "version": "19.1.0-rc.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.1.0-rc.2.tgz", + "integrity": "sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "hermes-parser": "^0.25.1", + "zod": "^3.22.4", + "zod-validation-error": "^3.0.3" }, "engines": { - "node": ">= 0.4" + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": ">=7" } }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "node_modules/eslint-plugin-react-compiler/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react-compiler/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "hermes-estree": "0.25.1" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/eslint-plugin-react-compiler/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8.0.0" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" }, "engines": { - "node": ">= 0.4" + "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" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/eslint-plugin-react-hooks/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react-hooks/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "hermes-estree": "0.25.1" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", - "license": "MIT", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "license": "BSD-2-Clause", "dependencies": { - "resolve-pkg-maps": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/getenv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", - "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "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", - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": "*" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", "engines": { - "node": ">=10.13.0" + "node": ">=4" } }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "license": "MIT", + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "license": "BSD-3-Clause", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=10" + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4.0" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "license": "MIT", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/event-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", + "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.0" + "eventsource-parser": "^3.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, "engines": { - "node": ">= 0.4" + "node": ">= 0.8.0" } }, - "node_modules/hermes-compiler": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", - "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", - "license": "MIT" - }, - "node_modules/hermes-estree": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", - "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", - "license": "MIT" - }, - "node_modules/hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", - "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "license": "MIT", "dependencies": { - "hermes-estree": "0.32.0" - } - }, - "node_modules/hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", - "license": "MIT" - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/hono": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.9.tgz", - "integrity": "sha512-Eaw2YTGM6WOxA6CXbckaEvslr2Ne4NFsKrvc0v97JD5awbmeBLO5w9Ho9L9kmKonrwF9RJlW6BxT1PVv/agBHQ==", - "dev": true, - "license": "MIT", + "@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" + }, "engines": { - "node": ">=16.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "license": "ISC", + "node_modules/expo": { + "version": "55.0.0-preview.10", + "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.10.tgz", + "integrity": "sha512-BtHgdcu/XS4yYSJTB4HHbYogT2qHl6S4usFqUPhoFfVu/F440VU3J98uUqbDLh5I8OcsZ2PbhjRpOy7uR+MExg==", + "license": "MIT", "dependencies": { - "lru-cache": "^10.0.1" + "@babel/runtime": "^7.20.0", + "@expo/cli": "55.0.7", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", + "@expo/devtools": "55.0.2", + "@expo/fingerprint": "0.16.3", + "@expo/local-build-cache-provider": "55.0.3", + "@expo/log-box": "55.0.6", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "55.0.5", + "@expo/vector-icons": "^15.0.2", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~55.0.4", + "expo-asset": "~55.0.4", + "expo-constants": "~55.0.4", + "expo-file-system": "~55.0.5", + "expo-font": "~55.0.3", + "expo-keep-awake": "~55.0.2", + "expo-modules-autolinking": "55.0.3", + "expo-modules-core": "55.0.8", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", + "whatwg-url-minimum": "^0.1.1" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "bin": { + "expo": "bin/cli", + "expo-modules-autolinking": "bin/autolinking", + "fingerprint": "bin/fingerprint" + }, + "peerDependencies": { + "@expo/dom-webview": "*", + "@expo/metro-runtime": "*", + "react": "*", + "react-native": "*", + "react-native-webview": "*" + }, + "peerDependenciesMeta": { + "@expo/dom-webview": { + "optional": true + }, + "@expo/metro-runtime": { + "optional": true + }, + "react-native-webview": { + "optional": true + } } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" + "node_modules/expo-application": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-55.0.5.tgz", + "integrity": "sha512-+TSHZMobYEe96CcKRYaNMdO9CcuKpO/hCjBcB0SeoOkEwDbfPyY3KcdoVW6fU7xyPZYN0wucCnLgTXKqAeB5sQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*" + } }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/expo-asset": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.4.tgz", + "integrity": "sha512-eaPPe9Sw4V0nL/KkEvuWpyeeSoGhP2fu1ZA7wkldqywhMVhhY+7kerMkQ7nPgJVtevIfkQRw7wD8ghZEzrKzmg==", "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "@expo/image-utils": "^0.8.12", + "expo-constants": "~55.0.4" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/expo-atlas": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/expo-atlas/-/expo-atlas-0.4.3.tgz", + "integrity": "sha512-nN2bouxFvMsqZqLl0ka+eI9Ofida0PcuoE4v+7fHlgyp95X2cCL8Acf0nRKXmmIBEYazdw0d7BAOZfC0b41oxA==", "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "@expo/server": "^0.5.0", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "compression": "^1.7.4", + "connect": "^3.7.0", + "express": "^4.19.2", + "freeport-async": "^2.0.0", + "getenv": "^2.0.0", + "morgan": "^1.10.0", + "open": "^8.4.2", + "serve-static": "^1.15.0", + "stream-json": "^1.8.0" }, - "engines": { - "node": ">= 0.8" + "bin": { + "expo-atlas": "build/src/cli/bin.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "peerDependencies": { + "expo": "*" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/expo-atlas/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.6" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/expo-atlas/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/expo-atlas/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "ms": "2.0.0" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/expo-atlas/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/hyphenate-style-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", - "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", - "license": "BSD-3-Clause" - }, - "node_modules/iceberg-js": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", - "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, "engines": { - "node": ">=20.0.0" + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/expo-atlas/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/expo-atlas/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 0.6" } }, - "node_modules/image-size": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "node_modules/expo-atlas/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, "license": "MIT", - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=16.x" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/expo-atlas/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/expo-atlas/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/expo-atlas/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/expo-audio": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.5.tgz", + "integrity": "sha512-B2UpahrjHDSi4BPP9rwZIDm1aNBzZ+KwVj09nIoQo2XC5ng2DuHBUFZF5cISX7gmUjS2HhsXtV5/CvKJLUt+6g==", "license": "MIT", - "engines": { - "node": ">=4" + "peerDependencies": { + "expo": "*", + "expo-asset": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, + "node_modules/expo-build-properties": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-55.0.6.tgz", + "integrity": "sha512-DfNRMAOGK3a2yao5RmCgNIz4bvCBFS8uHBHwYbd6RZos0n3Qqs96/l+Y9XMWJ/j7xVlXrTacw2wwwstqBGbwYA==", "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "@expo/schema-utils": "^55.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-build-properties/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", "bin": { - "import-local-fixture": "fixtures/cli.js" + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/expo-clipboard": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-55.0.5.tgz", + "integrity": "sha512-uzGQikfr46+E8bL//tzo+049VYFUzcc3vFgIqImjPrwF5oboKVkOvzsnwhTIQNC++fyU5i3jkLcGd+YK5EwcmA==", "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "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.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/inline-style-prefixer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", - "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", + "node_modules/expo-constants": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.4.tgz", + "integrity": "sha512-zdPxsYnL8LrW91sXivdBIH5nouTDUG0npMZxaYhvEO/2p60iN0W4jK3n2sRFrPl31WctLWSs4ato/wIKnRuUFA==", "license": "MIT", "dependencies": { - "css-in-js-utils": "^3.1.0" + "@expo/config": "~55.0.4", + "@expo/env": "~2.1.0" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "node_modules/expo-dev-client": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-55.0.5.tgz", + "integrity": "sha512-p0xkyrCYXztUrVl6fqIrhUVR30Cxp5PbP9Vv1IXl2po8OkFDQklu5y908NBN/oeWpgv1lSgKpRTdZ1G2nsJ7IQ==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" + "expo-dev-launcher": "55.0.6", + "expo-dev-menu": "55.0.5", + "expo-dev-menu-interface": "55.0.1", + "expo-manifests": "~55.0.5", + "expo-updates-interface": "~55.1.1" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/expo-dev-launcher": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-55.0.6.tgz", + "integrity": "sha512-Zrmdc0cgvizmX9Wd+Kc5iz0T5QQ2DSsx1Sedww9Ra4qQlUcL2GzoVnDqqw63zI5ax+rnMbBVWyiQUqHN1w/l/A==", "license": "MIT", "dependencies": { - "loose-envify": "^1.0.0" + "@expo/schema-utils": "^55.0.2", + "expo-dev-menu": "55.0.5", + "expo-manifests": "~55.0.5" + }, + "peerDependencies": { + "expo": "*" } }, - "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", - "dev": true, + "node_modules/expo-dev-menu": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-55.0.5.tgz", + "integrity": "sha512-NCNvsUl+GaVD/FgzEiHtNBLoj4LCE2xE40FKsYsV25csNAp2JizeR5eSIAKW2NX4UTWvgdqOQMIoXhERt7pZBw==", "license": "MIT", - "engines": { - "node": ">= 12" + "dependencies": { + "expo-dev-menu-interface": "55.0.1" + }, + "peerDependencies": { + "expo": "*" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, + "node_modules/expo-dev-menu-interface": { + "version": "55.0.1", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-55.0.1.tgz", + "integrity": "sha512-FkNtwq1q6NmYoy28pj+ZLuHmirJgc039pQbJ167MZJIaprLcMN1yy67qA7xBHK+FNJ8AN8kGCtMTPByg5UC72A==", "license": "MIT", - "engines": { - "node": ">= 0.10" + "peerDependencies": { + "expo": "*" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "node_modules/expo-device": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-55.0.6.tgz", + "integrity": "sha512-GCO3shHTn8zk5FUBywra3qyFXv08uNQpJSGeNg/gBBJw+GVpgtZ/9mhB3gVh3daueCV+PWRFWn14QT3lW6PwqQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" + "ua-parser-js": "^0.7.33" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "expo": "*" } }, - "node_modules/is-arrayish": { + "node_modules/expo-drizzle-studio-plugin": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, + "resolved": "https://registry.npmjs.org/expo-drizzle-studio-plugin/-/expo-drizzle-studio-plugin-0.2.1.tgz", + "integrity": "sha512-AjMC7SOutMAv/MkeJSp/26gnHLAA17SG8EtsjIKW6tDcBkq4plDVhjMLusoGe9f0vzYK8KrOvWjEWZ/R+KvIGg==", + "license": "MIT", + "peerDependencies": { + "expo": ">=53.0.5", + "expo-sqlite": ">=15.2.9" + } + }, + "node_modules/expo-eas-client": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-55.0.2.tgz", + "integrity": "sha512-fjOgSXaZFBK2Xmzn/uw0DTF3BsYv97JEa4PYXXqVCEvNJPwJB1cV1eX6Xyq6iKGIhMPH9k62sOc+oUdt094WCw==", "license": "MIT" }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/expo-file-system": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.5.tgz", + "integrity": "sha512-ZD9uJS4tmmyPBHcW7j90+CUsdvfavXdSHSQWG22g7Zm1x02E5elHKOAhsv9gFDGsMDc1nvgR+IvrWlokjkXVSQ==", "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "expo": "*", + "react-native": "*" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/expo-font": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", + "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", "license": "MIT", "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "fontfaceobserver": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "node_modules/expo-glass-effect": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-glass-effect/-/expo-glass-effect-55.0.5.tgz", + "integrity": "sha512-ui3yOuntcqLukx32mPLcnYucRGN0zWk67euC45t6WlM6IPjXsRo6Z830drjKE7LPWbpWlRbOkdM6BpoAj+yDCQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-haptics": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-55.0.5.tgz", + "integrity": "sha512-8bUIjxLtET5290p0WKyMQ8S3lvxMFEOdbA3GHt07QhgPf0eqeCtsH8/+g+ojtVT9RieZM9dZBHiqofdKpwCQfg==", "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" + "peerDependencies": { + "expo": "*" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "node_modules/expo-image": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", + "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "sf-symbols-typescript": "^2.2.0" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*", + "react-native-web": "*" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } } }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "node_modules/expo-json-utils": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-55.0.0.tgz", + "integrity": "sha512-aupt/o5PDAb8dXDCb0JcRdkqnTLxe/F+La7jrnyd/sXlYFfRgBJLFOa1SqVFXm1E/Xam1SE/yw6eAb+DGY7Arg==", + "license": "MIT" + }, + "node_modules/expo-keep-awake": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", + "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", "license": "MIT", - "dependencies": { - "semver": "^7.7.1" + "peerDependencies": { + "expo": "*", + "react": "*" } }, - "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node_modules/expo-linear-gradient": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-55.0.5.tgz", + "integrity": "sha512-zesU+u1/chAFCq+hYtV1xy/5XeKbDWTytOrvJlI3cfxUXV3Ezm9hP3xV6iCzbc72a5ROJYyXLAvMuoM4Pl9ZOg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/expo-linking": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-55.0.4.tgz", + "integrity": "sha512-n4gKPzxskShfkiXZoMMOcgyJ/JgwmyOCLSBxBBg3dsBetg+KGTB5vZw7oLCu/MsWuKfbsbc/eyuvzzDyWTrpJw==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "expo-constants": "~55.0.4", + "invariant": "^2.2.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/expo-localization": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-55.0.5.tgz", + "integrity": "sha512-1AQvwtTqIH1aBZUiGI7kKFs5bTrfJOqYu4wCwmbB18P99dUZ8R4AfYzwmqI3aT/v1LggH5P7WjoW/NI+f40jpg==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" + "rtl-detect": "^1.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "expo": "*", + "react": "*" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "node_modules/expo-manifests": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-55.0.5.tgz", + "integrity": "sha512-GXSVnEkAJ1o71L/WshV/NmDda/vnD4poDDKi/oSYSMd8him2u0GfqqzCsgec6Odlqz5fMqXO4JgoBaWKtzn8Aw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" + "@expo/config": "~55.0.4", + "expo-json-utils": "~55.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "expo": "*" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "node_modules/expo-module-scripts": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/expo-module-scripts/-/expo-module-scripts-3.5.4.tgz", + "integrity": "sha512-grEDrWiUyB5X1F5slHu7lUEbU7sDj1CbokUmKezTt/Zbz34xQFwCuHQlmv4Tl2LPyjJVHZls3VnEytfJ+5yYUw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "@babel/cli": "^7.23.4", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/preset-env": "^7.23.8", + "@babel/preset-typescript": "^7.23.3", + "@expo/npm-proofread": "^1.0.1", + "@testing-library/react-hooks": "^7.0.1", + "@tsconfig/node18": "^18.2.2", + "@types/jest": "^29.2.1", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-preset-expo": "~11.0.15", + "commander": "^2.19.0", + "eslint-config-universe": "^12.0.0", + "find-yarn-workspace-root": "^2.0.0", + "glob": "^7.1.7", + "jest-expo": "~51.0.0-unreleased", + "jest-snapshot-prettier": "npm:prettier@^2", + "jest-watch-typeahead": "2.2.1", + "ts-jest": "~29.0.4", + "typescript": "^5.1.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "expo-module": "bin/expo-module.js" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/@babel/generator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", + "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/types": "^7.2.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/expo-module-scripts/node_modules/@expo/config": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-9.0.4.tgz", + "integrity": "sha512-g5ns5u1JSKudHYhjo1zaSfkJ/iZIcWmUmIQptMJZ6ag1C0ShL2sj8qdfU8MmAMuKLOgcIfSaiWlQnm4X3VJVkg==", "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~8.0.8", + "@expo/config-types": "^51.0.3", + "@expo/json-file": "^8.3.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "3.34.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/expo-module-scripts/node_modules/@expo/config-plugins": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.11.tgz", + "integrity": "sha512-oALE1HwnLFthrobAcC9ocnR9KXLzfWEjgIe4CPe+rDsfC6GDs8dGYCXfRFoCEzoLN4TGYs9RdZ8r0KoCcNrm2A==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@expo/config-types": "^51.0.3", + "@expo/json-file": "~8.3.0", + "@expo/plist": "^0.1.0", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "license": "MIT", + "node_modules/expo-module-scripts/node_modules/@expo/config-plugins/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", "dependencies": { - "call-bound": "^1.0.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/expo-module-scripts/node_modules/@expo/config-types": { + "version": "51.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.3.tgz", + "integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA==", + "license": "MIT" }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@babel/highlight": "^7.10.4" } }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "license": "MIT", + "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/expo-module-scripts/node_modules/@expo/json-file": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz", + "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==", "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@babel/highlight": "^7.10.4" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/expo-module-scripts/node_modules/@expo/plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", + "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==", "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/expo-module-scripts/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", + "integrity": "sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@react-native/codegen": "0.74.87" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=18" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "node_modules/expo-module-scripts/node_modules/@react-native/babel-preset": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.87.tgz", + "integrity": "sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.74.87", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/expo-module-scripts/node_modules/@react-native/codegen": { + "version": "0.74.87", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.87.tgz", + "integrity": "sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==", "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.0", + "glob": "^7.1.1", + "hermes-parser": "0.19.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/expo-module-scripts/node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", "license": "MIT", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "license": "MIT" - }, - "node_modules/is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "node_modules/expo-module-scripts/node_modules/@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "node_modules/expo-module-scripts/node_modules/@xmldom/xmldom": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", + "deprecated": "this version is no longer supported, please update to at least 0.8.*", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10.0.0" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/expo-module-scripts/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "node_modules/expo-module-scripts/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "color-convert": "^1.9.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler": { + "version": "0.0.0-experimental-592953e-20240517", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-592953e-20240517.tgz", + "integrity": "sha512-OjG1SVaeQZaJrqkMFJatg8W/MTow8Ak5rx2SI0ETQBO1XvOk/XZGMbltNCPdFJLKghBYoBjC+Y3Ap/Xr7B01mA==", "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@babel/generator": "7.2.0", + "@babel/types": "^7.19.0", + "chalk": "4", + "invariant": "^2.2.4", + "pretty-format": "^24", + "zod": "^3.22.4", + "zod-validation-error": "^2.1.0" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/babel-plugin-react-native-web": { + "version": "0.19.13", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", + "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/babel-preset-expo": { + "version": "11.0.15", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.15.tgz", + "integrity": "sha512-rgiMTYwqIPULaO7iZdqyL7aAff9QLOX6OWUtLZBlOrOTreGY1yHah/5+l8MvI6NVc/8Zj5LY4Y5uMSnJIuzTLw==", "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.74.87", + "babel-plugin-react-compiler": "0.0.0-experimental-592953e-20240517", + "babel-plugin-react-native-web": "~0.19.10", + "react-refresh": "^0.14.2" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/expo-module-scripts/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "node_modules/expo-module-scripts/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "node_modules/expo-module-scripts/node_modules/hermes-estree": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", + "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/hermes-parser": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", + "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "hermes-estree": "0.19.1" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/expo-module-scripts/node_modules/jest-expo": { + "version": "51.0.4", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-51.0.4.tgz", + "integrity": "sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug==", "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "@expo/config": "~9.0.0-beta.0", + "@expo/json-file": "^8.3.0", + "@jest/create-cache-key-function": "^29.2.1", + "babel-jest": "^29.2.1", + "find-up": "^5.0.0", + "jest-environment-jsdom": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-test-renderer": "18.2.0", + "stacktrace-js": "^2.0.2" }, - "engines": { - "node": ">=8" + "bin": { + "jest": "bin/jest.js" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/expo-module-scripts/node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" + "node_modules/expo-module-scripts/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/expo-module-scripts/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/expo-module-scripts/node_modules/react-test-renderer": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", + "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "react-is": "^18.2.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "react": "^18.2.0" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { + "node_modules/expo-module-scripts/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/expo-module-scripts/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -20135,3657 +15833,3422 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, + "node_modules/expo-module-scripts/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expo-module-scripts/node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/expo-module-scripts/node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "license": "ISC", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/expo-module-scripts/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "license": "ISC", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/expo-module-scripts/node_modules/xmlbuilder": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8.0" } }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "node_modules/expo-module-scripts/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/expo-module-scripts/node_modules/zod-validation-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz", + "integrity": "sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.18.0" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", + "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-autolinking/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 10" } }, - "node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/expo-modules-core": { + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.8.tgz", + "integrity": "sha512-WWcbsDmxqz7YQjr0dDRCpiwrWYoz/T4mxUh7ZbUzj8SzsUGrvmvczPj2kAS7hHviimRyfZcTenAh22Wuw/abBA==", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^9.0.0" + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo-router": { + "version": "55.0.0-preview.7", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-55.0.0-preview.7.tgz", + "integrity": "sha512-nrigtPHg5/5ZIeY0Qjo6/wM7N27bTbq22FuNrTgGsNOt5V8sPkvs8lsMl6OsnvEZCKJ2xFYPkL3UGSEvGVxT9A==", + "license": "MIT", + "dependencies": { + "@expo/metro-runtime": "^55.0.5", + "@expo/schema-utils": "^55.0.2", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-tabs": "^1.1.12", + "@react-navigation/bottom-tabs": "7.10.1", + "@react-navigation/native": "7.1.28", + "@react-navigation/native-stack": "7.10.1", + "client-only": "^0.0.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "expo-glass-effect": "^55.0.5", + "expo-image": "^55.0.3", + "expo-server": "^55.0.3", + "expo-symbols": "^55.0.3", + "fast-deep-equal": "^3.1.3", + "invariant": "^2.2.4", + "nanoid": "^3.3.8", + "query-string": "^7.1.3", + "react-fast-compare": "^3.2.2", + "react-native-is-edge-to-edge": "^1.1.6", + "semver": "~7.6.3", + "server-only": "^0.0.1", + "sf-symbols-typescript": "^2.1.0", + "shallowequal": "^1.1.0", + "use-latest-callback": "^0.2.1", + "vaul": "^1.1.2" }, - "engines": { - "node": "20 || >=22" + "peerDependencies": { + "@expo/log-box": "55.0.6", + "@expo/metro-runtime": "^55.0.5", + "@react-navigation/drawer": "^7.7.2", + "@testing-library/react-native": ">= 12.0.0", + "expo": "*", + "expo-constants": "^55.0.4", + "expo-linking": "^55.0.4", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-gesture-handler": "*", + "react-native-reanimated": "*", + "react-native-safe-area-context": ">= 5.4.0", + "react-native-screens": "*", + "react-native-web": "*", + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@react-navigation/drawer": { + "optional": true + }, + "@testing-library/react-native": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-gesture-handler": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } } }, - "node_modules/jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", - "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", - "dev": true, + "node_modules/expo-router/node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", "license": "MIT", "dependencies": { - "@jest/core": "30.2.0", - "@jest/types": "30.2.0", - "import-local": "^3.2.0", - "jest-cli": "30.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "node-notifier": { + "@types/react": { "optional": true } } }, - "node_modules/jest-changed-files": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", - "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", - "dev": true, + "node_modules/expo-router/node_modules/@react-navigation/bottom-tabs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", + "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", "license": "MIT", "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.2.0", - "p-limit": "^3.1.0" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "@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" } }, - "node_modules/jest-circus": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", - "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", - "dev": true, + "node_modules/expo-router/node_modules/@react-navigation/native-stack": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.10.1.tgz", + "integrity": "sha512-8jt7olKysn07HuKKSjT/ahZZTV+WaZa96o9RI7gAwh7ATlUDY02rIRttwvCyjovhSjD9KCiuJ+Hd4kwLidHwJw==", "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-runtime": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "p-limit": "^3.1.0", - "pretty-format": "30.2.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" + }, + "peerDependencies": { + "@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" + } + }, + "node_modules/expo-router/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-circus/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", - "dev": true, + "node_modules/expo-server": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", + "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", + "license": "MIT", + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/expo-sharing": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-sharing/-/expo-sharing-55.0.6.tgz", + "integrity": "sha512-4X88AnVZTWUjCEYNvHFtd2UMEX43G2zFJBxVANI8RzAjDny4QrzTgdCEFNg0ufZyGMxZL3V5gzUkXVP5y7IEYg==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "@expo/config-plugins": "^55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/plist": "^0.5.2" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/jest-circus/node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", - "dev": true, + "node_modules/expo-splash-screen": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-55.0.5.tgz", + "integrity": "sha512-Q8PSVonkFEMUykDMBw9kdwNOtc9cMD7Vlz+MU4PYBTHrVQB5EDONnecmDwFDPYF8wc57ef73wkYxuVmrQO533A==", "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" + "@expo/prebuild-config": "^55.0.4" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "expo": "*" } }, - "node_modules/jest-circus/node_modules/@jest/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", - "dev": true, + "node_modules/expo-sqlite": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-55.0.5.tgz", + "integrity": "sha512-tYaktd5dQc3fEsmRSSvPBW80o6sq3mzLyOpQ9smMFWSGKvcSJsfvpbE6c8axgdhRMb3OMF4UAhASui+kL9GONQ==", "license": "MIT", "dependencies": { - "expect": "30.2.0", - "jest-snapshot": "30.2.0" + "await-lock": "^2.2.2" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/jest-circus/node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", - "dev": true, + "node_modules/expo-status-bar": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-55.0.2.tgz", + "integrity": "sha512-iV/Az9SqwY2j5e/tZ7Fz7vwolfXp0xFTScET4lnS615oLQfdhyI2HOTg4CL4q7UVlSDW3HN4rCkDK2oASNVO7g==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "react-native-is-edge-to-edge": "^1.2.1" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/jest-circus/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/expo-structured-headers": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-55.0.0.tgz", + "integrity": "sha512-udaNvuWb45/Sryq9FLC/blwgOChhznuqlTrUzVjC0T83pMdcmscKJX23lnNDW6hCec8p81Y3z1DIFwIyk0g/PQ==", + "license": "MIT" + }, + "node_modules/expo-symbols": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-55.0.3.tgz", + "integrity": "sha512-r3AnrAAPw/zqha6dBdkJV7ueELy/yyeEKU38qzFFz37w1mhcXobuXahnfPSnY54lKrTbqrSiFMj/aGh25ElnoQ==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@expo-google-fonts/material-symbols": "^0.4.1", + "sf-symbols-typescript": "^2.0.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "expo": "*", + "expo-font": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/jest-circus/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", - "dev": true, + "node_modules/expo-system-ui": { + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-55.0.5.tgz", + "integrity": "sha512-tcE0SJCfKZgESWUNBleqNIdgFZj6Y41WvgOpwMDhke9Fezwsput1MWz2L2QyHoeo1bUE5KuNuI5+nCWdecSnAQ==", "license": "MIT", "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" + "@react-native/normalize-colors": "0.83.1", + "debug": "^4.3.2" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } } }, - "node_modules/jest-circus/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, + "node_modules/expo-updates": { + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-55.0.7.tgz", + "integrity": "sha512-AkpyXJ2nRfKSB1MF3qkHYQeuG7Or9FMWcQAbrkIzETGeA3jpfPo0APvuq5PJjZf1VDX2AN3zznmYjrQ/MSODTA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", + "@expo/code-signing-certificates": "^0.0.6", + "@expo/plist": "^0.5.2", + "@expo/spawn-async": "^1.7.2", + "arg": "4.1.0", "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" + "debug": "^4.3.4", + "expo-eas-client": "~55.0.2", + "expo-manifests": "~55.0.5", + "expo-structured-headers": "~55.0.0", + "expo-updates-interface": "~55.1.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "resolve-from": "^5.0.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "bin": { + "expo-updates": "bin/cli.js" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "node_modules/expo-updates-interface": { + "version": "55.1.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-55.1.1.tgz", + "integrity": "sha512-++rlh9dNRUgm+uqN+x4vB/8ELidt0gc3kbwec55YzRizdD845kn5ufjTcGpkGs9SbAYHsP0eh8axlKHpY/v7Kg==", "license": "MIT", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-updates/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "license": "MIT" + }, + "node_modules/expo-updates/node_modules/glob": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", + "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "minimatch": "^10.1.2", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-circus/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/expo-updates/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", + "@isaacs/brace-expansion": "^5.0.1" + }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-circus/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">=12" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-circus/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/express-rate-limit": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", + "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "ip-address": "10.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 16" }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" } }, - "node_modules/jest-circus/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/express/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-circus/node_modules/jest-snapshot": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", - "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "node_modules/express/node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "pretty-format": "30.2.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-circus/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "node_modules/express/node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/express/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=0.10.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-circus/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/express/node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.8" } }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/express/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-circus/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/express/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-cli": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", - "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", + "node_modules/express/node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.2.0", - "@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", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">= 18" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-cli/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "node_modules/express/node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-cli/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/express/node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-cli/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", - "dev": true, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8.6.0" } }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "is-glob": "^4.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 6" } }, - "node_modules/jest-cli/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, - "node_modules/jest-cli/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "strnum": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/jest-cli/node_modules/jest-validate": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", - "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", - "dev": true, - "license": "MIT", + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.2.0" + "reusify": "^1.0.4" + } + }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=20" } }, - "node_modules/jest-cli/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" } }, - "node_modules/jest-cli/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", "license": "MIT" }, - "node_modules/jest-config": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", - "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", - "dev": true, + "node_modules/fbjs/node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@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", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.3.10", - "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" + "node-fetch": "^2.7.0" + } + }, + "node_modules/fbjs/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { + "encoding": { "optional": true } } }, - "node_modules/jest-config/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-config/node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", - "dev": true, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "asap": "~2.0.3" } }, - "node_modules/jest-config/node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "node_modules/fbjs/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, - "node_modules/jest-config/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/fbjs/node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" + "bin": { + "ua-parser-js": "script/cli.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "*" } }, - "node_modules/jest-config/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "node_modules/fbjs/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "node_modules/fbjs/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/jest-config/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "node_modules/fd-package-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz", + "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^3.0.1" + "walk-up-path": "^4.0.0" } }, - "node_modules/jest-config/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "peerDependencies": { + "picomatch": "^3 || ^4" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/jest-config/node_modules/babel-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", - "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", "dependencies": { - "@jest/transform": "30.2.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" + "node": "^12.20 || >= 14.13" } }, - "node_modules/jest-config/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], + "node_modules/fetch-nodeshim": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", + "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", + "license": "MIT" + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=16.0.0" } }, - "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", - "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", - "dev": true, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { - "@types/babel__core": "^7.20.5" + "to-regex-range": "^5.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-config/node_modules/babel-preset-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", - "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", - "dev": true, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/jest-config/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/jest-config/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/jest-config/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/jest-config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest-config/node_modules/jest-environment-node": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", - "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", - "dev": true, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0" + "ee-first": "1.1.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.8" } }, - "node_modules/jest-config/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", - "dev": true, + "node_modules/finalhandler/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "node": ">= 0.6" } }, - "node_modules/jest-config/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6" } }, - "node_modules/jest-config/node_modules/jest-validate": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", - "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", - "dev": true, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.2.0" + "locate-path": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6" } }, - "node_modules/jest-config/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", - "dev": true, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "license": "MIT", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6" } }, - "node_modules/jest-config/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6" } }, - "node_modules/jest-config/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "p-limit": "^2.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6" } }, - "node_modules/jest-config/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" } }, - "node_modules/jest-config/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, + "node_modules/find-cache-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/jest-config/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "find-up": "^3.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=6" } }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=16" } }, - "node_modules/jest-config/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/flow-parser": { + "version": "0.299.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.299.0.tgz", + "integrity": "sha512-phGMRoNt6SNglPHGRbCyWm9/pxfe6t/t4++EIYPaBGWT6e0lphLBgUMrvpL62NbRo9R549o3oqrbKHq82kANCw==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.4.0" + } + }, + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "license": "BSD-2-Clause" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.2.0" - }, + "license": "ISC", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-diff/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 6" } }, - "node_modules/jest-diff/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/formatly": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz", + "integrity": "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "fd-package-json": "^2.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "bin": { + "formatly": "bin/index.mjs" + }, + "engines": { + "node": ">=18.3.0" } }, - "node_modules/jest-diff/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "fetch-blob": "^3.1.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=12.20.0" } }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-each": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", - "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", - "dev": true, + "node_modules/framer-motion": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", + "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "jest-util": "30.2.0", - "pretty-format": "30.2.0" + "@motionone/dom": "10.12.0", + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "popmotion": "11.0.3", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": ">=16.8 || ^17.0.0 || ^18.0.0", + "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0" } }, - "node_modules/jest-each/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/framesync": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", + "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "tslib": "^2.1.0" } }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-each/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.8" } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/jest-each/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "license": "MIT" }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-node/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/jest-environment-node/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/jest-expo": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", - "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.4", - "@expo/json-file": "^10.0.12", - "@jest/create-cache-key-function": "^29.2.1", - "@jest/globals": "^29.2.1", - "babel-jest": "^29.2.1", - "jest-environment-jsdom": "^29.2.1", - "jest-snapshot": "^29.2.1", - "jest-watch-select-projects": "^2.0.0", - "jest-watch-typeahead": "2.2.1", - "json5": "^2.2.3", - "lodash": "^4.17.19", - "react-test-renderer": "19.2.0", - "server-only": "^0.0.1", - "stacktrace-js": "^2.0.2" - }, - "bin": { - "jest": "bin/jest.js" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, - "peerDependencies": { - "expo": "*", - "react-native": "*", - "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "react-server-dom-webpack": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">=8.0.0" } }, - "node_modules/jest-haste-map/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-leak-detector": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", - "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", - "dev": true, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.2.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-leak-detector/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "resolve-pkg-maps": "^1.0.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "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", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, - "license": "MIT", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "is-glob": "^4.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-matcher-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", - "dev": true, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-matcher-utils/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-matcher-utils/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "license": "MIT" }, - "node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", - "dev": true, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "es-define-property": "^1.0.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "dunder-proto": "^1.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } - }, - "node_modules/jest-message-util/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "has-symbols": "^1.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" + "function-bind": "^1.1.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-mock/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/hermes-compiler": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", + "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "license": "MIT" + }, + "node_modules/hermes-estree": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", + "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "hermes-estree": "0.32.0" } }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "license": "MIT" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "react-is": "^16.7.0" } }, - "node_modules/jest-mock/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/hono": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.9.tgz", + "integrity": "sha512-Eaw2YTGM6WOxA6CXbckaEvslr2Ne4NFsKrvc0v97JD5awbmeBLO5w9Ho9L9kmKonrwF9RJlW6BxT1PVv/agBHQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16.9.0" } }, - "node_modules/jest-resolve": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", - "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", - "dev": true, - "license": "MIT", + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "license": "ISC", "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" + "lru-cache": "^10.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/jest-resolve-dependencies": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", - "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", - "dev": true, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "license": "MIT", "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.2.0" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=12" } }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 6" } }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 6" } }, - "node_modules/jest-resolve-dependencies/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10.17.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=20.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 4" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-snapshot": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", - "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", - "dev": true, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "pretty-format": "30.2.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=16.x" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", - "dev": true, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "license": "MIT", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve-dependencies/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=4" } }, - "node_modules/jest-resolve-dependencies/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve-dependencies/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, "bin": { - "semver": "bin/semver.js" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve-dependencies/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=0.8.19" } }, - "node_modules/jest-resolve-dependencies/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "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.", "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-resolve/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/inline-style-prefixer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", + "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "css-in-js-utils": "^3.1.0" } }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-resolve/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/ip-address": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 12" } }, - "node_modules/jest-resolve/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/jest-resolve/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", - "dev": true, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve/node_modules/jest-validate": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", - "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", - "dev": true, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.2.0" + "has-bigints": "^1.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", - "dev": true, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "binary-extensions": "^2.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", - "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", - "dev": true, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "license": "MIT", "dependencies": { - "@jest/console": "30.2.0", - "@jest/environment": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.2.0", - "jest-haste-map": "30.2.0", - "jest-leak-detector": "30.2.0", - "jest-message-util": "30.2.0", - "jest-resolve": "30.2.0", - "jest-runtime": "30.2.0", - "jest-util": "30.2.0", - "jest-watcher": "30.2.0", - "jest-worker": "30.2.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "hasown": "^2.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", - "dev": true, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", - "dev": true, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", - "dev": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", - "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" + "call-bound": "^1.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=4" } }, - "node_modules/jest-runner/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/jest-runner/node_modules/jest-environment-node": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", - "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", - "dev": true, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", - "dev": true, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.12.0" } }, - "node_modules/jest-runner/node_modules/jest-validate": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", - "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", - "dev": true, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.2.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-watcher": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", - "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.2.0", - "string-length": "^4.0.2" + "node": ">= 0.4" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", - "dev": true, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-runner/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "isobject": "^3.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "license": "MIT" }, - "node_modules/jest-runner/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, + "node_modules/is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", - "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", - "dev": true, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/globals": "30.2.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "call-bound": "^1.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", - "dev": true, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", - "dev": true, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/@jest/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", "dependencies": { - "expect": "30.2.0", - "jest-snapshot": "30.2.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/@jest/globals": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", - "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", - "dev": true, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/types": "30.2.0", - "jest-mock": "30.2.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "call-bound": "^1.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", - "dev": true, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "license": "MIT", "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" + "is-docker": "^2.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-runtime/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } }, - "node_modules/jest-runtime/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^3.0.1" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" } }, - "node_modules/jest-runtime/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=10" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "balanced-match": "^1.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "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", - "dev": true, - "license": "ISC", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 0.4" } }, - "node_modules/jest-runtime/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jest-runtime/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-runtime/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-snapshot": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", - "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "pretty-format": "30.2.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.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.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "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 + } } }, - "node_modules/jest-runtime/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-runtime/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "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.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/jest-runtime/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "detect-newline": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, "engines": { - "node": ">=14" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/jest-runtime/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/jest-expo": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", + "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "@expo/config": "~55.0.4", + "@expo/json-file": "^10.0.12", + "@jest/create-cache-key-function": "^29.2.1", + "@jest/globals": "^29.2.1", + "babel-jest": "^29.2.1", + "jest-environment-jsdom": "^29.2.1", + "jest-snapshot": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-test-renderer": "19.2.0", + "server-only": "^0.0.1", + "stacktrace-js": "^2.0.2" }, - "engines": { - "node": ">=12" + "bin": { + "jest": "bin/jest.js" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" + }, + "peerDependenciesMeta": { + "react-server-dom-webpack": { + "optional": true + } } }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-runtime/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot": { + "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", + "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", + "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "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", + "micromatch": "^4.0.4", "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot-prettier": { - "name": "prettier", - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" + "engines": { + "node": ">=6" }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/expect": { + "node_modules/jest-resolve": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", "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" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-diff": { + "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "node_modules/jest-runner": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", "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": "*", "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "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" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-message-util": { + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", + "@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/stack-utils": "^2.0.0", + "@types/node": "*", "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", + "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", - "stack-utils": "^2.0.3" + "strip-bom": "^4.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-util": { + "node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", - "@types/node": "*", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "ci-info": "^3.2.0", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "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.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "node_modules/jest-snapshot-prettier": { + "name": "prettier", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, "engines": { - "node": ">=8.6" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/jest-snapshot/node_modules/semver": { @@ -23802,86 +19265,29 @@ } }, "node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -24056,35 +19462,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", @@ -24100,35 +19477,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -24144,45 +19492,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest/node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", - "dev": true, - "license": "MIT" - }, "node_modules/jimp-compact": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", @@ -27638,9 +22947,9 @@ } }, "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -28292,9 +23601,9 @@ } }, "node_modules/react-native-keyboard-controller": { - "version": "1.20.7", - "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.20.7.tgz", - "integrity": "sha512-G8S5jz1FufPrcL1vPtReATx+jJhT/j+sTqxMIb30b1z7cYEfMlkIzOCyaHgf6IMB2KA9uBmnA5M6ve2A9Ou4kw==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.20.4.tgz", + "integrity": "sha512-IW2VatYwYhA3uRnGCOsEGARNjCYcYLUJX8KeuNz9GOMDWdLBVZWI+cy28+V4R2WvnToIIFku1NICbBSsQZi/8w==", "license": "MIT", "dependencies": { "react-native-is-edge-to-edge": "^1.2.1" @@ -28378,9 +23687,9 @@ } }, "node_modules/react-native-screens": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", - "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.22.0.tgz", + "integrity": "sha512-f1AtzxmgZlKeoioWzdNdQ/4SuqZ/w370KCBnA666pN8UZ33X4PkVJ/9v9y2y5sj0cXKEcgeN3Br9lmeDRQ735A==", "license": "MIT", "dependencies": { "react-freeze": "^1.0.0", @@ -28392,9 +23701,9 @@ } }, "node_modules/react-native-svg": { - "version": "15.15.3", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", - "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", + "version": "15.15.1", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.1.tgz", + "integrity": "sha512-ZUD1xwc3Hwo4cOmOLumjJVoc7lEf9oQFlHnLmgccLC19fNm6LVEdtB+Cnip6gEi0PG3wfvVzskViEtrySQP8Fw==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -28486,9 +23795,9 @@ "license": "MIT" }, "node_modules/react-native-worklets": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.3.tgz", - "integrity": "sha512-m/CIUCHvLQulboBn0BtgpsesXjOTeubU7t+V0lCPpBj0t2ExigwqDHoKj3ck7OeErnjgkD27wdAtQCubYATe3g==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.2.tgz", + "integrity": "sha512-DuLu1kMV/Uyl9pQHp3hehAlThoLw7Yk2FwRTpzASOmI+cd4845FWn3m2bk9MnjUw8FBRIyhwLqYm2AJaXDXsog==", "license": "MIT", "dependencies": { "@babel/plugin-transform-arrow-functions": "7.27.1", @@ -29053,6 +24362,16 @@ "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", "license": "MIT" }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -30057,32 +25376,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string-width/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -30197,20 +25490,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -30855,35 +26134,6 @@ } } }, - "node_modules/ts-jest/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/ts-jest/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/ts-jest/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -32223,25 +27473,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index dfba4ed62..605dd690f 100644 --- a/package.json +++ b/package.json @@ -75,8 +75,8 @@ "@powersync/web": "^1.27.1", "@quidone/react-native-wheel-picker": "^1.6.1", "@react-native-async-storage/async-storage": "2.2.0", - "@react-native-community/netinfo": "11.5.2", - "@react-native-community/slider": "5.1.2", + "@react-native-community/netinfo": "11.4.1", + "@react-native-community/slider": "5.1.1", "@react-native-documents/picker": "^12.0.1", "@react-navigation/bottom-tabs": "^7.3.10", "@react-navigation/native": "^7.1.6", @@ -106,6 +106,7 @@ "eslint-plugin-drizzle": "^0.2.3", "expo": "^55.0.0-preview.10", "expo-application": "~55.0.5", + "expo-asset": "~55.0.4", "expo-audio": "~55.0.5", "expo-build-properties": "~55.0.6", "expo-clipboard": "~55.0.5", @@ -143,18 +144,18 @@ "react-native-audio-concat": "^0.9.0", "react-native-element-dropdown": "2.12.4", "react-native-gesture-handler": "~2.30.0", - "react-native-keyboard-controller": "1.20.7", + "react-native-keyboard-controller": "1.20.4", "react-native-onboarding": "^1.0.6", "react-native-pager-view": "8.0.0", "react-native-reanimated": "^4.2.1", "react-native-reorderable-list": "^0.18.0", "react-native-safe-area-context": "~5.6.0", - "react-native-screens": "~4.23.0", - "react-native-svg": "15.15.3", + "react-native-screens": "4.22.0", + "react-native-svg": "15.15.1", "react-native-url-polyfill": "^3.0.0", "react-native-uuid": "^2.0.3", "react-native-web": "^0.21.0", - "react-native-worklets": "^0.7.2", + "react-native-worklets": "0.7.2", "tailwind-merge": "^3.4.0", "tailwindcss-animate": "^1.0.7", "testflight-dev-deploy": "^0.0.8", @@ -173,7 +174,7 @@ "@total-typescript/ts-reset": "^0.6.1", "@types/bidirectional-map": "^1.0.4", "@types/default-gateway": "^7.2.2", - "@types/jest": "^30.0.0", + "@types/jest": "29.5.14", "@types/node": "^25.2.2", "@types/react": "~19.2.2", "@types/react-test-renderer": "^19.0.0", @@ -189,7 +190,7 @@ "eslint-plugin-react-compiler": "^19.1.0-rc.2", "eslint-plugin-react-hooks": "^7.0.1", "expo-atlas": "^0.4.0", - "jest": "^30.2.0", + "jest": "~29.7.0", "jest-expo": "~55.0.6", "jiti": "^2.6.1", "knip": "^5.83.1", From f377d091ef1c68f97b0a459b42d7cd3785b340f7 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 10 Feb 2026 16:27:00 -0600 Subject: [PATCH 038/143] remove unused expo plugin --- plugins/withAndroidConfig.js | 51 ------------------------------------ 1 file changed, 51 deletions(-) delete mode 100644 plugins/withAndroidConfig.js diff --git a/plugins/withAndroidConfig.js b/plugins/withAndroidConfig.js deleted file mode 100644 index 5e4a8efac..000000000 --- a/plugins/withAndroidConfig.js +++ /dev/null @@ -1,51 +0,0 @@ -const { - withAndroidManifest, - withGradleProperties, - withDangerousMod -} = require('@expo/config-plugins'); -const fs = require('fs/promises'); // Add this import - -function modifyBuildGradle(contents) { - // Replace minSdkVersion line - contents = contents.replace( - /minSdkVersion = Integer\.parseInt\(findProperty\('android\.minSdkVersion'\) \?: '\d+'\)/, - "minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '24')" - ); - - // Add ffmpegKitPackage if not present - if (!contents.includes('ffmpegKitPackage')) { - contents = contents.replace( - /ext {/, - `ext { - ffmpegKitPackage = "audio"` - ); - } - - return contents; -} - -const withAndroidConfig = (config) => { - // Ensure minSdkVersion in manifest - config = withAndroidManifest(config, async (config) => { - const androidManifest = config.modResults; - const mainApplication = androidManifest.manifest.$ || {}; - mainApplication['android:minSdkVersion'] = '24'; - return config; - }); - - // Modify build.gradle directly - config = withDangerousMod(config, [ - 'android', - async (config) => { - const buildGradlePath = 'android/build.gradle'; - const contents = await fs.readFile(buildGradlePath, 'utf-8'); - const newContents = modifyBuildGradle(contents); - await fs.writeFile(buildGradlePath, newContents); - return config; - } - ]); - - return config; -}; - -module.exports = withAndroidConfig; From 380bbb4428bea4995e044466ff764f04eb58b831 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Tue, 10 Feb 2026 14:38:53 -0800 Subject: [PATCH 039/143] better precision playback of m4a with trim points --- .../recording/components/TrimSegmentModal.tsx | 123 +++++++++--------- 1 file changed, 60 insertions(+), 63 deletions(-) diff --git a/views/new/recording/components/TrimSegmentModal.tsx b/views/new/recording/components/TrimSegmentModal.tsx index 7e7b902dd..efd840221 100644 --- a/views/new/recording/components/TrimSegmentModal.tsx +++ b/views/new/recording/components/TrimSegmentModal.tsx @@ -56,6 +56,7 @@ export function TrimSegmentModal({ // Audio playback state const soundRef = React.useRef(null); + const playbackTimerRef = React.useRef | null>(null); const [isDragging, setIsDragging] = React.useState(false); const hasUserInteractedRef = React.useRef(false); const trimPlayPreview = useLocalStore((state) => state.trimPlayPreview); @@ -233,20 +234,29 @@ export function TrimSegmentModal({ selectionEndRef.current = selectionEnd; }, [selectionEnd]); - // Play audio segment between trim points (debounced) - const playSegment = React.useCallback(async () => { - if (!hasAudioSequence || !audioUris || clipDurations.length === 0) return; - - // Stop any currently playing sound + // Stop any currently playing sound and clear scheduled stop timer + const stopCurrentPlayback = React.useCallback(async () => { + if (playbackTimerRef.current) { + clearTimeout(playbackTimerRef.current); + playbackTimerRef.current = null; + } if (soundRef.current) { try { await soundRef.current.stopAsync(); await soundRef.current.unloadAsync(); - } catch (error) { - console.error('Error stopping previous sound:', error); + } catch { + // Ignore cleanup errors } soundRef.current = null; } + }, []); + + // Play audio segment between trim points (debounced) + const playSegment = React.useCallback(async () => { + if (!hasAudioSequence || !audioUris || clipDurations.length === 0) return; + + // Stop any currently playing sound + await stopCurrentPlayback(); try { // Calculate start and end times in milliseconds @@ -280,46 +290,60 @@ export function TrimSegmentModal({ const clipStart = i === startIdx ? startOffset : 0; const clipEnd = i === endIdx ? endOffset : (clipDurations[i] ?? 0); + const clipPlayDuration = clipEnd - clipStart; - if (clipEnd <= clipStart) continue; + if (clipPlayDuration <= 0) continue; const { sound } = await Audio.Sound.createAsync( { uri }, - { shouldPlay: false } + { shouldPlay: false, progressUpdateIntervalMillis: 50 } ); soundRef.current = sound; - await sound.setPositionAsync(clipStart); + // Seek with tight tolerance for more accurate start position on AAC + await sound.setPositionAsync(Math.round(clipStart), { + toleranceMillisBefore: 0, + toleranceMillisAfter: 0 + }); await new Promise((resolve) => { + let resolved = false; + const stopAndResolve = () => { + if (resolved) return; + resolved = true; + if (playbackTimerRef.current) { + clearTimeout(playbackTimerRef.current); + playbackTimerRef.current = null; + } + void sound.stopAsync().then(() => { + void sound.unloadAsync(); + if (soundRef.current === sound) { + soundRef.current = null; + } + resolve(); + }); + }; + + // Use a timer to stop at the expected end time + playbackTimerRef.current = setTimeout(stopAndResolve, clipPlayDuration); + + // Safety net: also monitor position in case the timer drifts sound.setOnPlaybackStatusUpdate((status) => { if (!status.isLoaded) return; const currentPosition = status.positionMillis || 0; - if (currentPosition >= clipEnd) { - void sound.stopAsync().then(() => { - void sound.unloadAsync(); - if (soundRef.current === sound) { - soundRef.current = null; - } - resolve(); - }); + if (currentPosition >= clipEnd - 10 || status.didJustFinish) { + stopAndResolve(); } }); + void sound.playAsync(); }); } } catch (error) { console.error('Failed to play audio segment:', error); - if (soundRef.current) { - try { - await soundRef.current.unloadAsync(); - } catch { - // Ignore cleanup errors - } - soundRef.current = null; - } + await stopCurrentPlayback(); } - }, [audioUris, clipDurations, hasAudioSequence, selectionStart, selectionEnd, totalDuration]); + }, [audioUris, clipDurations, hasAudioSequence, selectionStart, selectionEnd, totalDuration, stopCurrentPlayback]); // Debounced playback trigger (300ms delay) const debouncedPlaySegment = useDebouncedCallback( @@ -352,28 +376,13 @@ export function TrimSegmentModal({ // Cleanup: stop and unload sound when modal closes or component unmounts React.useEffect(() => { - if (!isOpen && soundRef.current) { - void soundRef.current - .stopAsync() - .then(() => soundRef.current?.unloadAsync()) - .catch(() => { - // Ignore errors during cleanup - }); - soundRef.current = null; + if (!isOpen) { + void stopCurrentPlayback(); } - return () => { - if (soundRef.current) { - void soundRef.current - .stopAsync() - .then(() => soundRef.current?.unloadAsync()) - .catch(() => { - // Ignore errors during cleanup - }); - soundRef.current = null; - } + void stopCurrentPlayback(); }; - }, [isOpen]); + }, [isOpen, stopCurrentPlayback]); const clamp = React.useCallback( (value: number, min: number, max: number) => @@ -404,11 +413,7 @@ export function TrimSegmentModal({ setIsDragging(true); hasUserInteractedRef.current = true; // Mark that user has interacted // Stop any currently playing audio when drag starts - if (soundRef.current) { - void soundRef.current.stopAsync().catch(() => { - // Ignore errors - }); - } + void stopCurrentPlayback(); leftDragStartRef.current = selectionStartRef.current; }, onPanResponderMove: (_, gesture) => { @@ -439,11 +444,7 @@ export function TrimSegmentModal({ setIsDragging(true); hasUserInteractedRef.current = true; // Mark that user has interacted // Stop any currently playing audio when drag starts - if (soundRef.current) { - void soundRef.current.stopAsync().catch(() => { - // Ignore errors - }); - } + void stopCurrentPlayback(); rightDragStartRef.current = selectionEndRef.current; }, onPanResponderMove: (_, gesture) => { @@ -469,7 +470,7 @@ export function TrimSegmentModal({ setLeftPanHandlers(leftResponder.panHandlers); setRightPanHandlers(rightResponder.panHandlers); - }, [clamp, minSelectionFraction, trimBounds, waveformWidth]); + }, [clamp, minSelectionFraction, trimBounds, waveformWidth, stopCurrentPlayback]); const selectionStartPx = waveformWidth * selectionStart; const selectionEndPx = waveformWidth * selectionEnd; @@ -496,11 +497,7 @@ export function TrimSegmentModal({ if (waveformWidth <= 0) return; setIsDragging(true); hasUserInteractedRef.current = true; - if (soundRef.current) { - void soundRef.current.stopAsync().catch(() => { - // Ignore errors - }); - } + void stopCurrentPlayback(); const locationX = event.nativeEvent.locationX; const clampedX = clamp(locationX, 0, waveformWidth); @@ -575,7 +572,7 @@ export function TrimSegmentModal({ } }); setWaveformPanHandlers(responder.panHandlers); - }, [clamp, minSelectionFraction, trimBounds, waveformWidth]); + }, [clamp, minSelectionFraction, trimBounds, waveformWidth, stopCurrentPlayback]); // Auto-trim: detect silence thresholds and set trim points automatically const handleAutoTrim = React.useCallback(() => { From 2aaa560d09ba613fd0c6c64640f51abc58774ed8 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Tue, 10 Feb 2026 14:39:41 -0800 Subject: [PATCH 040/143] added metadata for saving trim points --- database_services/assetService.ts | 39 +++++++++++++++++++++++++++++++ db/drizzleSchemaColumns.ts | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/database_services/assetService.ts b/database_services/assetService.ts index 2a960d878..27dcf7b7f 100644 --- a/database_services/assetService.ts +++ b/database_services/assetService.ts @@ -14,6 +14,10 @@ export interface AssetMetadata { from: number; to: number; }; + trim?: { + startMs: number; + endMs: number; + }; } /** @@ -197,6 +201,41 @@ export async function updateAssetMetadata( } } +/** + * Get asset metadata with a safe default. + */ +export function getAssetMetadata( + asset: { metadata?: AssetMetadata | null } +): AssetMetadata { + return (asset.metadata ?? {}) as AssetMetadata; +} + +/** + * Set a single metadata key without overwriting other metadata fields. + * Reads current metadata, merges, then writes back. + */ +export async function setAssetMetadataKey( + assetId: string, + key: keyof AssetMetadata, + value: AssetMetadata[keyof AssetMetadata] +): Promise { + const assetLocalTable = resolveTable('asset', { localOverride: true }); + const localAsset = await system.db + .select({ metadata: assetLocalTable.metadata }) + .from(assetLocalTable) + .where(eq(assetLocalTable.id, assetId)) + .limit(1); + + if (!localAsset || localAsset.length === 0) { + throw new Error('Asset not found in local table - cannot update metadata'); + } + + const currentMetadata = (localAsset[0]!.metadata ?? {}) as AssetMetadata; + const nextMetadata = { ...currentMetadata, [key]: value } as AssetMetadata; + + await updateAssetMetadata(assetId, nextMetadata); +} + /** * Asset update payload for batch operations */ diff --git a/db/drizzleSchemaColumns.ts b/db/drizzleSchemaColumns.ts index 809a05edf..b878f4578 100644 --- a/db/drizzleSchemaColumns.ts +++ b/db/drizzleSchemaColumns.ts @@ -359,7 +359,7 @@ export function createAssetTable< content_type: text({ enum: contentTypeOptions }).default('source'), creator_id: text().references(() => profile.id), order_index: int().notNull().default(0), - metadata: text(), // JSON metadata for asset-specific data (e.g., verse range) + metadata: text({ mode: 'json' }).$type>(), // JSON metadata for asset-specific data (e.g., verse range) ...extraColumns }, (table) => { From 06e5d19e564b5de09890c72b245aa737ea4821d7 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Wed, 11 Feb 2026 11:58:03 -0800 Subject: [PATCH 041/143] Created assetAudio.ts with documentation, reworked AudioContext and playSound - playSound is now the main function, playSoundSequence is deprecated - playSound now handles single items and arrays, string and AudioSegments (normalizes all to AudioSegment[]) - AudioSegment is an object with URI plus start and end trim points --- .gitignore | 1 - contexts/AudioContext.tsx | 272 +++++++++++------- docs/asset-audio.md | 191 +++++++++++++ services/assetAudio.ts | 583 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 949 insertions(+), 98 deletions(-) create mode 100644 docs/asset-audio.md create mode 100644 services/assetAudio.ts diff --git a/.gitignore b/.gitignore index 18f71e283..212e7806c 100644 --- a/.gitignore +++ b/.gitignore @@ -43,5 +43,4 @@ langquest types.xlsx *.vsix llm_supp_files -/docs /.venv diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index 75a6a3ce3..e5c01ce96 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -3,16 +3,52 @@ import React, { createContext, useContext, useRef, useState } from 'react'; import type { SharedValue } from 'react-native-reanimated'; import { useFrameCallback, useSharedValue } from 'react-native-reanimated'; +/** + * EXPO-AUDIO MIGRATION NOTES + * When migrating from expo-av to expo-audio, only this file needs to change. + * The public interface (AudioContextType) stays the same. + * + * Key API changes: + * expo-av โ†’ expo-audio + * โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + * Audio.Sound.createAsync({uri}) โ†’ useAudioPlayer(uri) or new AudioPlayer(uri) + * sound.playAsync() โ†’ player.play() + * sound.stopAsync() โ†’ player.pause() / player.remove() + * sound.unloadAsync() โ†’ player.remove() + * sound.getStatusAsync() โ†’ player.status / player.duration / player.currentTime + * sound.setPositionAsync(ms) โ†’ player.seekTo(seconds) โ† NOTE: seconds, not ms + * sound.setOnPlaybackStatusUpdate โ†’ player.addListener('playbackStatusUpdate', ...) + * Audio.setAudioModeAsync(...) โ†’ Audio.setAudioModeAsync(...) (similar) + * + * AssetAudio (services/assetAudio.ts) also has one direct expo-av usage in + * loadDuration() that will need updating at the same time. + */ + +export interface AudioSegment { + uri: string; + startMs?: number; + endMs?: number; +} + +/** Any input playSound accepts: a single URI, an array of URIs, a single + * AudioSegment, or an array of AudioSegments (plain strings and AudioSegments + * can be mixed freely in arrays). */ +export type PlayInput = string | string[] | AudioSegment | AudioSegment[]; + interface AudioContextType { - playSound: (uri: string, audioId?: string) => Promise; - playSoundSequence: (uris: string[], audioId?: string) => Promise; + playSound: (input: PlayInput, audioId?: string) => Promise; + /** @deprecated Use playSound โ€” it now accepts all input types */ + playSoundSequence: ( + segments: (string | AudioSegment)[], + audioId?: string + ) => Promise; stopCurrentSound: () => Promise; isPlaying: boolean; currentAudioId: string | null; position: number; // Keep for backward compatibility duration: number; // Keep for backward compatibility setPosition: (position: number) => Promise; - // NEW: SharedValues for high-performance UI updates + // SharedValues for high-performance UI updates (60fps via Reanimated) positionShared: SharedValue; durationShared: SharedValue; } @@ -25,19 +61,18 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const [position, setPositionState] = useState(0); const [duration, setDuration] = useState(0); - // NEW: Reanimated SharedValues for high-performance position tracking + // Reanimated SharedValues for high-performance position tracking const positionShared = useSharedValue(0); const durationShared = useSharedValue(0); - const cumulativePositionShared = useSharedValue(0); // SharedValue for worklet access + const cumulativePositionShared = useSharedValue(0); const soundRef = useRef(null); const positionUpdateInterval = useRef | null>( null ); - const sequenceQueue = useRef([]); + const sequenceSegments = useRef([]); const currentSequenceIndex = useRef(0); - const segmentDurations = useRef([]); // Track duration of each segment - // Use SharedValue instead of ref for worklet access (prevents serialization warnings) + const segmentDurations = useRef([]); // Effective (trimmed) duration per segment const isTrackingPosition = useSharedValue(false); // Store SharedValues in refs to satisfy React Compiler (they're stable references) @@ -54,7 +89,9 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } }; - // Start updating position at regular intervals when playing + // Start updating position at regular intervals when playing. + // Also enforces endMs: if the current segment has an endMs and the + // playback position reaches it, stops the current sound and advances. const startPositionTracking = () => { clearPositionInterval(); isTrackingPositionRef.current.value = true; @@ -63,45 +100,61 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { if (soundRef.current) { void soundRef.current.getStatusAsync().then((status) => { if (status.isLoaded) { - // Calculate cumulative position across all segments + // Check endMs boundary for the current segment + const currentSeg = + sequenceSegments.current[currentSequenceIndex.current]; + if ( + currentSeg?.endMs != null && + status.positionMillis >= currentSeg.endMs + ) { + // Reached the end boundary โ€” stop and advance + clearPositionInterval(); + isTrackingPositionRef.current.value = false; + void soundRef.current?.stopAsync().then(() => { + void soundRef.current?.unloadAsync(); + soundRef.current = null; + void playNextInSequence(); + }); + return; + } + + // Calculate cumulative position across all segments. + // For the current segment, subtract startMs so position starts + // from 0 relative to the effective region. let cumulativeDuration = 0; for (let i = 0; i < currentSequenceIndex.current; i++) { cumulativeDuration += segmentDurations.current[i] || 0; } - const totalPosition = cumulativeDuration + status.positionMillis; - cumulativePositionSharedRef.current.value = totalPosition; // Update SharedValue + const segStartMs = currentSeg?.startMs ?? 0; + const positionInSegment = status.positionMillis - segStartMs; + const totalPosition = + cumulativeDuration + Math.max(0, positionInSegment); + cumulativePositionSharedRef.current.value = totalPosition; setPositionState(totalPosition); } }); } - }, 100); // Update every 100ms for smoother animation + }, 100); }; - // NEW: Frame callback for high-performance SharedValue updates + // Frame callback for high-performance SharedValue updates // This runs on the UI thread at 60fps for buttery smooth progress bars useFrameCallback(() => { 'worklet'; - // Only update if actively tracking position - // The isTrackingPosition check prevents updates after cleanup if (!isTrackingPosition.value) { return; } - - // Copy cumulative position to the main position SharedValue - // This runs at 60fps on UI thread for buttery smooth progress bars! positionShared.value = cumulativePositionShared.value; }); const stopCurrentSound = async () => { clearPositionInterval(); - // Update SharedValue via ref to satisfy React Compiler isTrackingPositionRef.current.value = false; // Reset sequence state - sequenceQueue.current = []; + sequenceSegments.current = []; currentSequenceIndex.current = 0; segmentDurations.current = []; - // Update SharedValue via ref to satisfy React Compiler cumulativePositionSharedRef.current.value = 0; if (soundRef.current) { @@ -110,14 +163,11 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { soundRef.current = null; } - // Always reset state, even if soundRef.current is null - // This fixes the issue where pause state gets stuck setIsPlaying(false); setCurrentAudioId(null); setPositionState(0); setDuration(0); - // Reset SharedValues via refs to satisfy React Compiler positionSharedRef.current.value = 0; durationSharedRef.current.value = 0; }; @@ -126,7 +176,6 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { if (soundRef.current && isPlaying) { await soundRef.current.setPositionAsync(newPosition); setPositionState(newPosition); - // Update SharedValues via refs to satisfy React Compiler cumulativePositionSharedRef.current.value = newPosition; positionSharedRef.current.value = newPosition; } @@ -134,17 +183,19 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const playNextInSequence = async () => { currentSequenceIndex.current++; - if (currentSequenceIndex.current < sequenceQueue.current.length) { - const nextUri = sequenceQueue.current[currentSequenceIndex.current]; - if (nextUri) { - await playSound(nextUri, currentAudioId || undefined, true); + if ( + currentSequenceIndex.current < sequenceSegments.current.length + ) { + const nextSeg = + sequenceSegments.current[currentSequenceIndex.current]; + if (nextSeg) { + await playSegment(nextSeg, currentAudioId || undefined); } } else { - // Sequence finished - reset all state - sequenceQueue.current = []; + // Sequence finished โ€” reset all state + sequenceSegments.current = []; currentSequenceIndex.current = 0; segmentDurations.current = []; - // Reset SharedValues via refs to satisfy React Compiler cumulativePositionSharedRef.current.value = 0; positionSharedRef.current.value = 0; durationSharedRef.current.value = 0; @@ -157,24 +208,18 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } }; - const playSound = async ( - uri: string, - audioId?: string, - isSequencePart = false + /** + * Load and play a single segment. Handles optional startMs (seek before + * playing) and optional endMs (enforced by startPositionTracking). + * Used internally by playSound and playNextInSequence. + */ + const playSegment = async ( + segment: AudioSegment, + audioId?: string ) => { - // Stop current sound if any is playing (but preserve sequence state) + // Stop current sound if any is playing if (soundRef.current) { clearPositionInterval(); - - // Store the duration of the previous segment if part of a sequence - if (isSequencePart && currentSequenceIndex.current > 0) { - const prevStatus = await soundRef.current.getStatusAsync(); - if (prevStatus.isLoaded) { - segmentDurations.current[currentSequenceIndex.current - 1] = - prevStatus.durationMillis ?? 0; - } - } - await soundRef.current.stopAsync(); await soundRef.current.unloadAsync(); soundRef.current = null; @@ -187,11 +232,13 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { staysActiveInBackground: true }); - // Load and play new sound + const shouldSeek = + segment.startMs != null && segment.startMs > 0; + try { const { sound } = await Audio.Sound.createAsync( - { uri }, - { shouldPlay: true } + { uri: segment.uri }, + { shouldPlay: !shouldSeek } ); soundRef.current = sound; @@ -201,13 +248,28 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { setCurrentAudioId(audioId); } + // Seek to startMs before starting playback + if (shouldSeek) { + await sound.setPositionAsync(segment.startMs!, { + toleranceMillisBefore: 0, + toleranceMillisAfter: 0 + }); + await sound.playAsync(); + } + // Get initial status to set the duration const status = await sound.getStatusAsync(); if (status.isLoaded) { - const durationMs = status.durationMillis ?? 0; + const fullDurationMs = status.durationMillis ?? 0; + + // Effective duration for this segment (respecting start/end) + const startMs = segment.startMs ?? 0; + const endMs = segment.endMs ?? fullDurationMs; + const effectiveDuration = Math.max(0, endMs - startMs); - // Store this segment's duration - segmentDurations.current[currentSequenceIndex.current] = durationMs; + // Store this segment's effective duration + segmentDurations.current[currentSequenceIndex.current] = + effectiveDuration; // Calculate total duration across all segments const totalDuration = segmentDurations.current.reduce( @@ -215,13 +277,13 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { 0 ); setDuration(totalDuration); - durationSharedRef.current.value = totalDuration; // Update SharedValue + durationSharedRef.current.value = totalDuration; } - // Start tracking position + // Start tracking position (also enforces endMs boundary) startPositionTracking(); - // Set up listener for when sound finishes playing + // Set up listener for when sound finishes naturally sound.setOnPlaybackStatusUpdate((status) => { if (!status.isLoaded) { return; @@ -232,18 +294,9 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { isTrackingPositionRef.current.value = false; void sound.unloadAsync(); soundRef.current = null; - - // Check if there are more sounds in the sequence - if (sequenceQueue.current.length > 0) { - void playNextInSequence(); - } else { - // No more sounds in sequence - setIsPlaying(false); - setCurrentAudioId(null); - setPositionState(0); - positionSharedRef.current.value = 0; - durationSharedRef.current.value = 0; - } + // playNextInSequence advances to the next segment, or resets + // all state if no segments remain. + void playNextInSequence(); } }); } catch { @@ -252,45 +305,70 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } }; - const playSoundSequence = async (uris: string[], audioId?: string) => { - if (uris.length === 0) return; + /** + * Unified playback function. Accepts any combination of URIs and segments: + * playSound("file.m4a", audioId) + * playSound(["a.m4a", "b.m4a"], audioId) + * playSound({ uri: "file.m4a", startMs: 500, endMs: 3000 }, audioId) + * playSound([seg1, seg2], audioId) + */ + const playSound = async (input: PlayInput, audioId?: string) => { + // Normalize any input shape to AudioSegment[] + const raw = Array.isArray(input) ? input : [input]; + const segments: AudioSegment[] = raw.map((s) => + typeof s === 'string' ? { uri: s } : s + ); + if (segments.length === 0) return; // Stop any current playback await stopCurrentSound(); - // Set up sequence - sequenceQueue.current = uris; + // Always set up sequence state โ€” even for single segments โ€” so that + // trim enforcement (startMs/endMs) works via startPositionTracking. + sequenceSegments.current = segments; currentSequenceIndex.current = 0; - segmentDurations.current = new Array(uris.length).fill(0); - // Update SharedValue via ref to satisfy React Compiler + segmentDurations.current = new Array(segments.length).fill(0); cumulativePositionSharedRef.current.value = 0; - // Preload all segment durations for accurate total duration - // NOTE: Process sequentially to avoid ExoPlayer threading issues on Android - // (ExoPlayer requires all player operations on the main thread) - try { - for (let index = 0; index < uris.length; index++) { - const uri = uris[index]!; - const { sound } = await Audio.Sound.createAsync({ uri }); - const status = await sound.getStatusAsync(); - await sound.unloadAsync(); - if (status.isLoaded) { - segmentDurations.current[index] = status.durationMillis ?? 0; + // For multi-segment sequences, preload durations for accurate total display. + // Single segments get their duration set inside playSegment. + // NOTE: Process sequentially to avoid ExoPlayer threading issues on Android. + if (segments.length > 1) { + try { + for (let index = 0; index < segments.length; index++) { + const seg = segments[index]!; + const { sound } = await Audio.Sound.createAsync({ uri: seg.uri }); + const status = await sound.getStatusAsync(); + await sound.unloadAsync(); + if (status.isLoaded) { + const fullMs = status.durationMillis ?? 0; + const startMs = seg.startMs ?? 0; + const endMs = seg.endMs ?? fullMs; + segmentDurations.current[index] = Math.max(0, endMs - startMs); + } } - } - const totalDuration = segmentDurations.current.reduce( - (sum, d) => sum + d, - 0 - ); - setDuration(totalDuration); - durationSharedRef.current.value = totalDuration; // Update SharedValue - } catch { - // Failed to preload durations, will calculate on the fly + const totalDuration = segmentDurations.current.reduce( + (sum, d) => sum + d, + 0 + ); + setDuration(totalDuration); + durationSharedRef.current.value = totalDuration; + } catch { + // Failed to preload durations, will calculate on the fly + } } - // Play first sound - await playSound(uris[0]!, audioId, true); + // Play first segment + await playSegment(segments[0]!, audioId); + }; + + /** @deprecated Use playSound โ€” it now accepts all input types */ + const playSoundSequence = async ( + input: (string | AudioSegment)[], + audioId?: string + ) => { + await playSound(input, audioId); }; // Ensure cleanup when the component unmounts diff --git a/docs/asset-audio.md b/docs/asset-audio.md new file mode 100644 index 000000000..7625d18ae --- /dev/null +++ b/docs/asset-audio.md @@ -0,0 +1,191 @@ +# AssetAudio + +The `AssetAudio` system centralizes how the app loads, plays, previews, trims, and exports an asset's audio. It hides the complexity of merged audio (multiple audio files behind one asset) and trim points behind a small, consistent API. + +## Why this exists + +An asset's audio can be one file or several files in sequence ("merged audio"), and it may have trim points. `AssetAudio` gives you one interface and a handful of functions so you never have to think about those details. Play, visualize, trim, or export; it handles the rest. + +## The `AssetAudio` interface + +```typescript +interface AssetAudioSegment { + uri: string; // local file URI + durationMs: number; // full, untrimmed duration in ms + trim?: { + startMs: number; + endMs: number; + }; +} + +interface AssetAudio { + assetId: string; + segments: AssetAudioSegment[]; + totalDurationMs: number; // sum of effective (trimmed) durations +} +``` + +Every function in the API can work from this object. + +When trimming audio the app uses this as an in-memory working copy, updating `trim` as the user drags handles. On confirmation the trim points will be written to the database. + +## File layout + +### `services/assetAudio.ts` + +Contains all the logic in one file: + +- **`AssetAudio` interface** - the type described above. +- **`useAssetAudio()` hook** - the main entry point for components. Calls `useAudio()` internally and exposes: + - **`resolve(assetId)`** - queries the database for URIs, loads segment durations, reads trim metadata, and returns an `AssetAudio` object. + - **`play(assetId | AssetAudio)`** - accepts an asset ID string or a pre-resolved `AssetAudio` object. Resolves automatically when given a string. Respects trim points. Handles single or merged audio. + - **`stop()`** - stops playback. + - **`getWaveform(assetId, options?)`** - extracts waveform amplitudes from each segment, combines them proportionally, and slices to the trim region by default. Pass `{ ignoreTrim: true }` for the full waveform. + - **`saveTrim(assetAudio)`** - writes the object's trim points back to `asset.metadata` in the database. + - **`export(assetId)`** - concatenates segments, applies trim, and returns a path to a single `.m4a` file. + - **`isPlaying`** - `boolean`, true while audio is playing. + - **`currentAudioId`** - the asset ID currently playing, or `null` when idle. Useful for highlighting the active asset in a list. + - **`positionShared`** - Reanimated `SharedValue` tracking the current playback position in milliseconds. Updates at 60fps on the UI thread for smooth progress bars. + - **`durationShared`** - Reanimated `SharedValue` with the total playback duration in milliseconds (after trim). +- The standalone functions `resolveAssetAudio`, `getAssetWaveform`, `exportAssetAudio`, and `saveTrim` are also exported directly for use outside React components. + +### `contexts/AudioContext.tsx` + +The low-level audio engine. Manages `expo-av` sound objects, position tracking via Reanimated shared values, and sequential segment playback. `useAssetAudio` wraps this internally; most components never import `AudioContext` directly. + +### `database_services/assetService.ts` + +Owns the `AssetMetadata` interface (which includes the `trim` field). `saveTrim` in `assetAudio.ts` delegates here to persist changes. + +### `utils/audioWaveform.ts` + +Contains `extractWaveformFromFile`, which reads PCM data from a single audio file and returns amplitude bars. `getAssetWaveform` calls this per-segment and stitches the results together. + +## How to use it + +### Play an asset's audio + +```typescript +const audio = useAssetAudio(); + +// One call. Resolves URIs, applies trim, handles single or merged audio. +await audio.play(assetId); + +// Stop playback +await audio.stop(); +``` + +### Get a waveform + +```typescript +const audio = useAssetAudio(); + +// Trimmed waveform (default); what the rest of the app sees +const waveform = await audio.getWaveform(assetId, { barCount: 64 }); + +// Full waveform, ignoring trim; used in the trim UI +const fullWaveform = await audio.getWaveform(assetId, { ignoreTrim: true, barCount: 128 }); +``` + +### Export to a single file + +```typescript +const audio = useAssetAudio(); + +// Concatenates segments, applies trim, returns a path to one .m4a file +const filePath = await audio.export(assetId); +``` + +### Access playback state + +```typescript +const audio = useAssetAudio(); + +audio.isPlaying; // boolean +audio.currentAudioId; // the assetId currently playing, or null +audio.positionShared; // Reanimated SharedValue (ms), 60fps updates +audio.durationShared; // Reanimated SharedValue (ms) +``` + +### Work with the raw `AssetAudio` object + +For the trim UI or anywhere you need to inspect or modify the underlying data: + +```typescript +const audio = useAssetAudio(); + +// Get the full resolved object +const resolved = await audio.resolve(assetId); +// resolved.segments[0] โ†’ { uri: "file:///...seg1.m4a", durationMs: 4200, trim: { startMs: 200, endMs: 4000 } } +// resolved.segments[1] โ†’ { uri: "file:///...seg2.m4a", durationMs: 3100 } +// resolved.totalDurationMs โ†’ 6900 (3800 trimmed + 3100 untrimmed) +``` + +### Trim modal workflow + +The trim modal is the one place that digs into the `AssetAudio` object directly. It uses `resolve` to get the raw data, then mutates a local copy as the user drags the trim handles. + +```typescript +const audio = useAssetAudio(); +const [assetAudio, setAssetAudio] = useState(null); +const [waveform, setWaveform] = useState([]); + +// 1. Open the modal: resolve the object and load the full waveform +const open = async (assetId: string) => { + const resolved = await audio.resolve(assetId); + const fullWaveform = await audio.getWaveform(assetId, { ignoreTrim: true, barCount: 128 }); + setAssetAudio(resolved); + setWaveform(fullWaveform); +}; + +// 2. User drags trim handles: adjusts start of first segment, end of last segment +const onTrimChange = (startFraction: number, endFraction: number) => { + setAssetAudio(prev => { + if (!prev) return null; + const segments = prev.segments.map((seg, i) => { + if (i === 0) { + const startMs = Math.round(startFraction * seg.durationMs); + return { ...seg, trim: { startMs, endMs: seg.trim?.endMs ?? seg.durationMs } }; + } + if (i === segments.length - 1) { + const endMs = Math.round(endFraction * seg.durationMs); + return { ...seg, trim: { startMs: seg.trim?.startMs ?? 0, endMs } }; + } + return seg; + }); + const totalDurationMs = segments.reduce((sum, seg) => + sum + (seg.trim ? seg.trim.endMs - seg.trim.startMs : seg.durationMs), 0 + ); + return { ...prev, segments, totalDurationMs }; + }); +}; + +// 3. Play preview (debounced): plays whatever trim is on the object +const debouncedPlay = useDebouncedCallback(() => { + if (assetAudio) audio.play(assetAudio); +}, [assetAudio], 300); + +// 4. Confirm: persist the object's trim to the database +const onConfirm = async () => { + if (assetAudio) await audio.saveTrim(assetAudio); +}; +``` + +The waveform display layers three things on top of each other: + +1. **Full waveform** in a faded color (the `waveform` state, always `ignoreTrim: true`). +2. **Selection overlay** in a bright color, clipped to the trim region. Uses the same waveform data, masked by the selection bounds. +3. **Clip divider lines** at the boundaries between internal audio files. Positions come from each segment's `durationMs`, converted to fractions of the full untrimmed duration. + +### Outside of React components + +`resolveAssetAudio`, `getAssetWaveform`, `exportAssetAudio`, and `saveTrim` are plain async functions. They don't require React. Import them directly for use in background tasks, scripts, or utilities. + +```typescript +import { resolveAssetAudio, exportAssetAudio } from '@/services/assetAudio'; + +const audio = await resolveAssetAudio(assetId); +const exportedPath = await exportAssetAudio(assetId); +``` + +Only `play` and the playback state properties require the `useAssetAudio` hook, because they depend on the React audio context for managing sound objects and position tracking. diff --git a/services/assetAudio.ts b/services/assetAudio.ts new file mode 100644 index 000000000..f233c2264 --- /dev/null +++ b/services/assetAudio.ts @@ -0,0 +1,583 @@ +/** + * AssetAudio - Centralized audio resolution, playback, waveform, and trim. + * + * See docs/asset-audio.md for full API documentation and usage examples. + * + * DEPENDENCIES (not yet created โ€” will cause build errors until they exist): + * + * 1. `utils/audioWaveform.ts` must export `extractWaveformFromFile`: + * export function extractWaveformFromFile( + * uri: string, + * barCount: number, + * options?: { normalize?: boolean } + * ): Promise; + * + * 2. A `metadata TEXT` column on the `asset_content_link` table (both synced + * and local schemas). Until the migration runs, `parseTrimMetadata` will + * safely return `undefined`, and `saveTrim` will be a no-op since the + * column won't exist to write to. + */ + +import type { AudioSegment } from '@/contexts/AudioContext'; +import { useAudio } from '@/contexts/AudioContext'; +import { system } from '@/db/powersync/system'; +import { extractWaveformFromFile } from '@/utils/audioWaveform'; +import { resolveTable } from '@/utils/dbUtils'; +import { + fileExists, + getLocalAttachmentUriWithOPFS +} from '@/utils/fileUtils'; +import { Audio } from 'expo-av'; +import { eq } from 'drizzle-orm'; + +// --------------------------------------------------------------------------- +// Types +// --------------------------------------------------------------------------- + +export interface AssetAudioSegment { + /** Local file URI */ + uri: string; + /** Full, untrimmed duration in ms */ + durationMs: number; + /** Trim points (relative to this segment's full duration) */ + trim?: { startMs: number; endMs: number }; + /** Content link row ID (for persisting trim back to DB) */ + contentLinkId: string; +} + +export interface AssetAudio { + assetId: string; + segments: AssetAudioSegment[]; + /** Sum of effective (trimmed) durations across all segments */ + totalDurationMs: number; +} + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +/** + * Compute the effective duration of a segment, respecting trim if present. + */ +function effectiveDuration(seg: AssetAudioSegment): number { + if (seg.trim) { + return Math.max(0, seg.trim.endMs - seg.trim.startMs); + } + return seg.durationMs; +} + +/** + * Compute total effective duration across all segments. + */ +function computeTotalDuration(segments: AssetAudioSegment[]): number { + return segments.reduce((sum, seg) => sum + effectiveDuration(seg), 0); +} + +/** + * Load duration for a single audio URI by briefly creating an expo-av Sound. + * + * EXPO-AUDIO MIGRATION: Replace Audio.Sound.createAsync with the expo-audio + * equivalent (AudioPlayer). This is the only direct expo-av usage in this + * file โ€” all playback routes through AudioContext. + */ +async function loadDuration(uri: string): Promise { + try { + const { sound } = await Audio.Sound.createAsync({ uri }); + const status = await sound.getStatusAsync(); + await sound.unloadAsync(); + return status.isLoaded ? (status.durationMillis ?? 0) : 0; + } catch { + return 0; + } +} + +/** + * Resolve a single audio value (local path, file URI, or attachment ID) to a + * verified local file URI. Returns null if the file can't be found. + * + * This is the single-source-of-truth for the three-way resolution that was + * previously duplicated across 6+ view files. + */ +async function resolveAudioValue( + audioValue: string, + contentLinksLocal: { asset_id: string; audio: string[] | null }[], + assetId: string +): Promise { + // --- Direct local path (from saveAudioLocally) --- + if (audioValue.startsWith('local/')) { + const constructedUri = await getLocalAttachmentUriWithOPFS(audioValue); + if (await fileExists(constructedUri)) return constructedUri; + + // Fallback: search attachment queue + if (system.permAttachmentQueue) { + const filename = audioValue.replace(/^local\//, ''); + const uuidPart = filename.split('.')[0]; + const attachment = await system.powersync.getOptional<{ + id: string; + filename: string | null; + local_uri: string | null; + }>( + `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR filename LIKE ? OR id = ? OR id LIKE ? LIMIT 1`, + [filename, `%${uuidPart}%`, filename, `%${uuidPart}%`] + ); + if (attachment?.local_uri) { + const foundUri = system.permAttachmentQueue.getLocalUri( + attachment.local_uri + ); + if (await fileExists(foundUri)) return foundUri; + } + } + + // Fallback: try local table for file:// URIs + return findFallbackUri(contentLinksLocal, assetId); + } + + // --- Full file URI --- + if (audioValue.startsWith('file://')) { + if (await fileExists(audioValue)) return audioValue; + + // Fallback: search attachment queue by filename + if (system.permAttachmentQueue) { + const filename = audioValue.split('/').pop(); + if (filename) { + const attachment = await system.powersync.getOptional<{ + id: string; + filename: string | null; + local_uri: string | null; + }>( + `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR id = ? LIMIT 1`, + [filename, filename] + ); + if (attachment?.local_uri) { + const foundUri = system.permAttachmentQueue.getLocalUri( + attachment.local_uri + ); + if (await fileExists(foundUri)) return foundUri; + } + } + } + return null; + } + + // --- Attachment ID --- + if (system.permAttachmentQueue) { + const attachment = await system.powersync.getOptional<{ + id: string; + local_uri: string | null; + }>( + `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, + [audioValue] + ); + if (attachment?.local_uri) { + const localUri = system.permAttachmentQueue.getLocalUri( + attachment.local_uri + ); + if (await fileExists(localUri)) return localUri; + } + } + + // Fallback: try local table + return findFallbackUri(contentLinksLocal, assetId); +} + +/** + * Last-resort fallback: scan local content link rows for any working URI. + */ +async function findFallbackUri( + contentLinksLocal: { asset_id: string; audio: string[] | null }[], + assetId: string +): Promise { + const fallbackLink = contentLinksLocal.find( + (link) => link.asset_id === assetId + ); + if (!fallbackLink?.audio) return null; + + for (const value of fallbackLink.audio) { + if (value.startsWith('local/')) { + const uri = await getLocalAttachmentUriWithOPFS(value); + if (await fileExists(uri)) return uri; + } else if (value.startsWith('file://')) { + if (await fileExists(value)) return value; + } + } + return null; +} + +/** + * Parse trim metadata from a content link's metadata column. + * Until the DB migration adds the metadata column to asset_content_link, + * this will return undefined. + */ +function parseTrimMetadata( + contentLink: { metadata?: string | null } +): { startMs: number; endMs: number } | undefined { + if (!contentLink.metadata) return undefined; + try { + const parsed = JSON.parse(contentLink.metadata) as { + trim?: { startMs: number; endMs: number }; + }; + if ( + parsed.trim && + typeof parsed.trim.startMs === 'number' && + typeof parsed.trim.endMs === 'number' + ) { + return parsed.trim; + } + } catch { + // Invalid JSON; ignore + } + return undefined; +} + +// --------------------------------------------------------------------------- +// Core: resolve +// --------------------------------------------------------------------------- + +/** + * Resolve an asset's audio into an AssetAudio object. + * Queries both synced and local content link tables, resolves each audio + * value to a verified local URI, loads durations, and reads trim metadata. + * + * @returns AssetAudio with populated segments, or null if no audio is found. + */ +export async function resolveAssetAudio( + assetId: string +): Promise { + // Query content links from synced and local tables + const syncedTable = resolveTable('asset_content_link', { + localOverride: false + }); + const localTable = resolveTable('asset_content_link', { + localOverride: true + }); + + const contentLinksSynced = await system.db + .select() + .from(syncedTable) + .where(eq(syncedTable.asset_id, assetId)); + const contentLinksLocal = await system.db + .select() + .from(localTable) + .where(eq(localTable.asset_id, assetId)); + + // Merge and deduplicate (synced wins) + const allLinks = [...contentLinksSynced, ...contentLinksLocal]; + const seenIds = new Set(); + const uniqueLinks = allLinks.filter((link) => { + if (seenIds.has(link.id)) return false; + seenIds.add(link.id); + return true; + }); + + if (uniqueLinks.length === 0) return null; + + // Build segments: one per audio value across all content links + // Process sequentially to avoid ExoPlayer threading issues on Android + const segments: AssetAudioSegment[] = []; + + for (const link of uniqueLinks) { + const audioArray = link.audio ?? []; + if (audioArray.length === 0) continue; + + // Read trim metadata from this content link row + const trim = parseTrimMetadata(link as { metadata?: string | null }); + + for (const audioValue of audioArray) { + if (!audioValue) continue; + + const uri = await resolveAudioValue( + audioValue, + contentLinksLocal as { + asset_id: string; + audio: string[] | null; + }[], + assetId + ); + if (!uri) continue; + + const durationMs = await loadDuration(uri); + + segments.push({ + uri, + durationMs, + trim, + contentLinkId: link.id + }); + } + } + + if (segments.length === 0) return null; + + return { + assetId, + segments, + totalDurationMs: computeTotalDuration(segments) + }; +} + +// --------------------------------------------------------------------------- +// Waveform +// --------------------------------------------------------------------------- + +/** + * Build a combined waveform for an asset's audio. + * + * By default, slices to the effective (trimmed) region of each segment. + * Pass `ignoreTrim: true` to get the full waveform for the entire + * underlying audio (used in the trim UI). + */ +export async function getAssetWaveform( + assetId: string, + options?: { barCount?: number; ignoreTrim?: boolean } +): Promise { + const barCount = options?.barCount ?? 128; + const ignoreTrim = options?.ignoreTrim ?? false; + + const audio = await resolveAssetAudio(assetId); + if (!audio || audio.segments.length === 0) return []; + + // Calculate the total duration we're representing + const totalDuration = ignoreTrim + ? audio.segments.reduce((sum, seg) => sum + seg.durationMs, 0) + : audio.totalDurationMs; + + if (totalDuration <= 0) return []; + + // Single segment, no trim to worry about + if (audio.segments.length === 1 && (ignoreTrim || !audio.segments[0]!.trim)) { + return extractWaveformFromFile(audio.segments[0]!.uri, barCount, { + normalize: true + }); + } + + // Multiple segments (or trimmed single segment): build proportional waveform + const merged: number[] = []; + let remainingBars = barCount; + let remainingWeight = totalDuration; + + for (let i = 0; i < audio.segments.length; i++) { + const seg = audio.segments[i]!; + const segDuration = ignoreTrim ? seg.durationMs : effectiveDuration(seg); + if (segDuration <= 0) continue; + + const isLast = i === audio.segments.length - 1; + let bars = isLast + ? remainingBars + : Math.max( + 1, + Math.round((remainingBars * segDuration) / remainingWeight) + ); + + // Ensure we leave at least 1 bar per remaining segment + const clipsLeft = audio.segments.length - i; + bars = Math.min(bars, Math.max(1, remainingBars - (clipsLeft - 1))); + + // Extract waveform for this segment + const segWaveform = await extractWaveformFromFile(seg.uri, bars, { + normalize: false + }); + + // If trimmed and not ignoring, slice the waveform to the trim region + if (!ignoreTrim && seg.trim && seg.durationMs > 0) { + const startFrac = seg.trim.startMs / seg.durationMs; + const endFrac = seg.trim.endMs / seg.durationMs; + const startBar = Math.floor(startFrac * segWaveform.length); + const endBar = Math.ceil(endFrac * segWaveform.length); + merged.push(...segWaveform.slice(startBar, endBar)); + } else { + merged.push(...segWaveform); + } + + remainingBars -= bars; + remainingWeight -= segDuration; + } + + // Normalize the combined waveform + const maxAmplitude = Math.max(...merged); + if (maxAmplitude > 0) { + for (let i = 0; i < merged.length; i++) { + merged[i] = merged[i]! / maxAmplitude; + } + } + + return merged; +} + +// --------------------------------------------------------------------------- +// Export +// --------------------------------------------------------------------------- + +/** + * Concatenate an asset's audio segments (with trim applied) into a single + * .m4a file and return the path. Delegates to the native audio-concat module. + * + * TODO: Wire up to react-native-audio-concat with trim offsets. + * For now, this is a placeholder that mirrors localAudioConcat.ts structure. + */ +export function exportAssetAudio( + _assetId: string +): Promise { + // const audio = await resolveAssetAudio(assetId); + // if (!audio) throw new Error('No audio found for asset'); + // + // 1. For each segment, apply trim (convert to temp .m4a if needed) + // 2. Concatenate via concatAudioFiles + // 3. Return output path + throw new Error('exportAssetAudio not yet implemented'); +} + +// --------------------------------------------------------------------------- +// Trim persistence +// --------------------------------------------------------------------------- + +/** + * Write each segment's trim points back to the asset_content_link metadata + * column in the database. + * + * Only updates local-only content links (synced content is immutable). + * + * NOTE: Requires the `metadata` column on `asset_content_link`. If the column + * does not exist yet (migration pending), the update will throw. The outer + * try/catch ensures the function degrades to a no-op in that case. + */ +export async function saveTrim(audio: AssetAudio): Promise { + const localTable = resolveTable('asset_content_link', { + localOverride: true + }); + const syncedTable = resolveTable('asset_content_link', { + localOverride: false + }); + + for (const seg of audio.segments) { + try { + // Only update local content links + const syncedRow = await system.db + .select({ id: syncedTable.id }) + .from(syncedTable) + .where(eq(syncedTable.id, seg.contentLinkId)) + .limit(1); + + if (syncedRow.length > 0) { + // Synced content is immutable; skip + continue; + } + + // Read existing metadata and merge in the trim + const existing = await system.db + .select() + .from(localTable) + .where(eq(localTable.id, seg.contentLinkId)) + .limit(1); + + if (existing.length === 0) continue; + + const row = existing[0] as { metadata?: string | null }; + let metadata: Record = {}; + if (row.metadata) { + try { + metadata = JSON.parse(row.metadata) as Record; + } catch { + // Invalid JSON; start fresh + } + } + + if (seg.trim) { + metadata.trim = { startMs: seg.trim.startMs, endMs: seg.trim.endMs }; + } else { + delete metadata.trim; + } + + const metadataStr = + Object.keys(metadata).length > 0 ? JSON.stringify(metadata) : null; + + await system.db + .update(localTable) + .set({ metadata: metadataStr } as Record) + .where(eq(localTable.id, seg.contentLinkId)); + } catch (error) { + console.warn( + `saveTrim: failed to update content link ${seg.contentLinkId}:`, + error + ); + } + } +} + +// --------------------------------------------------------------------------- +// Trim-aware playback (used by play() for trimmed segments) +// --------------------------------------------------------------------------- + +/** + * Convert AssetAudio segments into AudioSegment[] for AudioContext. + * Maps trim points to startMs/endMs. Segments without trim pass through + * as plain URIs with no offsets. + */ +function toAudioSegments(audio: AssetAudio): AudioSegment[] { + return audio.segments.map((seg) => ({ + uri: seg.uri, + startMs: seg.trim?.startMs, + endMs: seg.trim?.endMs + })); +} + +// --------------------------------------------------------------------------- +// Hook +// --------------------------------------------------------------------------- + +/** + * React hook for asset audio operations. + * + * Provides play, stop, resolve, getWaveform, export, saveTrim, and + * playback state. This is the main entry point for components. + * + * @example + * const audio = useAssetAudio(); + * await audio.play(assetId); + * await audio.stop(); + * const waveform = await audio.getWaveform(assetId, { barCount: 64 }); + */ +export function useAssetAudio() { + const ctx = useAudio(); + + const play = async (input: string | AssetAudio): Promise => { + const audio = + typeof input === 'string' ? await resolveAssetAudio(input) : input; + if (!audio || audio.segments.length === 0) return; + + // Convert to AudioSegments (with startMs/endMs from trim) and + // hand off to AudioContext. Single or multi, trimmed or not โ€” + // playSoundSequence handles all cases uniformly. + const segments = toAudioSegments(audio); + if (segments.length === 1 && !segments[0]!.startMs && !segments[0]!.endMs) { + // Simple single untrimmed file โ€” use playSound for least overhead + await ctx.playSound(segments[0]!.uri, audio.assetId); + } else { + await ctx.playSoundSequence(segments, audio.assetId); + } + }; + + return { + /** Play an asset by ID, or play a pre-resolved AssetAudio object. */ + play, + /** Stop current playback. */ + stop: ctx.stopCurrentSound, + /** Resolve an asset's audio into an AssetAudio object. */ + resolve: resolveAssetAudio, + /** Build a combined waveform for an asset. */ + getWaveform: getAssetWaveform, + /** Export an asset's audio as a single .m4a file. */ + export: exportAssetAudio, + /** Persist trim points from an AssetAudio object to the database. */ + saveTrim, + + // Playback state + /** True while audio is playing. */ + isPlaying: ctx.isPlaying, + /** The asset ID currently playing, or null. */ + currentAudioId: ctx.currentAudioId, + /** Playback position in ms (Reanimated SharedValue, 60fps). */ + positionShared: ctx.positionShared, + /** Playback duration in ms (Reanimated SharedValue). */ + durationShared: ctx.durationShared + }; +} From 6d28c5c9485d8fb52b4fe8a88edc81f7c5c545ac Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Wed, 11 Feb 2026 19:25:12 -0600 Subject: [PATCH 042/143] fix color scheme crash on android --- hooks/useColorScheme.tsx | 18 +++++++++++++----- store/localStore.ts | 8 ++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/hooks/useColorScheme.tsx b/hooks/useColorScheme.tsx index 0d8decaa7..50b38285f 100644 --- a/hooks/useColorScheme.tsx +++ b/hooks/useColorScheme.tsx @@ -5,22 +5,30 @@ import { } from 'nativewind'; export function getColorScheme(): 'light' | 'dark' { - const colorScheme = nativewindColorScheme.get(); const stateTheme = useLocalStore.getState().theme; - return stateTheme === 'system' ? colorScheme! : stateTheme; + if (stateTheme !== 'system') { + return stateTheme; + } + // Fallback to 'light' if nativewindColorScheme is not initialized + if (!nativewindColorScheme) { + return 'light'; + } + const colorScheme = nativewindColorScheme.get(); + return colorScheme ?? 'light'; } export function useColorScheme() { - // const colorScheme = useNativeColorScheme(); const { colorScheme } = useNativewindColorScheme(); const localTheme = useLocalStore((state) => state.theme); const setLocalTheme = useLocalStore((state) => state.setTheme); + const colorSchemeOrDefault = colorScheme ?? 'dark'; + return { stateTheme: localTheme, - colorScheme: colorScheme ?? 'dark', - isDarkColorScheme: colorScheme === 'dark', + colorScheme: colorSchemeOrDefault, + isDarkColorScheme: colorSchemeOrDefault === 'dark', setColorScheme: setLocalTheme }; } diff --git a/store/localStore.ts b/store/localStore.ts index ed4e2dd36..df060c62c 100644 --- a/store/localStore.ts +++ b/store/localStore.ts @@ -387,7 +387,11 @@ export const useLocalStore = create()( setAnalyticsOptOut: (optOut) => set({ analyticsOptOut: optOut }), setTheme: (theme) => { set({ theme }); - colorScheme.set(theme); + // Only set colorScheme if NativeWind is initialized and theme is not 'system' + // 'system' theme should use the OS color scheme, not be set explicitly + if (colorScheme && theme !== 'system') { + colorScheme.set(theme); + } }, setUILanguage: (lang) => set({ uiLanguage: lang }), setSavedLanguage: (lang) => set({ savedLanguage: lang }), @@ -570,7 +574,7 @@ export const useLocalStore = create()( onRehydrateStorage: () => async (state) => { console.log('rehydrating local store', state); if (state) { - colorScheme.set(state.theme); + state.setTheme(state.theme); // Validate and clamp VAD threshold if invalid if ( typeof state.vadThreshold !== 'number' || From 5fc097feb989fff034714ef3e1e135016dcbbcc4 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Wed, 11 Feb 2026 13:50:34 -0800 Subject: [PATCH 043/143] Imported code for generating waveforms --- contexts/AudioContext.tsx | 2 +- .../MicrophoneEnergyModule.kt | 261 +++++++++++++++++ .../ios/MicrophoneEnergyModule.swift | 77 +++++ .../src/MicrophoneEnergyModule.ts | 5 + utils/audioWaveform.ts | 262 ++++++++++++++++++ 5 files changed, 606 insertions(+), 1 deletion(-) create mode 100644 utils/audioWaveform.ts diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index e5c01ce96..94bf660f6 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -33,7 +33,7 @@ export interface AudioSegment { /** Any input playSound accepts: a single URI, an array of URIs, a single * AudioSegment, or an array of AudioSegments (plain strings and AudioSegments * can be mixed freely in arrays). */ -export type PlayInput = string | string[] | AudioSegment | AudioSegment[]; +export type PlayInput = string | AudioSegment | (string | AudioSegment)[]; interface AudioContextType { playSound: (input: PlayInput, audioId?: string) => Promise; diff --git a/modules/microphone-energy/android/src/main/java/expo/modules/microphoneenergy/MicrophoneEnergyModule.kt b/modules/microphone-energy/android/src/main/java/expo/modules/microphoneenergy/MicrophoneEnergyModule.kt index 9ac4377e4..e8c56c063 100644 --- a/modules/microphone-energy/android/src/main/java/expo/modules/microphoneenergy/MicrophoneEnergyModule.kt +++ b/modules/microphone-energy/android/src/main/java/expo/modules/microphoneenergy/MicrophoneEnergyModule.kt @@ -2,11 +2,15 @@ import android.media.AudioFormat import android.media.AudioRecord +import android.media.MediaCodec +import android.media.MediaExtractor +import android.media.MediaFormat import android.media.MediaRecorder import expo.modules.kotlin.Promise import expo.modules.kotlin.modules.Module import expo.modules.kotlin.modules.ModuleDefinition import kotlinx.coroutines.* +import java.nio.ByteOrder import kotlin.math.abs import kotlin.math.log10 import kotlin.math.max @@ -58,6 +62,9 @@ class MicrophoneEnergyModule : Module() { AsyncFunction("disableVAD") { promise: Promise -> disableVAD(); promise.resolve(null) } AsyncFunction("startSegment") { options: Map?, promise: Promise -> startSegment(options, promise) } AsyncFunction("stopSegment") { promise: Promise -> stopSegment(promise) } + AsyncFunction("extractWaveform") { uri: String, barCount: Int, normalize: Boolean?, promise: Promise -> + extractWaveform(uri, barCount, normalize ?: true, promise) + } } private fun startEnergyDetection(promise: Promise) { @@ -308,4 +315,258 @@ class MicrophoneEnergyModule : Module() { segmentFile = null; segmentBuffers.clear() } } + + private fun extractWaveform(uri: String, barCount: Int, normalize: Boolean, promise: Promise) { + CoroutineScope(Dispatchers.IO).launch { + try { + val amplitudes = extractWaveformNative(uri, barCount, normalize) + withContext(Dispatchers.Main) { promise.resolve(amplitudes.toList()) } + } catch (e: Exception) { + withContext(Dispatchers.Main) { + promise.reject("WAVEFORM_ERROR", "Failed to extract waveform: ${e.message}", e) + } + } + } + } + + private fun extractWaveformNative(uri: String, barCount: Int, normalize: Boolean): DoubleArray { + val extractor = MediaExtractor() + val path = if (uri.startsWith("file://")) uri.removePrefix("file://") else uri + extractor.setDataSource(path) + + var audioTrackIndex = -1 + for (i in 0 until extractor.trackCount) { + val format = extractor.getTrackFormat(i) + val mime = format.getString(MediaFormat.KEY_MIME) ?: "" + if (mime.startsWith("audio/")) { audioTrackIndex = i; break } + } + if (audioTrackIndex < 0) throw Exception("No audio track found") + + extractor.selectTrack(audioTrackIndex) + val format = extractor.getTrackFormat(audioTrackIndex) + val mime = format.getString(MediaFormat.KEY_MIME) ?: throw Exception("Missing MIME type") + var sampleRate = format.getInteger(MediaFormat.KEY_SAMPLE_RATE) + var channelCount = format.getInteger(MediaFormat.KEY_CHANNEL_COUNT) + val durationUs = if (format.containsKey(MediaFormat.KEY_DURATION)) format.getLong(MediaFormat.KEY_DURATION) else -1L + var totalSamples = if (durationUs > 0) (durationUs * sampleRate / 1_000_000L) else -1L + + val sumSquares = DoubleArray(barCount) + val counts = IntArray(barCount) + val collectedSamples = if (totalSamples <= 0) ArrayList() else null + + val codec = MediaCodec.createDecoderByType(mime) + codec.configure(format, null, null, 0) + codec.start() + + val bufferInfo = MediaCodec.BufferInfo() + var inputDone = false + var outputDone = false + var sampleIndex = 0L + var pcmEncoding = AudioFormat.ENCODING_PCM_16BIT + + while (!outputDone) { + if (!inputDone) { + val inputIndex = codec.dequeueInputBuffer(10_000) + if (inputIndex >= 0) { + val inputBuffer = codec.getInputBuffer(inputIndex) + if (inputBuffer != null) { + val sampleSize = extractor.readSampleData(inputBuffer, 0) + if (sampleSize < 0) { + codec.queueInputBuffer( + inputIndex, + 0, + 0, + 0, + MediaCodec.BUFFER_FLAG_END_OF_STREAM + ) + inputDone = true + } else { + val presentationTimeUs = extractor.sampleTime + codec.queueInputBuffer(inputIndex, 0, sampleSize, presentationTimeUs, 0) + extractor.advance() + } + } + } + } + + val outputIndex = codec.dequeueOutputBuffer(bufferInfo, 10_000) + when (outputIndex) { + MediaCodec.INFO_OUTPUT_FORMAT_CHANGED -> { + val outputFormat = codec.outputFormat + if (outputFormat.containsKey(MediaFormat.KEY_SAMPLE_RATE)) { + sampleRate = outputFormat.getInteger(MediaFormat.KEY_SAMPLE_RATE) + } + if (outputFormat.containsKey(MediaFormat.KEY_CHANNEL_COUNT)) { + channelCount = outputFormat.getInteger(MediaFormat.KEY_CHANNEL_COUNT) + } + if (outputFormat.containsKey(MediaFormat.KEY_PCM_ENCODING)) { + pcmEncoding = outputFormat.getInteger(MediaFormat.KEY_PCM_ENCODING) + } + if (durationUs > 0) { + totalSamples = (durationUs * sampleRate / 1_000_000L) + } + } + MediaCodec.INFO_TRY_AGAIN_LATER -> {} + else -> { + if (outputIndex >= 0) { + if (bufferInfo.flags and MediaCodec.BUFFER_FLAG_END_OF_STREAM != 0) { + outputDone = true + } + + val outputBuffer = codec.getOutputBuffer(outputIndex) + if (outputBuffer != null && bufferInfo.size > 0) { + outputBuffer.position(bufferInfo.offset) + outputBuffer.limit(bufferInfo.offset + bufferInfo.size) + outputBuffer.order(ByteOrder.LITTLE_ENDIAN) + + if (pcmEncoding == AudioFormat.ENCODING_PCM_FLOAT) { + val floatBuffer = outputBuffer.asFloatBuffer() + val samples = FloatArray(floatBuffer.remaining()) + floatBuffer.get(samples) + sampleIndex = processPcmSamples( + samples, + channelCount, + barCount, + totalSamples, + sumSquares, + counts, + collectedSamples, + sampleIndex + ) + } else { + val shortBuffer = outputBuffer.asShortBuffer() + val samples = ShortArray(shortBuffer.remaining()) + shortBuffer.get(samples) + sampleIndex = processPcmSamples( + samples, + channelCount, + barCount, + totalSamples, + sumSquares, + counts, + collectedSamples, + sampleIndex + ) + } + } + + codec.releaseOutputBuffer(outputIndex, false) + } + } + } + } + + codec.stop() + codec.release() + extractor.release() + + val amplitudes = DoubleArray(barCount) + if (collectedSamples != null) { + val totalFrames = collectedSamples.size + for (bar in 0 until barCount) { + val startFrame = (bar * totalFrames) / barCount + val endFrame = ((bar + 1) * totalFrames) / barCount + val frameCount = endFrame - startFrame + if (frameCount <= 0) continue + var sum = 0.0 + for (f in startFrame until endFrame) { + val sample = collectedSamples[f].toDouble() / 32768.0 + sum += sample * sample + } + amplitudes[bar] = kotlin.math.sqrt(sum / frameCount.toDouble()) + } + } else { + for (bar in 0 until barCount) { + val count = counts[bar] + amplitudes[bar] = if (count > 0) kotlin.math.sqrt(sumSquares[bar] / count.toDouble()) else 0.0 + } + } + + if (normalize) { + val maxAmp = amplitudes.maxOrNull() ?: 0.0 + if (maxAmp > 0) { + for (i in amplitudes.indices) amplitudes[i] = amplitudes[i] / maxAmp + } + } + + return amplitudes + } + + private fun processPcmSamples( + samples: ShortArray, + channelCount: Int, + barCount: Int, + totalSamples: Long, + sumSquares: DoubleArray, + counts: IntArray, + collectedSamples: ArrayList?, + startSampleIndex: Long + ): Long { + var sampleIndex = startSampleIndex + var i = 0 + while (i < samples.size) { + val channels = max(1, channelCount) + var sum = 0 + var ch = 0 + while (ch < channels && i + ch < samples.size) { + sum += samples[i + ch].toInt() + ch++ + } + val avgSample = (sum / channels).toShort() + val normalized = avgSample.toDouble() / 32768.0 + + if (collectedSamples != null) { + collectedSamples.add(avgSample) + } else if (totalSamples > 0) { + val bin = ((sampleIndex * barCount) / totalSamples) + .toInt() + .coerceIn(0, barCount - 1) + sumSquares[bin] += normalized * normalized + counts[bin] += 1 + } + + sampleIndex++ + i += channels + } + return sampleIndex + } + + private fun processPcmSamples( + samples: FloatArray, + channelCount: Int, + barCount: Int, + totalSamples: Long, + sumSquares: DoubleArray, + counts: IntArray, + collectedSamples: ArrayList?, + startSampleIndex: Long + ): Long { + var sampleIndex = startSampleIndex + var i = 0 + while (i < samples.size) { + val channels = max(1, channelCount) + var sum = 0.0 + var ch = 0 + while (ch < channels && i + ch < samples.size) { + sum += samples[i + ch].toDouble() + ch++ + } + val avgSample = (sum / channels).toFloat() + val normalized = avgSample.toDouble() + + if (collectedSamples != null) { + collectedSamples.add((avgSample * 32767.0f).toInt().toShort()) + } else if (totalSamples > 0) { + val bin = ((sampleIndex * barCount) / totalSamples) + .toInt() + .coerceIn(0, barCount - 1) + sumSquares[bin] += normalized * normalized + counts[bin] += 1 + } + + sampleIndex++ + i += channels + } + return sampleIndex + } } diff --git a/modules/microphone-energy/ios/MicrophoneEnergyModule.swift b/modules/microphone-energy/ios/MicrophoneEnergyModule.swift index a9079c698..865994548 100644 --- a/modules/microphone-energy/ios/MicrophoneEnergyModule.swift +++ b/modules/microphone-energy/ios/MicrophoneEnergyModule.swift @@ -63,6 +63,9 @@ public class MicrophoneEnergyModule: Module { AsyncFunction("disableVAD") { () -> Void in self.disableVAD() } AsyncFunction("startSegment") { (options: [String: Any?]?) -> Void in try await self.startSegment(options: options) } AsyncFunction("stopSegment") { () -> String? in return try await self.stopSegment() } + AsyncFunction("extractWaveform") { (uri: String, barCount: Int, normalize: Bool?) async throws -> [Double] in + return try await self.extractWaveform(uri: uri, barCount: barCount, normalize: normalize ?? true) + } } private func startEnergyDetection() async throws { @@ -415,6 +418,80 @@ public class MicrophoneEnergyModule: Module { segmentBuffers.removeAll() return uri } + + private func extractWaveform(uri: String, barCount: Int, normalize: Bool) async throws -> [Double] { + return try await withCheckedThrowingContinuation { continuation in + DispatchQueue.global(qos: .userInitiated).async { + do { + let normalizedUri = uri.hasPrefix("file://") + ? String(uri.dropFirst("file://".count)) + : uri + let fileURL = URL(fileURLWithPath: normalizedUri) + let audioFile = try AVAudioFile(forReading: fileURL) + + let processingFormat = audioFile.processingFormat + let channelCount = Int(processingFormat.channelCount) + let frameCount = AVAudioFrameCount(audioFile.length) + + if frameCount == 0 || barCount <= 0 { + continuation.resume(returning: Array(repeating: 0, count: max(0, barCount))) + return + } + + guard let floatFormat = AVAudioFormat( + commonFormat: .pcmFormatFloat32, + sampleRate: processingFormat.sampleRate, + channels: processingFormat.channelCount, + interleaved: false + ) else { + throw NSError(domain: "MicrophoneEnergy", code: 10, userInfo: [NSLocalizedDescriptionKey: "Failed to create audio format"]) + } + + guard let buffer = AVAudioPCMBuffer(pcmFormat: floatFormat, frameCapacity: frameCount) else { + throw NSError(domain: "MicrophoneEnergy", code: 11, userInfo: [NSLocalizedDescriptionKey: "Failed to allocate audio buffer"]) + } + + try audioFile.read(into: buffer) + + guard let channelData = buffer.floatChannelData else { + throw NSError(domain: "MicrophoneEnergy", code: 12, userInfo: [NSLocalizedDescriptionKey: "No audio data in file"]) + } + + let totalFrames = Int(buffer.frameLength) + var amplitudes = Array(repeating: 0.0, count: barCount) + + for bar in 0.. 0 { + for i in 0..; startSegment(options?: { prerollMs?: number }): Promise; stopSegment(): Promise; + extractWaveform( + uri: string, + barCount: number, + normalize?: boolean + ): Promise; } // This call loads the native module object from the JSI. diff --git a/utils/audioWaveform.ts b/utils/audioWaveform.ts new file mode 100644 index 000000000..5d81ae3c5 --- /dev/null +++ b/utils/audioWaveform.ts @@ -0,0 +1,262 @@ +/** + * Extract waveform amplitude data from audio files. + * + * WAV files: Reads raw PCM samples, divides into `barCount` windows, + * computes RMS amplitude, and returns normalised 0โ€“1 values. + * + * M4A files: Uses the native audio decoder (iOS/Android) to extract real + * PCM samples and compute RMS amplitudes. This avoids heuristics + * based on compressed frame sizes and produces meaningful waveforms. + */ + +import MicrophoneEnergyModule from '@/modules/microphone-energy'; +import { readFile } from '@/utils/fileUtils'; + +const waveformModule = MicrophoneEnergyModule as { + extractWaveform: ( + uri: string, + barCount: number, + normalize?: boolean + ) => Promise; +}; + +// --------------------------------------------------------------------------- +// WAV parser helpers +// --------------------------------------------------------------------------- + +interface WavInfo { + numChannels: number; + sampleRate: number; + bitsPerSample: number; + /** Byte offset where audio sample data starts */ + dataOffset: number; + /** Length in bytes of the audio sample data */ + dataLength: number; +} + +function parseWavHeader(buffer: ArrayBuffer): WavInfo { + const view = new DataView(buffer); + + // Verify RIFF header + const riff = + String.fromCharCode(view.getUint8(0)) + + String.fromCharCode(view.getUint8(1)) + + String.fromCharCode(view.getUint8(2)) + + String.fromCharCode(view.getUint8(3)); + if (riff !== 'RIFF') { + throw new Error('Not a valid WAV file (missing RIFF header)'); + } + + const wave = + String.fromCharCode(view.getUint8(8)) + + String.fromCharCode(view.getUint8(9)) + + String.fromCharCode(view.getUint8(10)) + + String.fromCharCode(view.getUint8(11)); + if (wave !== 'WAVE') { + throw new Error('Not a valid WAV file (missing WAVE identifier)'); + } + + let numChannels = 1; + let sampleRate = 44100; + let bitsPerSample = 16; + let dataOffset = 0; + let dataLength = 0; + + // Walk through chunks + let offset = 12; + while (offset < buffer.byteLength - 8) { + const chunkId = + String.fromCharCode(view.getUint8(offset)) + + String.fromCharCode(view.getUint8(offset + 1)) + + String.fromCharCode(view.getUint8(offset + 2)) + + String.fromCharCode(view.getUint8(offset + 3)); + const chunkSize = view.getUint32(offset + 4, true); // little-endian + + if (chunkId === 'fmt ') { + numChannels = view.getUint16(offset + 10, true); + sampleRate = view.getUint32(offset + 12, true); + bitsPerSample = view.getUint16(offset + 22, true); + } else if (chunkId === 'data') { + dataOffset = offset + 8; + dataLength = chunkSize; + break; // found what we need + } + + // Advance to next chunk (chunk header is 8 bytes + chunkSize, padded to even) + offset += 8 + chunkSize + (chunkSize % 2); + } + + if (dataOffset === 0 || dataLength === 0) { + throw new Error('WAV file missing data chunk'); + } + + return { numChannels, sampleRate, bitsPerSample, dataOffset, dataLength }; +} + +// --------------------------------------------------------------------------- +// Public API +// --------------------------------------------------------------------------- + +/** + * Extract waveform data from a local audio file URI. + * Supports WAV files (direct parsing) and M4A/other formats (via Expo AV sampling). + * + * @param uri Local file URI (file:// or OPFS path) + * @param barCount Number of amplitude bars to return (default 128) + * @returns Array of normalised amplitudes (0โ€“1), length === barCount + */ +export async function extractWaveformFromFile( + uri: string, + barCount = 128, + options?: { normalize?: boolean } +): Promise { + const normalize = options?.normalize ?? true; + // Try to read as WAV first + try { + const buffer = await readFile(uri); + return extractWaveformFromBuffer(buffer, barCount, normalize); + } catch (error) { + // If WAV parsing fails, try to extract from M4A/other formats using Expo AV + const errorMessage = error instanceof Error ? error.message : String(error); + if (errorMessage.includes('RIFF header') || errorMessage.includes('WAV file')) { + // Not a WAV file - try M4A/other format extraction + return await extractWaveformFromAudioFile(uri, barCount, normalize); + } + // Re-throw if it's a different error (file not found, etc.) + throw error; + } +} + +// --------------------------------------------------------------------------- +// Native waveform extraction (M4A/AAC handled via platform decoders) +// --------------------------------------------------------------------------- + +/** + * Extract waveform data from an M4A (MPEG-4) file by reading AAC frame sizes + * from the sample size table (`stsz` atom) of the audio track. + * + * Improvements over naรฏve stsz parsing: + * 1. Finds the actual audio track (handler_type 'soun'), skipping metadata tracks. + * 2. Subtracts the baseline (5th percentile) frame size so silence โ†’ 0. + * 3. Applies a sqrt curve for better visual contrast. + */ +async function extractWaveformFromAudioFile( + uri: string, + barCount: number, + normalize: boolean +): Promise { + try { + const extract = waveformModule.extractWaveform; + // Backward compatible: native module may still accept only 2 args + if (extract.length >= 3) { + return await extract(uri, barCount, normalize); + } + return await extract(uri, barCount); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + if (errorMessage.includes('Received 3 arguments, but 2 was expected')) { + try { + return await waveformModule.extractWaveform(uri, barCount); + } catch (retryError) { + const retryMessage = + retryError instanceof Error ? retryError.message : String(retryError); + throw new Error( + `Failed to extract waveform from audio file: ${retryMessage}` + ); + } + } + throw new Error(`Failed to extract waveform from audio file: ${errorMessage}`); + } +} + +/** + * Extract waveform data from a WAV ArrayBuffer. + */ +export function extractWaveformFromBuffer( + buffer: ArrayBuffer, + barCount = 128, + normalize = true +): number[] { + const { numChannels, bitsPerSample, dataOffset, dataLength } = + parseWavHeader(buffer); + + const bytesPerSample = bitsPerSample / 8; + const bytesPerFrame = bytesPerSample * numChannels; + const totalFrames = Math.floor(dataLength / bytesPerFrame); + + if (totalFrames === 0) { + return Array.from({ length: barCount }).fill(0); + } + + const view = new DataView(buffer); + const _framesPerBar = Math.max(1, Math.floor(totalFrames / barCount)); + const amplitudes: number[] = []; + + for (let bar = 0; bar < barCount; bar++) { + const startFrame = Math.floor((bar / barCount) * totalFrames); + const endFrame = Math.min( + totalFrames, + Math.floor(((bar + 1) / barCount) * totalFrames) + ); + const frameCount = endFrame - startFrame; + + if (frameCount === 0) { + amplitudes.push(0); + continue; + } + + let sumSquares = 0; + + for (let f = startFrame; f < endFrame; f++) { + const frameOffset = dataOffset + f * bytesPerFrame; + + // Average across channels + let frameSample = 0; + for (let ch = 0; ch < numChannels; ch++) { + const sampleOffset = frameOffset + ch * bytesPerSample; + + // Bounds check + if (sampleOffset + bytesPerSample > buffer.byteLength) break; + + let sample: number; + if (bitsPerSample === 16) { + sample = view.getInt16(sampleOffset, true) / 32768; + } else if (bitsPerSample === 8) { + // 8-bit WAV is unsigned (0โ€“255), centre is 128 + sample = (view.getUint8(sampleOffset) - 128) / 128; + } else if (bitsPerSample === 24) { + // 24-bit signed, little-endian + const lo = view.getUint8(sampleOffset); + const mid = view.getUint8(sampleOffset + 1); + const hi = view.getInt8(sampleOffset + 2); // signed for sign extension + sample = ((hi << 16) | (mid << 8) | lo) / 8388608; + } else if (bitsPerSample === 32) { + sample = view.getFloat32(sampleOffset, true); + } else { + // Fallback โ€“ treat as 16-bit + sample = view.getInt16(sampleOffset, true) / 32768; + } + + frameSample += sample; + } + + frameSample /= numChannels; + sumSquares += frameSample * frameSample; + } + + const rms = Math.sqrt(sumSquares / frameCount); + amplitudes.push(rms); + } + + if (normalize) { + // Normalise so the peak bar is 1.0 + const maxAmplitude = Math.max(...amplitudes); + if (maxAmplitude > 0) { + for (let i = 0; i < amplitudes.length; i++) { + amplitudes[i] = amplitudes[i]! / maxAmplitude; + } + } + } + + return amplitudes; +} From 84ec94908534ce7bb83f4f70086c9ba33f97e4c5 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Wed, 11 Feb 2026 19:29:06 -0800 Subject: [PATCH 044/143] Converted RecordingViewSimplified.tsx to use AssetAudio --- .../components/RecordingViewSimplified.tsx | 462 ++---------------- 1 file changed, 48 insertions(+), 414 deletions(-) diff --git a/views/new/recording/components/RecordingViewSimplified.tsx b/views/new/recording/components/RecordingViewSimplified.tsx index 8be9aef87..3ab74c805 100644 --- a/views/new/recording/components/RecordingViewSimplified.tsx +++ b/views/new/recording/components/RecordingViewSimplified.tsx @@ -4,7 +4,10 @@ import { RecordingHelpDialog } from '@/components/RecordingHelpDialog'; import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; -import { useAudio } from '@/contexts/AudioContext'; +import { + resolveAssetAudio, + useAssetAudio +} from '@/services/assetAudio'; import { useAuth } from '@/contexts/AuthContext'; import { renameAsset } from '@/database_services/assetService'; import { audioSegmentService } from '@/database_services/audioSegmentService'; @@ -84,7 +87,7 @@ const RecordingViewSimplified = ({ const { currentQuestId, currentProjectId } = navigation; const { currentUser } = useAuth(); const { project: currentProject } = useProjectById(currentProjectId); - const audioContext = useAudio(); + const audio = useAssetAudio(); const insets = useSafeAreaInsets(); // Get target languoid_id from project_language_link @@ -161,25 +164,18 @@ const RecordingViewSimplified = ({ const [currentlyPlayingAssetId, setCurrentlyPlayingAssetId] = React.useState< string | null >(null); - const assetUriMapRef = React.useRef>(new Map()); // URI -> assetId - const segmentDurationsRef = React.useRef([]); // Duration of each URI segment in ms - // Track segment ranges for each asset (start position, end position, duration) - const assetSegmentRangesRef = React.useRef< - Map - >(new Map()); // Track last scrolled asset to avoid scrolling to the same asset multiple times const lastScrolledAssetIdRef = React.useRef(null); // New PlayAll state (starts from insertionIndex) const [isPlayAllRunning, setIsPlayAllRunning] = React.useState(false); const isPlayAllRunningRef = React.useRef(false); - const currentPlayAllSoundRef = React.useRef(null); - // Ref to hold latest audioContext for cleanup (avoids stale closure) - const audioContextCurrentRef = React.useRef(audioContext); + // Ref to hold latest audio for cleanup (avoids stale closure) + const audioRef = React.useRef(audio); React.useEffect(() => { - audioContextCurrentRef.current = audioContext; - }, [audioContext]); + audioRef.current = audio; + }, [audio]); // Track setTimeout IDs for cleanup const timeoutIdsRef = React.useRef>>( @@ -398,319 +394,25 @@ const RecordingViewSimplified = ({ // AUDIO PLAYBACK // ============================================================================ - // Fetch audio URIs for an asset - // Includes fallback logic for local-only files when server records are removed - const getAssetAudioUris = React.useCallback( - async (assetId: string): Promise => { - try { - // Get content links from both synced and local tables - const assetContentLinkSynced = resolveTable('asset_content_link', { - localOverride: false - }); - const contentLinksSynced = await system.db - .select() - .from(assetContentLinkSynced) - .where(eq(assetContentLinkSynced.asset_id, assetId)); - - const assetContentLinkLocal = resolveTable('asset_content_link', { - localOverride: true - }); - const contentLinksLocal = await system.db - .select() - .from(assetContentLinkLocal) - .where(eq(assetContentLinkLocal.asset_id, assetId)); - - // Prefer synced links, but merge with local for fallback - const allContentLinks = [...contentLinksSynced, ...contentLinksLocal]; - - // Deduplicate by ID (prefer synced over local) - const seenIds = new Set(); - const uniqueLinks = allContentLinks.filter((link) => { - if (seenIds.has(link.id)) { - return false; - } - seenIds.add(link.id); - return true; - }); - - debugLog( - `๐Ÿ“€ Found ${uniqueLinks.length} content link(s) for asset ${assetId.slice(0, 8)} (${contentLinksSynced.length} synced, ${contentLinksLocal.length} local)` - ); - - if (uniqueLinks.length === 0) { - debugLog('No content links found for asset:', assetId); - return []; - } - - // Get audio values from content links (can be URIs or attachment IDs) - const audioValues = uniqueLinks - .flatMap((link) => { - const audioArray = link.audio ?? []; - debugLog( - ` ๐Ÿ“Ž Content link has ${audioArray.length} audio file(s):`, - audioArray - ); - return audioArray; - }) - .filter((value): value is string => !!value); - - debugLog(`๐Ÿ“Š Total audio files for asset: ${audioValues.length}`); - - if (audioValues.length === 0) { - debugLog('No audio values found in content links'); - return []; - } - - // Process each audio value - can be either a local URI or an attachment ID - const uris: string[] = []; - for (const audioValue of audioValues) { - // Check if this is already a local URI (starts with 'local/' or 'file://') - if (audioValue.startsWith('local/')) { - // It's a direct local URI from saveAudioLocally() - const constructedUri = - await getLocalAttachmentUriWithOPFS(audioValue); - // Check if file exists at constructed path - if (await fileExists(constructedUri)) { - uris.push(constructedUri); - debugLog( - 'โœ… Using direct local URI:', - constructedUri.slice(0, 80) - ); - } else { - // File doesn't exist at expected path - try to find it in attachment queue - debugLog( - `โš ๏ธ Local URI ${audioValue} not found at ${constructedUri}, searching attachment queue...` - ); - - if (system.permAttachmentQueue) { - // Extract filename from local path (e.g., "local/uuid.wav" -> "uuid.wav") - const filename = audioValue.replace(/^local\//, ''); - // Extract UUID part (without extension) for more flexible matching - const uuidPart = filename.split('.')[0]; - - // Search attachment queue by filename or UUID - let attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR filename LIKE ? OR id = ? OR id LIKE ? LIMIT 1`, - [filename, `%${uuidPart}%`, filename, `%${uuidPart}%`] - ); - - // If not found, try searching all attachments for this asset's content links - if (!attachment && uniqueLinks.length > 0) { - const allAttachmentIds = uniqueLinks - .flatMap((link) => link.audio ?? []) - .filter( - (av): av is string => - typeof av === 'string' && - !av.startsWith('local/') && - !av.startsWith('file://') - ); - if (allAttachmentIds.length > 0) { - const placeholders = allAttachmentIds - .map(() => '?') - .join(','); - attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id IN (${placeholders}) LIMIT 1`, - allAttachmentIds - ); - } - } - - if (attachment?.local_uri) { - const foundUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - // Verify the found file actually exists - if (await fileExists(foundUri)) { - uris.push(foundUri); - debugLog( - `โœ… Found attachment in queue for local URI ${audioValue.slice(0, 20)}` - ); - } else { - debugLog( - `โš ๏ธ Attachment found in queue but file doesn't exist: ${foundUri}` - ); - } - } else { - // Try fallback to local table for alternative audio values - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - debugLog(`โœ… Found fallback file URI`); - break; - } - } - } - } - } - } - } - } else if (audioValue.startsWith('file://')) { - // Already a full file URI - verify it exists - if (await fileExists(audioValue)) { - uris.push(audioValue); - debugLog('โœ… Using full file URI:', audioValue.slice(0, 80)); - } else { - debugLog(`โš ๏ธ File URI does not exist: ${audioValue}`); - // Try to find in attachment queue by extracting filename from path - if (system.permAttachmentQueue) { - const filename = audioValue.split('/').pop(); - if (filename) { - const attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR id = ? LIMIT 1`, - [filename, filename] - ); - - if (attachment?.local_uri) { - const foundUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - if (await fileExists(foundUri)) { - uris.push(foundUri); - debugLog(`โœ… Found attachment in queue for file URI`); - } - } - } - } - } - } else { - // It's an attachment ID - look it up in the attachment queue - if (!system.permAttachmentQueue) { - // No attachment queue - try fallback to local table - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('local/')) { - const fallbackUri = - await getLocalAttachmentUriWithOPFS(fallbackAudioValue); - if (await fileExists(fallbackUri)) { - uris.push(fallbackUri); - break; - } - } else if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - break; - } - } - } - } - continue; - } - - const attachment = await system.powersync.getOptional<{ - id: string; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, - [audioValue] - ); - - if (attachment?.local_uri) { - const localUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - if (await fileExists(localUri)) { - uris.push(localUri); - debugLog('โœ… Found attachment URI:', localUri.slice(0, 60)); - } - } else { - // Attachment ID not found in queue - try fallback to local table - debugLog( - `โš ๏ธ Attachment ID ${audioValue.slice(0, 8)} not found in queue, checking local table fallback...` - ); - - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('local/')) { - const fallbackUri = - await getLocalAttachmentUriWithOPFS(fallbackAudioValue); - if (await fileExists(fallbackUri)) { - uris.push(fallbackUri); - debugLog( - `โœ… Found fallback local URI for attachment ${audioValue.slice(0, 8)}` - ); - break; - } - } else if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - debugLog( - `โœ… Found fallback file URI for attachment ${audioValue.slice(0, 8)}` - ); - break; - } - } - } - } else { - debugLog(`โš ๏ธ Audio ${audioValue} not downloaded yet`); - } - } - } - } - - return uris; - } catch (error) { - console.error('Failed to fetch audio URIs:', error); - return []; - } - }, - [] - ); - - // Handle asset playback + // Handle asset playback (single asset or merged) const handlePlayAsset = React.useCallback( async (assetId: string) => { try { const isThisAssetPlaying = - audioContext.isPlaying && audioContext.currentAudioId === assetId; + audio.isPlaying && audio.currentAudioId === assetId; if (isThisAssetPlaying) { debugLog('โธ๏ธ Stopping asset:', assetId.slice(0, 8)); - await audioContext.stopCurrentSound(); + await audio.stop(); } else { debugLog('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); - const uris = await getAssetAudioUris(assetId); - - if (uris.length === 0) { - console.error('โŒ No audio URIs found for asset:', assetId); - return; - } - - if (uris.length === 1 && uris[0]) { - debugLog('โ–ถ๏ธ Playing single segment'); - await audioContext.playSound(uris[0], assetId); - } else if (uris.length > 1) { - debugLog(`โ–ถ๏ธ Playing ${uris.length} segments in sequence`); - await audioContext.playSoundSequence(uris, assetId); - } + await audio.play(assetId); } } catch (error) { console.error('โŒ Failed to play audio:', error); } }, - [audioContext, getAssetAudioUris] + [audio] ); // Handle play all - plays all assets sequentially starting from insertionIndex @@ -720,19 +422,7 @@ const RecordingViewSimplified = ({ if (isPlayAllRunningRef.current) { isPlayAllRunningRef.current = false; setIsPlayAllRunning(false); - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); - currentPlayAllSoundRef.current = null; - } catch (error) { - console.error('Error stopping sound:', error); - } - } - - // Reset progress + await audio.stop(); playAllProgress.value = 0; setCurrentlyPlayingAssetId(null); debugLog('โธ๏ธ Stopped play all'); @@ -761,38 +451,31 @@ const RecordingViewSimplified = ({ isPlayAllRunningRef.current = true; setIsPlayAllRunning(true); - // Build playlist: Array<{assetId, uris}> - const playlist: { assetId: string; uris: string[] }[] = []; - + // Build playlist: assets with resolvable audio + const playlist: { assetId: string }[] = []; for (const asset of assetsToProcess) { - // Check if cancelled // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!isPlayAllRunningRef.current) { debugLog('โธ๏ธ Play all cancelled during playlist build'); return; } - - // Get URIs for this asset - const uris = await getAssetAudioUris(asset.id); - if (uris.length > 0) { - playlist.push({ assetId: asset.id, uris }); + const resolved = await resolveAssetAudio(asset.id); + if (resolved && resolved.segments.length > 0) { + playlist.push({ assetId: asset.id }); } } if (playlist.length === 0) { - console.error('โŒ No audio URIs found for any assets'); + console.error('โŒ No audio found for any assets'); isPlayAllRunningRef.current = false; setIsPlayAllRunning(false); return; } - debugLog( - `โ–ถ๏ธ Playing ${playlist.reduce((sum, p) => sum + p.uris.length, 0)} audio segments from ${playlist.length} assets` - ); + debugLog(`โ–ถ๏ธ Playing ${playlist.length} assets sequentially`); - // Play each asset sequentially + // Play each asset sequentially via AssetAudio for (let i = 0; i < playlist.length; i++) { - // Check if cancelled // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!isPlayAllRunningRef.current) { debugLog('โธ๏ธ Play all cancelled'); @@ -803,84 +486,54 @@ const RecordingViewSimplified = ({ const item = playlist[i]!; const actualAssetIndex = startIndex + i; - // HIGHLIGHT THIS ASSET setCurrentlyPlayingAssetId(item.assetId); - - // Give React a chance to process the state update await Promise.resolve(); // Scroll to this asset in the wheel - // scrollItemToTop adds 1 internally, so subtract 1 to get correct position if (wheelRef.current) { wheelRef.current.scrollItemToTop(actualAssetIndex - 1, true); } debugLog( - `โ–ถ๏ธ [${i + 1}/${playlist.length}] Playing asset at index ${actualAssetIndex} (${item.assetId.slice(0, 8)}, ${item.uris.length} segments)` + `โ–ถ๏ธ [${i + 1}/${playlist.length}] Playing asset at index ${actualAssetIndex} (${item.assetId.slice(0, 8)})` ); - // Reset progress for new asset playAllProgress.value = 0; + await audio.play(item.assetId); - // Play all URIs for this asset sequentially - for (const uri of item.uris) { - // Check if cancelled + // Poll until playback completes or user stops + while (true) { + await new Promise((r) => setTimeout(r, 100)); // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!isPlayAllRunningRef.current) { + await audio.stop(); setCurrentlyPlayingAssetId(null); return; } - - // Play this URI and wait for it to finish - await new Promise((resolve) => { - Audio.Sound.createAsync({ uri }, { shouldPlay: true }) - .then(({ sound }) => { - currentPlayAllSoundRef.current = sound; - - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) return; - - // Update progress for current asset - if (status.durationMillis) { - playAllProgress.value = - (status.positionMillis / status.durationMillis) * 100; - } - - if (status.didJustFinish) { - // Mark as complete - playAllProgress.value = 100; - currentPlayAllSoundRef.current = null; - void sound.unloadAsync().then(() => { - resolve(); - }); - } - }); - }) - .catch((error) => { - console.error('Failed to play audio:', error); - currentPlayAllSoundRef.current = null; - resolve(); - }); - }); + const pos = audio.positionShared.value; + const dur = audio.durationShared.value; + if (dur > 0) { + playAllProgress.value = (pos / dur) * 100; + } + if (audio.currentAudioId !== item.assetId || !audio.isPlaying) { + break; + } } } - // Finished playing all - reset progress debugLog('โœ… Finished playing all assets'); playAllProgress.value = 0; setCurrentlyPlayingAssetId(null); isPlayAllRunningRef.current = false; setIsPlayAllRunning(false); - currentPlayAllSoundRef.current = null; } catch (error) { console.error('โŒ Error playing all assets:', error); playAllProgress.value = 0; setCurrentlyPlayingAssetId(null); isPlayAllRunningRef.current = false; setIsPlayAllRunning(false); - currentPlayAllSoundRef.current = null; } - }, [assets, getAssetAudioUris, insertionIndex, playAllProgress]); + }, [assets, audio, insertionIndex, playAllProgress]); // ============================================================================ // RECORDING HANDLERS @@ -1756,42 +1409,23 @@ const RecordingViewSimplified = ({ // This prevents memory leaks when navigating away from the recording view React.useEffect(() => { // Capture refs in variables to avoid stale closure warnings - const assetUriMap = assetUriMapRef.current; - const segmentDurations = segmentDurationsRef.current; - const assetSegmentRanges = assetSegmentRangesRef.current; const pendingAssetNames = pendingAssetNamesRef.current; const loadedAssetIds = loadedAssetIdsRef.current; const timeoutIds = timeoutIdsRef.current; return () => { // Stop audio playback if playing (access via ref for latest state) - if (audioContextCurrentRef.current.isPlaying) { - void audioContextCurrentRef.current.stopCurrentSound(); + if (audioRef.current.isPlaying) { + void audioRef.current.stop(); } // Stop PlayAll if running if (isPlayAllRunningRef.current) { isPlayAllRunningRef.current = false; - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - void currentPlayAllSoundRef.current - .stopAsync() - .then(() => { - void currentPlayAllSoundRef.current?.unloadAsync(); - currentPlayAllSoundRef.current = null; - }) - .catch(() => { - // Ignore errors during cleanup - currentPlayAllSoundRef.current = null; - }); - } + void audioRef.current.stop(); } - // Clear all refs to free memory - assetUriMap.clear(); - segmentDurations.length = 0; - assetSegmentRanges.clear(); + // Clear refs to free memory lastScrolledAssetIdRef.current = null; pendingAssetNames.clear(); loadedAssetIds.clear(); @@ -1846,7 +1480,7 @@ const RecordingViewSimplified = ({ ({ item, index }: { item: UIAsset; index: number }) => { // Check if this asset is playing individually OR if it's the currently playing asset during play-all const isThisAssetPlayingIndividually = - audioContext.isPlaying && audioContext.currentAudioId === item.id; + audio.isPlaying && audio.currentAudioId === item.id; const isThisAssetPlayingInPlayAll = isPlayAllRunning && currentlyPlayingAssetId === item.id; const isThisAssetPlaying = @@ -1894,8 +1528,8 @@ const RecordingViewSimplified = ({ ); }, [ - audioContext.isPlaying, - audioContext.currentAudioId, + audio.isPlaying, + audio.currentAudioId, isPlayAllRunning, currentlyPlayingAssetId, playAllProgress, @@ -1920,7 +1554,7 @@ const RecordingViewSimplified = ({ return assetsForLegendList.map((item, index) => { // Check if this asset is playing individually OR if it's the currently playing asset during play-all const isThisAssetPlayingIndividually = - audioContext.isPlaying && audioContext.currentAudioId === item.id; + audio.isPlaying && audio.currentAudioId === item.id; const isThisAssetPlayingInPlayAll = isPlayAllRunning && currentlyPlayingAssetId === item.id; const isThisAssetPlaying = @@ -1971,8 +1605,8 @@ const RecordingViewSimplified = ({ }); }, [ assetsForLegendList, - audioContext.isPlaying, - audioContext.currentAudioId, + audio.isPlaying, + audio.currentAudioId, isPlayAllRunning, currentlyPlayingAssetId, playAllProgress, From 9b41f1648a570d3fb27cdfd67c756f57bbce139c Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Wed, 11 Feb 2026 23:53:26 -0800 Subject: [PATCH 045/143] convert RecordingView to use AssetAudio - because I was an idiot the first time and was still working on RecordingViewSimplified --- contexts/AudioContext.tsx | 179 ++++++++++++++++++++++++------------ services/assetAudio.ts | 2 + views/new/RecordingView.tsx | 23 ++--- 3 files changed, 128 insertions(+), 76 deletions(-) diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index 94bf660f6..17c5b4748 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -1,7 +1,7 @@ import { Audio } from 'expo-av'; import React, { createContext, useContext, useRef, useState } from 'react'; import type { SharedValue } from 'react-native-reanimated'; -import { useFrameCallback, useSharedValue } from 'react-native-reanimated'; +import { Easing, useSharedValue, withTiming } from 'react-native-reanimated'; /** * EXPO-AUDIO MIGRATION NOTES @@ -43,6 +43,7 @@ interface AudioContextType { audioId?: string ) => Promise; stopCurrentSound: () => Promise; + waitForPlaybackEnd: (audioId: string) => Promise; isPlaying: boolean; currentAudioId: string | null; position: number; // Keep for backward compatibility @@ -56,6 +57,11 @@ interface AudioContextType { const AudioContext = createContext(undefined); export function AudioProvider({ children }: { children: React.ReactNode }) { + const POSITION_POLL_INTERVAL_MS = 16; + // How often to push React state (triggers re-renders). Keep low to reduce + // JS-thread pressure โ€” progress bars use SharedValues, not React state. + const REACT_STATE_THROTTLE_MS = 100; + const [isPlaying, setIsPlaying] = useState(false); const [currentAudioId, setCurrentAudioId] = useState(null); const [position, setPositionState] = useState(0); @@ -70,16 +76,62 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const positionUpdateInterval = useRef | null>( null ); + const isStatusPollInFlight = useRef(false); + const lastReactStateUpdateMs = useRef(0); + const currentAudioIdRef = useRef(null); + const isPlayingRef = useRef(false); + const playbackCompletionWaitersRef = useRef void>>>( + new Map() + ); const sequenceSegments = useRef([]); const currentSequenceIndex = useRef(0); const segmentDurations = useRef([]); // Effective (trimmed) duration per segment - const isTrackingPosition = useSharedValue(false); // Store SharedValues in refs to satisfy React Compiler (they're stable references) const positionSharedRef = useRef(positionShared); const durationSharedRef = useRef(durationShared); const cumulativePositionSharedRef = useRef(cumulativePositionShared); - const isTrackingPositionRef = useRef(isTrackingPosition); + + const setCurrentAudioIdState = (audioId: string | null) => { + currentAudioIdRef.current = audioId; + setCurrentAudioId(audioId); + }; + + const setIsPlayingState = (playing: boolean) => { + isPlayingRef.current = playing; + setIsPlaying(playing); + }; + + const resolvePlaybackWaiters = (audioId: string | null) => { + if (!audioId) return; + const waiters = playbackCompletionWaitersRef.current.get(audioId); + if (!waiters || waiters.size === 0) return; + playbackCompletionWaitersRef.current.delete(audioId); + waiters.forEach((resolve) => { + try { + resolve(); + } catch { + // Ignore waiter errors + } + }); + }; + + const waitForPlaybackEnd = async (audioId: string) => { + if (!audioId) return; + if (currentAudioIdRef.current !== audioId || !isPlayingRef.current) { + return; + } + + await new Promise((resolve) => { + const map = playbackCompletionWaitersRef.current; + const existing = map.get(audioId); + if (existing) { + existing.add(resolve); + } else { + map.set(audioId, new Set([resolve])); + } + }); + }; // Clear the position update interval const clearPositionInterval = () => { @@ -94,62 +146,70 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // playback position reaches it, stops the current sound and advances. const startPositionTracking = () => { clearPositionInterval(); - isTrackingPositionRef.current.value = true; positionUpdateInterval.current = setInterval(() => { if (soundRef.current) { - void soundRef.current.getStatusAsync().then((status) => { - if (status.isLoaded) { - // Check endMs boundary for the current segment - const currentSeg = - sequenceSegments.current[currentSequenceIndex.current]; - if ( - currentSeg?.endMs != null && - status.positionMillis >= currentSeg.endMs - ) { - // Reached the end boundary โ€” stop and advance - clearPositionInterval(); - isTrackingPositionRef.current.value = false; - void soundRef.current?.stopAsync().then(() => { - void soundRef.current?.unloadAsync(); - soundRef.current = null; - void playNextInSequence(); + if (isStatusPollInFlight.current) return; + isStatusPollInFlight.current = true; + void soundRef.current + .getStatusAsync() + .then((status) => { + if (status.isLoaded) { + // Check endMs boundary for the current segment + const currentSeg = + sequenceSegments.current[currentSequenceIndex.current]; + if ( + currentSeg?.endMs != null && + status.positionMillis >= currentSeg.endMs + ) { + // Reached the end boundary โ€” stop and advance + clearPositionInterval(); + void soundRef.current?.stopAsync().then(() => { + void soundRef.current?.unloadAsync(); + soundRef.current = null; + void playNextInSequence(); + }); + return; + } + + // Calculate cumulative position across all segments. + // For the current segment, subtract startMs so position starts + // from 0 relative to the effective region. + let cumulativeDuration = 0; + for (let i = 0; i < currentSequenceIndex.current; i++) { + cumulativeDuration += segmentDurations.current[i] || 0; + } + const segStartMs = currentSeg?.startMs ?? 0; + const positionInSegment = status.positionMillis - segStartMs; + const totalPosition = + cumulativeDuration + Math.max(0, positionInSegment); + cumulativePositionSharedRef.current.value = totalPosition; + // Smoothly interpolate between poll samples for fluid progress bars. + // This runs on the UI thread via Reanimated โ€” zero JS-thread cost. + positionSharedRef.current.value = withTiming(totalPosition, { + duration: POSITION_POLL_INTERVAL_MS + 8, + easing: Easing.linear }); - return; + // Throttle React state updates to reduce JS-thread re-render + // pressure. Progress bars use SharedValues; React state is only + // for backward-compat consumers (e.g. AudioPlayer slider). + const now = Date.now(); + if (now - lastReactStateUpdateMs.current >= REACT_STATE_THROTTLE_MS) { + lastReactStateUpdateMs.current = now; + setPositionState(totalPosition); + } } - - // Calculate cumulative position across all segments. - // For the current segment, subtract startMs so position starts - // from 0 relative to the effective region. - let cumulativeDuration = 0; - for (let i = 0; i < currentSequenceIndex.current; i++) { - cumulativeDuration += segmentDurations.current[i] || 0; - } - const segStartMs = currentSeg?.startMs ?? 0; - const positionInSegment = status.positionMillis - segStartMs; - const totalPosition = - cumulativeDuration + Math.max(0, positionInSegment); - cumulativePositionSharedRef.current.value = totalPosition; - setPositionState(totalPosition); - } - }); + }) + .finally(() => { + isStatusPollInFlight.current = false; + }); } - }, 100); + }, POSITION_POLL_INTERVAL_MS); }; - // Frame callback for high-performance SharedValue updates - // This runs on the UI thread at 60fps for buttery smooth progress bars - useFrameCallback(() => { - 'worklet'; - if (!isTrackingPosition.value) { - return; - } - positionShared.value = cumulativePositionShared.value; - }); - const stopCurrentSound = async () => { + const finishingAudioId = currentAudioIdRef.current; clearPositionInterval(); - isTrackingPositionRef.current.value = false; // Reset sequence state sequenceSegments.current = []; @@ -163,13 +223,14 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { soundRef.current = null; } - setIsPlaying(false); - setCurrentAudioId(null); + setIsPlayingState(false); + setCurrentAudioIdState(null); setPositionState(0); setDuration(0); positionSharedRef.current.value = 0; durationSharedRef.current.value = 0; + resolvePlaybackWaiters(finishingAudioId); }; const setPosition = async (newPosition: number) => { @@ -199,9 +260,9 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { cumulativePositionSharedRef.current.value = 0; positionSharedRef.current.value = 0; durationSharedRef.current.value = 0; - isTrackingPositionRef.current.value = false; - setIsPlaying(false); - setCurrentAudioId(null); + setIsPlayingState(false); + resolvePlaybackWaiters(currentAudioIdRef.current); + setCurrentAudioIdState(null); setPositionState(0); setDuration(0); clearPositionInterval(); @@ -242,10 +303,10 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { ); soundRef.current = sound; - setIsPlaying(true); + setIsPlayingState(true); if (audioId) { - setCurrentAudioId(audioId); + setCurrentAudioIdState(audioId); } // Seek to startMs before starting playback @@ -291,7 +352,6 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { if (status.didJustFinish) { clearPositionInterval(); - isTrackingPositionRef.current.value = false; void sound.unloadAsync(); soundRef.current = null; // playNextInSequence advances to the next segment, or resets @@ -300,8 +360,8 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } }); } catch { - setIsPlaying(false); - setCurrentAudioId(null); + setIsPlayingState(false); + setCurrentAudioIdState(null); } }; @@ -387,6 +447,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { playSound, playSoundSequence, stopCurrentSound, + waitForPlaybackEnd, isPlaying, currentAudioId, position, diff --git a/services/assetAudio.ts b/services/assetAudio.ts index f233c2264..81feba6cf 100644 --- a/services/assetAudio.ts +++ b/services/assetAudio.ts @@ -561,6 +561,8 @@ export function useAssetAudio() { play, /** Stop current playback. */ stop: ctx.stopCurrentSound, + /** Resolve when playback for this asset ID ends (natural end or stop). */ + waitForPlaybackEnd: ctx.waitForPlaybackEnd, /** Resolve an asset's audio into an AssetAudio object. */ resolve: resolveAssetAudio, /** Build a combined waveform for an asset. */ diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index ebb2678e4..34d3e9aa5 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -21,6 +21,7 @@ import { } from '@/hooks/useAppNavigation'; import { useLocalization } from '@/hooks/useLocalization'; import { useLocalStore } from '@/store/localStore'; +import { useAssetAudio } from '@/services/assetAudio'; import { resolveTable } from '@/utils/dbUtils'; import { fileExists, @@ -143,6 +144,7 @@ const RecordingView = () => { const { currentUser } = useAuth(); const { project: currentProject } = useProjectById(currentProjectId); const audioContext = useAudio(); + const assetAudio = useAssetAudio(); const insets = useSafeAreaInsets(); // Get target languoid_id from project_language_link @@ -1141,33 +1143,20 @@ const RecordingView = () => { async (assetId: string) => { try { const isThisAssetPlaying = - audioContext.isPlaying && audioContext.currentAudioId === assetId; + assetAudio.isPlaying && assetAudio.currentAudioId === assetId; if (isThisAssetPlaying) { debugLog('โธ๏ธ Stopping asset:', assetId.slice(0, 8)); - await audioContext.stopCurrentSound(); + await assetAudio.stop(); } else { debugLog('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); - const uris = await getAssetAudioUris(assetId); - - if (uris.length === 0) { - console.error('โŒ No audio URIs found for asset:', assetId); - return; - } - - if (uris.length === 1 && uris[0]) { - debugLog('โ–ถ๏ธ Playing single segment'); - await audioContext.playSound(uris[0], assetId); - } else if (uris.length > 1) { - debugLog(`โ–ถ๏ธ Playing ${uris.length} segments in sequence`); - await audioContext.playSoundSequence(uris, assetId); - } + await assetAudio.play(assetId); } } catch (error) { console.error('โŒ Failed to play audio:', error); } }, - [audioContext, getAssetAudioUris] + [assetAudio] ); // Handle play all assets - optimized version with direct control From db7a7e873262c6252bbd953abc7ada585aabbf2c Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Thu, 12 Feb 2026 00:20:04 -0800 Subject: [PATCH 046/143] revamped play all - greatly simplified code - fixed bug where trying to stop play all via pause button on playing asset actually played that asset simultaneously while continuing to play all - improved performance of audio progress bar --- views/new/RecordingView.tsx | 535 +++++++----------------------------- 1 file changed, 97 insertions(+), 438 deletions(-) diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index 34d3e9aa5..4dd87c25f 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -22,9 +22,9 @@ import { import { useLocalization } from '@/hooks/useLocalization'; import { useLocalStore } from '@/store/localStore'; import { useAssetAudio } from '@/services/assetAudio'; +import type { AssetAudio } from '@/services/assetAudio'; import { resolveTable } from '@/utils/dbUtils'; import { - fileExists, getLocalAttachmentUriWithOPFS, saveAudioLocally } from '@/utils/fileUtils'; @@ -97,6 +97,21 @@ const isPill = (item: ListItem): item is VersePillItem => item.type === 'pill'; // Sequence starts at 1, not 0 (e.g., verse 7 โ†’ 7001000, 7002000...) // The extra *1000 leaves space for future insertions between assets const DEFAULT_ORDER_INDEX = 999001000; +const TEST_ASSET_ID = '__test_silence_asset__'; +const TEST_SILENCE_URL = + 'https://raw.githubusercontent.com/anars/blank-audio/master/5-seconds-of-silence.mp3'; +const TEST_ASSET_AUDIO: AssetAudio = { + assetId: TEST_ASSET_ID, + totalDurationMs: 3000, + segments: [ + { + uri: TEST_SILENCE_URL, + durationMs: 5000, + trim: { startMs: 0, endMs: 3000 }, + contentLinkId: '__test_silence_content_link__' + } + ] +}; // Verse metadata type interface VerseRange { @@ -291,9 +306,6 @@ const RecordingView = () => { const [isPlayAllRunning, setIsPlayAllRunning] = React.useState(false); // Ref to track if handlePlayAll is running (for cancellation) const isPlayAllRunningRef = React.useRef(false); - // Ref to track current playing sound for immediate cancellation - const currentPlayAllSoundRef = React.useRef(null); - // Track setTimeout IDs for cleanup const timeoutIdsRef = React.useRef>>( new Set() @@ -370,8 +382,20 @@ const RecordingView = () => { // When user exits and returns, the list starts with just the initial verse pill // Assets are still saved to database, but we don't load existing ones const [sessionItems, setSessionItems] = React.useState(() => { - // Initialize with the initial verse pill - if (!_verse) return []; + const testAsset: UIAsset = { + type: 'asset', + id: TEST_ASSET_ID, + name: 'TEST: 3s silence', + created_at: new Date().toISOString(), + order_index: _initialOrderIndex - 1, + source: 'cloud', + segmentCount: 1, + duration: 3000, + verse: null + }; + // Always include test asset, even when there is no initial verse context. + if (!_verse) return [testAsset]; + const initialVerse = _verse; const initialPill: VersePillItem = { type: 'pill', @@ -382,7 +406,7 @@ const RecordingView = () => { console.log( `๐Ÿท๏ธ Initial pill created | order_index: ${_initialOrderIndex} | verse: ${initialVerse.from}-${initialVerse.to}` ); - return [initialPill]; + return [testAsset, initialPill]; }); // Track the "append" order_index (used when recording at the end of the list) @@ -857,291 +881,79 @@ const RecordingView = () => { // AUDIO PLAYBACK // ============================================================================ - // Fetch audio URIs for an asset - // Includes fallback logic for local-only files when server records are removed - const getAssetAudioUris = React.useCallback( - async (assetId: string): Promise => { - try { - // Get content links from both synced and local tables - const assetContentLinkSynced = resolveTable('asset_content_link', { - localOverride: false - }); - const contentLinksSynced = await system.db - .select() - .from(assetContentLinkSynced) - .where(eq(assetContentLinkSynced.asset_id, assetId)); + const stopPlayAll = React.useCallback(async () => { + isPlayAllRunningRef.current = false; + setIsPlayAllRunning(false); + setCurrentlyPlayingAssetId(null); + await assetAudio.stop(); + }, [assetAudio]); - const assetContentLinkLocal = resolveTable('asset_content_link', { - localOverride: true - }); - const contentLinksLocal = await system.db - .select() - .from(assetContentLinkLocal) - .where(eq(assetContentLinkLocal.asset_id, assetId)); + const activateAssetForPlayAll = React.useCallback( + async (assetId: string, wheelIndex: number) => { + setCurrentlyPlayingAssetId(assetId); + await Promise.resolve(); - // Prefer synced links, but merge with local for fallback - const allContentLinks = [...contentLinksSynced, ...contentLinksLocal]; - - // Deduplicate by ID (prefer synced over local) - const seenIds = new Set(); - const uniqueLinks = allContentLinks.filter((link) => { - if (seenIds.has(link.id)) { - return false; - } - seenIds.add(link.id); - return true; - }); - - debugLog( - `๐Ÿ“€ Found ${uniqueLinks.length} content link(s) for asset ${assetId.slice(0, 8)} (${contentLinksSynced.length} synced, ${contentLinksLocal.length} local)` - ); - - if (uniqueLinks.length === 0) { - debugLog('No content links found for asset:', assetId); - return []; - } - - // Get audio values from content links (can be URIs or attachment IDs) - const audioValues = uniqueLinks - .flatMap((link) => { - const audioArray = link.audio ?? []; - debugLog( - ` ๐Ÿ“Ž Content link has ${audioArray.length} audio file(s):`, - audioArray - ); - return audioArray; - }) - .filter((value): value is string => !!value); - - debugLog(`๐Ÿ“Š Total audio files for asset: ${audioValues.length}`); + if (listRef.current) { + listRef.current.scrollToIndex(wheelIndex - 1, true); + } + }, + [] + ); - if (audioValues.length === 0) { - debugLog('No audio values found in content links'); - return []; - } + const runPlayAll = React.useCallback( + async (startIndex: number) => { + const isPlayAllActive = () => isPlayAllRunningRef.current; + if (startIndex >= sessionItems.length) { + console.warn('โš ๏ธ No items to play from current position'); + return; + } - // Process each audio value - can be either a local URI or an attachment ID - const uris: string[] = []; - for (const audioValue of audioValues) { - // Check if this is already a local URI (starts with 'local/' or 'file://') - if (audioValue.startsWith('local/')) { - // It's a direct local URI from saveAudioLocally() - const constructedUri = - await getLocalAttachmentUriWithOPFS(audioValue); - // Check if file exists at constructed path - if (await fileExists(constructedUri)) { - uris.push(constructedUri); - debugLog( - 'โœ… Using direct local URI:', - constructedUri.slice(0, 80) - ); - } else { - // File doesn't exist at expected path - try to find it in attachment queue - debugLog( - `โš ๏ธ Local URI ${audioValue} not found at ${constructedUri}, searching attachment queue...` - ); + isPlayAllRunningRef.current = true; + setIsPlayAllRunning(true); - if (system.permAttachmentQueue) { - // Extract filename from local path (e.g., "local/uuid.wav" -> "uuid.wav") - const filename = audioValue.replace(/^local\//, ''); - // Extract UUID part (without extension) for more flexible matching - const uuidPart = filename.split('.')[0]; - - // Search attachment queue by filename or UUID - let attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR filename LIKE ? OR id = ? OR id LIKE ? LIMIT 1`, - [filename, `%${uuidPart}%`, filename, `%${uuidPart}%`] - ); + try { + let wheelIndex = startIndex; + while (wheelIndex < sessionItems.length) { + if (!isPlayAllActive()) break; - // If not found, try searching all attachments for this asset's content links - if (!attachment && uniqueLinks.length > 0) { - const allAttachmentIds = uniqueLinks - .flatMap((link) => link.audio ?? []) - .filter( - (av): av is string => - typeof av === 'string' && - !av.startsWith('local/') && - !av.startsWith('file://') - ); - if (allAttachmentIds.length > 0) { - const placeholders = allAttachmentIds - .map(() => '?') - .join(','); - attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id IN (${placeholders}) LIMIT 1`, - allAttachmentIds - ); - } - } + const item = sessionItems[wheelIndex]; + if (!item || isPill(item)) { + wheelIndex += 1; + continue; + } - if (attachment?.local_uri) { - const foundUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - // Verify the found file actually exists - if (await fileExists(foundUri)) { - uris.push(foundUri); - debugLog( - `โœ… Found attachment in queue for local URI ${audioValue.slice(0, 20)}` - ); - } else { - debugLog( - `โš ๏ธ Attachment found in queue but file doesn't exist: ${foundUri}` - ); - } - } else { - // Try fallback to local table for alternative audio values - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - debugLog(`โœ… Found fallback file URI`); - break; - } - } - } - } - } - } - } - } else if (audioValue.startsWith('file://')) { - // Already a full file URI - verify it exists - if (await fileExists(audioValue)) { - uris.push(audioValue); - debugLog('โœ… Using full file URI:', audioValue.slice(0, 80)); - } else { - debugLog(`โš ๏ธ File URI does not exist: ${audioValue}`); - // Try to find in attachment queue by extracting filename from path - if (system.permAttachmentQueue) { - const filename = audioValue.split('/').pop(); - if (filename) { - const attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR id = ? LIMIT 1`, - [filename, filename] - ); + const assetId = item.id; + await activateAssetForPlayAll(assetId, wheelIndex); + if (!isPlayAllActive()) break; - if (attachment?.local_uri) { - const foundUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - if (await fileExists(foundUri)) { - uris.push(foundUri); - debugLog(`โœ… Found attachment in queue for file URI`); - } - } - } - } - } + if (assetId === TEST_ASSET_ID) { + await assetAudio.play(TEST_ASSET_AUDIO); } else { - // It's an attachment ID - look it up in the attachment queue - if (!system.permAttachmentQueue) { - // No attachment queue - try fallback to local table - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('local/')) { - const fallbackUri = - await getLocalAttachmentUriWithOPFS(fallbackAudioValue); - if (await fileExists(fallbackUri)) { - uris.push(fallbackUri); - break; - } - } else if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - break; - } - } - } - } - continue; - } - - const attachment = await system.powersync.getOptional<{ - id: string; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, - [audioValue] - ); - - if (attachment?.local_uri) { - const localUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - if (await fileExists(localUri)) { - uris.push(localUri); - debugLog('โœ… Found attachment URI:', localUri.slice(0, 60)); - } - } else { - // Attachment ID not found in queue - try fallback to local table - debugLog( - `โš ๏ธ Attachment ID ${audioValue.slice(0, 8)} not found in queue, checking local table fallback...` - ); - - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('local/')) { - const fallbackUri = - await getLocalAttachmentUriWithOPFS(fallbackAudioValue); - if (await fileExists(fallbackUri)) { - uris.push(fallbackUri); - debugLog( - `โœ… Found fallback local URI for attachment ${audioValue.slice(0, 8)}` - ); - break; - } - } else if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - debugLog( - `โœ… Found fallback file URI for attachment ${audioValue.slice(0, 8)}` - ); - break; - } - } - } - } else { - debugLog(`โš ๏ธ Audio ${audioValue} not downloaded yet`); - } - } + await assetAudio.play(assetId); } - } + await assetAudio.waitForPlaybackEnd(assetId); + if (!isPlayAllActive()) break; - return uris; - } catch (error) { - console.error('Failed to fetch audio URIs:', error); - return []; + wheelIndex += 1; + } + } finally { + isPlayAllRunningRef.current = false; + setIsPlayAllRunning(false); + setCurrentlyPlayingAssetId(null); } }, - [] + [sessionItems, activateAssetForPlayAll, assetAudio] ); // Handle asset playback const handlePlayAsset = React.useCallback( async (assetId: string) => { try { + if (isPlayAllRunningRef.current) { + await stopPlayAll(); + return; + } + const isThisAssetPlaying = assetAudio.isPlaying && assetAudio.currentAudioId === assetId; @@ -1150,38 +962,24 @@ const RecordingView = () => { await assetAudio.stop(); } else { debugLog('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); - await assetAudio.play(assetId); + if (assetId === TEST_ASSET_ID) { + await assetAudio.play(TEST_ASSET_AUDIO); + } else { + await assetAudio.play(assetId); + } } } catch (error) { console.error('โŒ Failed to play audio:', error); } }, - [assetAudio] + [assetAudio, stopPlayAll] ); - // Handle play all assets - optimized version with direct control + // Handle play all assets - event-driven via AssetAudio const handlePlayAll = React.useCallback(async () => { try { - // Check if already playing - toggle to stop if (isPlayAllRunningRef.current) { - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); - currentPlayAllSoundRef.current = null; - } catch (error) { - console.error('Error stopping sound:', error); - } - } - - setCurrentlyPlayingAssetId(null); - // Reset SharedValues when stopping - audioContext.positionShared.value = 0; - audioContext.durationShared.value = 0; + await stopPlayAll(); debugLog('โธ๏ธ Stopped play all'); return; } @@ -1191,143 +989,18 @@ const RecordingView = () => { return; } - // Mark as running - isPlayAllRunningRef.current = true; - setIsPlayAllRunning(true); - // If no item is selected (at end of list), start from the beginning // Otherwise, start from the selected item const startIndex = insertionIndex >= sessionItems.length ? 0 : insertionIndex; - debugLog( - `๐ŸŽต Starting play all from position ${startIndex} (insertionIndex: ${insertionIndex})` - ); - - let assetsPlayed = 0; - - // Iterate directly through sessionItems starting from startIndex - for ( - let wheelIndex = startIndex; - wheelIndex < sessionItems.length; - wheelIndex++ - ) { - // Check if cancelled - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!isPlayAllRunningRef.current) { - debugLog('โธ๏ธ Play all cancelled'); - setCurrentlyPlayingAssetId(null); - // Reset SharedValues when cancelled - audioContext.positionShared.value = 0; - audioContext.durationShared.value = 0; - return; - } - - const item = sessionItems[wheelIndex]; - - // Skip if no item or if it's a pill - if (!item || isPill(item)) { - debugLog(`โญ๏ธ Position ${wheelIndex}: skipping pill`); - continue; - } - - // It's an asset - play it - const asset = item; - - // Get URIs for this asset - const uris = await getAssetAudioUris(asset.id); - if (uris.length === 0) { - debugLog( - `โš ๏ธ Position ${wheelIndex}: no URIs for asset ${asset.name}` - ); - continue; - } - - // HIGHLIGHT THIS ASSET - setCurrentlyPlayingAssetId(asset.id); - - // Scroll to this position in the list - if (listRef.current) { - listRef.current.scrollToIndex(wheelIndex - 1, true); - } - - assetsPlayed++; - debugLog( - `โ–ถ๏ธ Position ${wheelIndex}: Playing asset ${asset.name} (${uris.length} segments)` - ); - - // Play all URIs for this asset sequentially - for (const uri of uris) { - // Check if cancelled - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!isPlayAllRunningRef.current) { - setCurrentlyPlayingAssetId(null); - // Reset SharedValues when cancelled - audioContext.positionShared.value = 0; - audioContext.durationShared.value = 0; - return; - } - - // Play this URI and wait for it to finish - await new Promise((resolve) => { - Audio.Sound.createAsync({ uri }, { shouldPlay: true }) - .then(({ sound }) => { - currentPlayAllSoundRef.current = sound; - - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) return; - - // Update SharedValues for progress bar animation (60fps on UI thread) - if (status.isPlaying) { - audioContext.positionShared.value = status.positionMillis; - audioContext.durationShared.value = - status.durationMillis ?? 0; - } - - if (status.didJustFinish) { - // Reset SharedValues when segment finishes - audioContext.positionShared.value = 0; - audioContext.durationShared.value = 0; - currentPlayAllSoundRef.current = null; - void sound.unloadAsync().then(() => { - resolve(); - }); - } - }); - }) - .catch((error) => { - console.error('Failed to play audio:', error); - currentPlayAllSoundRef.current = null; - resolve(); - }); - }); - } - } - - if (assetsPlayed === 0) { - console.warn('โš ๏ธ No assets found to play from current position'); - } - - // Done playing all + await runPlayAll(startIndex); debugLog('โœ… Finished playing all assets'); - setCurrentlyPlayingAssetId(null); - // Reset SharedValues when finished - audioContext.positionShared.value = 0; - audioContext.durationShared.value = 0; - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - currentPlayAllSoundRef.current = null; } catch (error) { console.error('โŒ Failed to play all assets:', error); - setCurrentlyPlayingAssetId(null); - // Reset SharedValues on error - audioContext.positionShared.value = 0; - audioContext.durationShared.value = 0; - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - currentPlayAllSoundRef.current = null; + await stopPlayAll(); } - }, [audioContext, getAssetAudioUris, insertionIndex, sessionItems]); + }, [insertionIndex, runPlayAll, sessionItems.length, stopPlayAll]); // ============================================================================ // RECORDING HANDLERS @@ -1834,7 +1507,7 @@ const RecordingView = () => { const obj = a as { id?: string } | null; return obj?.id; }) - .filter((id): id is string => !!id), + .filter((id): id is string => !!id && id !== TEST_ASSET_ID), [rawAssets] ); @@ -2473,20 +2146,6 @@ const RecordingView = () => { // Stop PlayAll if running if (isPlayAllRunningRef.current) { isPlayAllRunningRef.current = false; - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - void currentPlayAllSoundRef.current - .stopAsync() - .then(() => { - void currentPlayAllSoundRef.current?.unloadAsync(); - currentPlayAllSoundRef.current = null; - }) - .catch(() => { - // Ignore errors during cleanup - currentPlayAllSoundRef.current = null; - }); - } } // Clear all refs to free memory From 8a82c37eefa618a9e32c84a7c8cdc384ec8d580a Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Thu, 12 Feb 2026 11:07:40 -0800 Subject: [PATCH 047/143] enhanced audio progress bar - smooth animation now, but it is "fake"; it assumes play will proceed straight through the clip; it is not doing constant real updates based on the audio position --- contexts/AudioContext.tsx | 245 +++++++++++------- .../recording/components/RecordAssetCard.tsx | 7 +- 2 files changed, 157 insertions(+), 95 deletions(-) diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index 17c5b4748..7134477c9 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -57,7 +57,11 @@ interface AudioContextType { const AudioContext = createContext(undefined); export function AudioProvider({ children }: { children: React.ReactNode }) { - const POSITION_POLL_INTERVAL_MS = 16; + // Hybrid progress model: + // - sparse native status callbacks for truth/corrections + // - continuous UI-thread timing for smooth movement + const STATUS_UPDATE_INTERVAL_MS = 5000; + const DRIFT_CORRECTION_THRESHOLD_MS = 80; // How often to push React state (triggers re-renders). Keep low to reduce // JS-thread pressure โ€” progress bars use SharedValues, not React state. const REACT_STATE_THROTTLE_MS = 100; @@ -73,13 +77,20 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const cumulativePositionShared = useSharedValue(0); const soundRef = useRef(null); - const positionUpdateInterval = useRef | null>( - null - ); - const isStatusPollInFlight = useRef(false); const lastReactStateUpdateMs = useRef(0); const currentAudioIdRef = useRef(null); const isPlayingRef = useRef(false); + const isAdvancingSegmentRef = useRef(false); + const animationStartWallClockMsRef = useRef(null); + const animationStartPositionMsRef = useRef(0); + const animationTargetPositionMsRef = useRef(0); + // Wall-clock guard: ignore all status-callback position updates until this + // timestamp. expo-av fires an unpredictable number of eager callbacks when + // a sound loads/plays/seeks โ€” not on the interval timer. Those early + // callbacks carry real positions that, if applied, would hard-set + // positionShared and interrupt the deterministic withTiming animation, + // causing visible jumps at the very start of playback. + const statusGuardUntilMsRef = useRef(0); const playbackCompletionWaitersRef = useRef void>>>( new Map() ); @@ -133,83 +144,63 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { }); }; - // Clear the position update interval - const clearPositionInterval = () => { - if (positionUpdateInterval.current) { - clearInterval(positionUpdateInterval.current); - positionUpdateInterval.current = null; + const clearStatusListener = () => { + if (soundRef.current) { + soundRef.current.setOnPlaybackStatusUpdate(null); } }; - // Start updating position at regular intervals when playing. - // Also enforces endMs: if the current segment has an endMs and the - // playback position reaches it, stops the current sound and advances. - const startPositionTracking = () => { - clearPositionInterval(); + const resetPredictedProgress = () => { + animationStartWallClockMsRef.current = null; + animationStartPositionMsRef.current = 0; + animationTargetPositionMsRef.current = 0; + statusGuardUntilMsRef.current = 0; + }; - positionUpdateInterval.current = setInterval(() => { - if (soundRef.current) { - if (isStatusPollInFlight.current) return; - isStatusPollInFlight.current = true; - void soundRef.current - .getStatusAsync() - .then((status) => { - if (status.isLoaded) { - // Check endMs boundary for the current segment - const currentSeg = - sequenceSegments.current[currentSequenceIndex.current]; - if ( - currentSeg?.endMs != null && - status.positionMillis >= currentSeg.endMs - ) { - // Reached the end boundary โ€” stop and advance - clearPositionInterval(); - void soundRef.current?.stopAsync().then(() => { - void soundRef.current?.unloadAsync(); - soundRef.current = null; - void playNextInSequence(); - }); - return; - } - - // Calculate cumulative position across all segments. - // For the current segment, subtract startMs so position starts - // from 0 relative to the effective region. - let cumulativeDuration = 0; - for (let i = 0; i < currentSequenceIndex.current; i++) { - cumulativeDuration += segmentDurations.current[i] || 0; - } - const segStartMs = currentSeg?.startMs ?? 0; - const positionInSegment = status.positionMillis - segStartMs; - const totalPosition = - cumulativeDuration + Math.max(0, positionInSegment); - cumulativePositionSharedRef.current.value = totalPosition; - // Smoothly interpolate between poll samples for fluid progress bars. - // This runs on the UI thread via Reanimated โ€” zero JS-thread cost. - positionSharedRef.current.value = withTiming(totalPosition, { - duration: POSITION_POLL_INTERVAL_MS + 8, - easing: Easing.linear - }); - // Throttle React state updates to reduce JS-thread re-render - // pressure. Progress bars use SharedValues; React state is only - // for backward-compat consumers (e.g. AudioPlayer slider). - const now = Date.now(); - if (now - lastReactStateUpdateMs.current >= REACT_STATE_THROTTLE_MS) { - lastReactStateUpdateMs.current = now; - setPositionState(totalPosition); - } - } - }) - .finally(() => { - isStatusPollInFlight.current = false; - }); - } - }, POSITION_POLL_INTERVAL_MS); + const cumulativeDurationBeforeCurrent = () => { + let cumulativeDuration = 0; + for (let i = 0; i < currentSequenceIndex.current; i++) { + cumulativeDuration += segmentDurations.current[i] || 0; + } + return cumulativeDuration; + }; + + const startPredictedProgressAnimation = ( + fromTotalPosition: number, + targetTotalPosition: number + ) => { + const from = Math.max(0, fromTotalPosition); + const target = Math.max(from, targetTotalPosition); + const remaining = target - from; + + animationStartWallClockMsRef.current = Date.now(); + animationStartPositionMsRef.current = from; + animationTargetPositionMsRef.current = target; + + cumulativePositionSharedRef.current.value = from; + positionSharedRef.current.value = from; + + if (remaining <= 0) return; + + positionSharedRef.current.value = withTiming(target, { + duration: remaining, + easing: Easing.linear + }); + }; + + const predictedPositionNow = () => { + const startedAt = animationStartWallClockMsRef.current; + if (!startedAt) return null; + const elapsed = Date.now() - startedAt; + const predicted = animationStartPositionMsRef.current + elapsed; + return Math.min(animationTargetPositionMsRef.current, predicted); }; const stopCurrentSound = async () => { const finishingAudioId = currentAudioIdRef.current; - clearPositionInterval(); + clearStatusListener(); + isAdvancingSegmentRef.current = false; + resetPredictedProgress(); // Reset sequence state sequenceSegments.current = []; @@ -239,21 +230,21 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { setPositionState(newPosition); cumulativePositionSharedRef.current.value = newPosition; positionSharedRef.current.value = newPosition; + resetPredictedProgress(); } }; const playNextInSequence = async () => { currentSequenceIndex.current++; - if ( - currentSequenceIndex.current < sequenceSegments.current.length - ) { - const nextSeg = - sequenceSegments.current[currentSequenceIndex.current]; + if (currentSequenceIndex.current < sequenceSegments.current.length) { + const nextSeg = sequenceSegments.current[currentSequenceIndex.current]; if (nextSeg) { await playSegment(nextSeg, currentAudioId || undefined); } } else { // Sequence finished โ€” reset all state + isAdvancingSegmentRef.current = false; + resetPredictedProgress(); sequenceSegments.current = []; currentSequenceIndex.current = 0; segmentDurations.current = []; @@ -265,7 +256,6 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { setCurrentAudioIdState(null); setPositionState(0); setDuration(0); - clearPositionInterval(); } }; @@ -274,17 +264,15 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { * playing) and optional endMs (enforced by startPositionTracking). * Used internally by playSound and playNextInSequence. */ - const playSegment = async ( - segment: AudioSegment, - audioId?: string - ) => { + const playSegment = async (segment: AudioSegment, audioId?: string) => { // Stop current sound if any is playing if (soundRef.current) { - clearPositionInterval(); + clearStatusListener(); await soundRef.current.stopAsync(); await soundRef.current.unloadAsync(); soundRef.current = null; } + isAdvancingSegmentRef.current = false; // Set up audio mode await Audio.setAudioModeAsync({ @@ -293,14 +281,14 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { staysActiveInBackground: true }); - const shouldSeek = - segment.startMs != null && segment.startMs > 0; + const shouldSeek = segment.startMs != null && segment.startMs > 0; try { const { sound } = await Audio.Sound.createAsync( { uri: segment.uri }, { shouldPlay: !shouldSeek } ); + await sound.setProgressUpdateIntervalAsync(STATUS_UPDATE_INTERVAL_MS); soundRef.current = sound; setIsPlayingState(true); @@ -339,19 +327,89 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { ); setDuration(totalDuration); durationSharedRef.current.value = totalDuration; - } - // Start tracking position (also enforces endMs boundary) - startPositionTracking(); + const cumulativeBefore = cumulativeDurationBeforeCurrent(); + const targetTotal = cumulativeBefore + effectiveDuration; + // Start deterministic motion immediately from expected segment start. + // We intentionally ignore real-position reconciliation until the first + // full status interval has elapsed to avoid rough startup hitching. + startPredictedProgressAnimation(cumulativeBefore, targetTotal); + // Guard: block all status-callback position writes for 1 second. + // This lets the deterministic withTiming animation run uninterrupted + // through the startup burst of eager expo-av callbacks. + // animationStartWallClockMsRef was just set by the call above. + statusGuardUntilMsRef.current = + (animationStartWallClockMsRef.current ?? 0) + 1000; + } - // Set up listener for when sound finishes naturally + // Set up listener for position updates + natural completion. sound.setOnPlaybackStatusUpdate((status) => { if (!status.isLoaded) { return; } + const now = Date.now(); + const guarded = now < statusGuardUntilMsRef.current; + console.log( + `[STATUS CB] posMillis=${status.positionMillis} guarded=${guarded} t=${now}` + ); + + const currentSeg = + sequenceSegments.current[currentSequenceIndex.current]; + const cumulativeDuration = cumulativeDurationBeforeCurrent(); + const segStartMs = currentSeg?.startMs ?? 0; + const positionInSegment = status.positionMillis - segStartMs; + const totalPosition = + cumulativeDuration + Math.max(0, positionInSegment); + + // While the guard is active, skip all position writes and drift + // correction. The deterministic withTiming animation is running + // smoothly on the UI thread and must not be interrupted by + // real-position hard-sets from these early callbacks. + if (!guarded) { + cumulativePositionSharedRef.current.value = totalPosition; + if ( + now - lastReactStateUpdateMs.current >= + REACT_STATE_THROTTLE_MS + ) { + lastReactStateUpdateMs.current = now; + setPositionState(totalPosition); + } + + const currentTargetTotal = + cumulativeDuration + + (segmentDurations.current[currentSequenceIndex.current] || 0); + const predicted = predictedPositionNow(); + const drift = + predicted == null + ? Number.POSITIVE_INFINITY + : totalPosition - predicted; + if (Math.abs(drift) >= DRIFT_CORRECTION_THRESHOLD_MS) { + startPredictedProgressAnimation(totalPosition, currentTargetTotal); + } + } + + // Enforce endMs boundary for trimmed playback. + if ( + currentSeg?.endMs != null && + status.positionMillis >= currentSeg.endMs && + !isAdvancingSegmentRef.current + ) { + isAdvancingSegmentRef.current = true; + clearStatusListener(); + void sound.stopAsync().then(() => { + void sound.unloadAsync(); + soundRef.current = null; + void playNextInSequence(); + }); + return; + } + if (status.didJustFinish) { - clearPositionInterval(); + if (isAdvancingSegmentRef.current) return; + isAdvancingSegmentRef.current = true; + resetPredictedProgress(); + clearStatusListener(); void sound.unloadAsync(); soundRef.current = null; // playNextInSequence advances to the next segment, or resets @@ -434,7 +492,8 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // Ensure cleanup when the component unmounts React.useEffect(() => { return () => { - clearPositionInterval(); + resetPredictedProgress(); + clearStatusListener(); if (soundRef.current) { void soundRef.current.unloadAsync(); } diff --git a/views/new/recording/components/RecordAssetCard.tsx b/views/new/recording/components/RecordAssetCard.tsx index 0ecc82a73..3bc1aa138 100644 --- a/views/new/recording/components/RecordAssetCard.tsx +++ b/views/new/recording/components/RecordAssetCard.tsx @@ -201,14 +201,17 @@ function RecordAssetCardInternal({ const progressBarStyle = useAnimatedStyle(() => { 'worklet'; const progress = animatedProgress.value; - const width = interpolate( + const widthPercent = interpolate( progress, [0, 95, 100], [0, 97, 100], Extrapolation.CLAMP ); + const scaleX = widthPercent / 100; return { - width: `${width}%` + width: '100%', + transform: [{ scaleX }], + transformOrigin: 'left center' }; }); From 3333c9fdcc4af12a2c709274a18f3f9e2264db65 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Thu, 12 Feb 2026 11:41:27 -0800 Subject: [PATCH 048/143] removed test asset from recordingview --- views/new/RecordingView.tsx | 46 ++++--------------------------------- 1 file changed, 5 insertions(+), 41 deletions(-) diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index 4dd87c25f..4528a7868 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -22,7 +22,6 @@ import { import { useLocalization } from '@/hooks/useLocalization'; import { useLocalStore } from '@/store/localStore'; import { useAssetAudio } from '@/services/assetAudio'; -import type { AssetAudio } from '@/services/assetAudio'; import { resolveTable } from '@/utils/dbUtils'; import { getLocalAttachmentUriWithOPFS, @@ -97,21 +96,6 @@ const isPill = (item: ListItem): item is VersePillItem => item.type === 'pill'; // Sequence starts at 1, not 0 (e.g., verse 7 โ†’ 7001000, 7002000...) // The extra *1000 leaves space for future insertions between assets const DEFAULT_ORDER_INDEX = 999001000; -const TEST_ASSET_ID = '__test_silence_asset__'; -const TEST_SILENCE_URL = - 'https://raw.githubusercontent.com/anars/blank-audio/master/5-seconds-of-silence.mp3'; -const TEST_ASSET_AUDIO: AssetAudio = { - assetId: TEST_ASSET_ID, - totalDurationMs: 3000, - segments: [ - { - uri: TEST_SILENCE_URL, - durationMs: 5000, - trim: { startMs: 0, endMs: 3000 }, - contentLinkId: '__test_silence_content_link__' - } - ] -}; // Verse metadata type interface VerseRange { @@ -382,19 +366,7 @@ const RecordingView = () => { // When user exits and returns, the list starts with just the initial verse pill // Assets are still saved to database, but we don't load existing ones const [sessionItems, setSessionItems] = React.useState(() => { - const testAsset: UIAsset = { - type: 'asset', - id: TEST_ASSET_ID, - name: 'TEST: 3s silence', - created_at: new Date().toISOString(), - order_index: _initialOrderIndex - 1, - source: 'cloud', - segmentCount: 1, - duration: 3000, - verse: null - }; - // Always include test asset, even when there is no initial verse context. - if (!_verse) return [testAsset]; + if (!_verse) return []; const initialVerse = _verse; const initialPill: VersePillItem = { @@ -406,7 +378,7 @@ const RecordingView = () => { console.log( `๐Ÿท๏ธ Initial pill created | order_index: ${_initialOrderIndex} | verse: ${initialVerse.from}-${initialVerse.to}` ); - return [testAsset, initialPill]; + return [initialPill]; }); // Track the "append" order_index (used when recording at the end of the list) @@ -926,11 +898,7 @@ const RecordingView = () => { await activateAssetForPlayAll(assetId, wheelIndex); if (!isPlayAllActive()) break; - if (assetId === TEST_ASSET_ID) { - await assetAudio.play(TEST_ASSET_AUDIO); - } else { - await assetAudio.play(assetId); - } + await assetAudio.play(assetId); await assetAudio.waitForPlaybackEnd(assetId); if (!isPlayAllActive()) break; @@ -962,11 +930,7 @@ const RecordingView = () => { await assetAudio.stop(); } else { debugLog('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); - if (assetId === TEST_ASSET_ID) { - await assetAudio.play(TEST_ASSET_AUDIO); - } else { - await assetAudio.play(assetId); - } + await assetAudio.play(assetId); } } catch (error) { console.error('โŒ Failed to play audio:', error); @@ -1507,7 +1471,7 @@ const RecordingView = () => { const obj = a as { id?: string } | null; return obj?.id; }) - .filter((id): id is string => !!id && id !== TEST_ASSET_ID), + .filter((id): id is string => !!id), [rawAssets] ); From f6555c510c1847f136719b045f9a90ccef7e69d6 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Thu, 12 Feb 2026 14:16:48 -0600 Subject: [PATCH 049/143] refactor: rename supabase scripts to sb and knip to knip:check Co-authored-by: Cursor --- package.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 605dd690f..5217e1372 100644 --- a/package.json +++ b/package.json @@ -18,9 +18,9 @@ "generate-env": "npx tsx ./scripts/generate-env.ts", "reset-project": "node ./scripts/reset-project.js", "rebuild-android": "git clean -xdf node_modules package-lock.json android ios && npm i && npx expo prebuild --platform android && cd android && gradlew clean && cd ..", - "android": "expo run:android --device", + "android": "expo run:android --variant debugOptimized --device", "android:preview": "npx cross-env EXPO_PUBLIC_APP_VARIANT=preview expo run:android --device --variant release", - "android:release": "npx cross-env EXPO_PUBLIC_APP_VARIANT=production expo run:android --device --variant release", + "android:releasre": "npx cross-env EXPO_PUBLIC_APP_VARIANT=production expo run:android --device --variant release", "ios": "expo run:ios --device", "ios:preview": "npx cross-env EXPO_PUBLIC_APP_VARIANT=preview expo run:ios --device --variant release", "ios:release": "npx cross-env EXPO_PUBLIC_APP_VARIANT=production expo run:ios --device --variant release", @@ -35,21 +35,21 @@ "typecheck": "tsc --noEmit", "powersync:start": "docker compose -f supabase/docker-compose.yml --env-file .env.local up -w", "powersync:stop": "docker compose -f supabase/docker-compose.yml --env-file .env.local down", - "env:start": "npm run supabase start && npm run powersync:start", - "env:stop": "npm run powersync:stop && npm run supabase stop", + "env:start": "npm run sb start && npm run powersync:start", + "env:stop": "npm run powersync:stop && npm run sb stop", "env": "npm run generate-env && npm run env:start && npm run env:stop", - "env:clean": "npm run supabase:clean && npm run powersync:clean", + "env:clean": "npm run sb:clean && npm run powersync:clean", "powersync:copy-assets": "npx powersync-web copy-assets", "powersync:diagnostics": "docker run --pull always -p 8082:80 --platform linux/amd64 journeyapps/powersync-diagnostics-app", "powersync:clean": "npm run powersync:stop && docker volume rm -f powersync_mongo_storage", - "supabase:clean": "git clean -xdf supabase/**/.DS_Store && npm run supabase db reset && npm run supabase stop", - "supabase": "npx supabase@beta", - "supabase:serve-functions": "npm run supabase functions serve -- --no-verify-jwt --debug", - "supabase:functions:deploy:send-email:dev": "npm run supabase functions deploy send-email -- --no-verify-jwt --project-ref yjgdgsycxmlvaiuynlbv", - "supabase:functions:deploy:send-email:prod": "npm run supabase functions deploy send-email -- --no-verify-jwt --project-ref unsxkmlcyxgtgmtzfonb", + "sb:clean": "git clean -xdf supabase/**/.DS_Store && npm run sb db reset && npm run sb stop", + "sb": "npx supabase@beta", + "sb:serve-functions": "npm run sb functions serve -- --no-verify-jwt --debug", + "sb:functions:deploy:send-email:dev": "npm run sb functions deploy send-email -- --no-verify-jwt --project-ref yjgdgsycxmlvaiuynlbv", + "sb:functions:deploy:send-email:prod": "npm run sb functions deploy send-email -- --no-verify-jwt --project-ref unsxkmlcyxgtgmtzfonb", "package-lock:fix": "npm install --package-lock-only", "shadcn": "shadcn", - "knip": "knip", + "knip:check": "knip", "postinstall": "patch-package", "adb:tunnel": "adb reverse tcp:8081 tcp:8081", "android:eas:build:preview": "eas build --platform android --profile preview" From 84e92fadc2a5602a19641c01cac7e16c902de981 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Thu, 12 Feb 2026 14:09:55 -0800 Subject: [PATCH 050/143] Integrated AssetAudio into BibleAssetsView, fixed Play All bugs --- views/new/BibleAssetsView.tsx | 807 +++++----------------------------- 1 file changed, 118 insertions(+), 689 deletions(-) diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index ac77c5c2f..01d117abb 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -11,7 +11,7 @@ import { SpeedDialTrigger } from '@/components/ui/speed-dial'; import { Text } from '@/components/ui/text'; -import { useAudio } from '@/contexts/AudioContext'; +import { useAssetAudio } from '@/services/assetAudio'; import { useAuth } from '@/contexts/AuthContext'; import { LayerType, useStatusContext } from '@/contexts/StatusContext'; import type { asset } from '@/db/drizzleSchema'; @@ -34,7 +34,6 @@ import { useLocalStore } from '@/store/localStore'; import { SHOW_DEV_ELEMENTS } from '@/utils/featureFlags'; import RNAlert from '@blazejkustra/react-native-alert'; import AsyncStorage from '@react-native-async-storage/async-storage'; -import { Audio } from 'expo-av'; import { BookmarkPlusIcon, BrushCleaning, @@ -53,7 +52,13 @@ import { UserPlusIcon } from 'lucide-react-native'; import React from 'react'; -import { ActivityIndicator, Pressable, View } from 'react-native'; +import { + ActivityIndicator, + FlatList, + InteractionManager, + Pressable, + View +} from 'react-native'; import Animated, { cancelAnimation, Easing, @@ -91,13 +96,11 @@ import { renameAsset } from '@/database_services/assetService'; import { audioSegmentService } from '@/database_services/audioSegmentService'; -import { AppConfig } from '@/db/supabase/AppConfig'; import { useAssetsByQuest, useLocalAssetsByQuest } from '@/hooks/db/useAssets'; import { useBlockedAssetsCount } from '@/hooks/useBlockedCount'; import { useQuestOffloadVerification } from '@/hooks/useQuestOffloadVerification'; import { useHasUserReported } from '@/hooks/useReports'; import { resolveTable } from '@/utils/dbUtils'; -import { fileExists, getLocalAttachmentUriWithOPFS } from '@/utils/fileUtils'; import { publishQuest as publishQuestUtils } from '@/utils/publishUtils'; import { offloadQuest } from '@/utils/questOffloadUtils'; import { getThemeColor } from '@/utils/styleUtils'; @@ -450,7 +453,7 @@ export default function BibleAssetsView() { } = useCurrentNavigation(); const { goBack, navigate } = useAppNavigation(); const { currentUser } = useAuth(); - const audioContext = useAudio(); + const assetAudio = useAssetAudio(); const queryClient = useQueryClient(); const insets = useSafeAreaInsets(); @@ -538,17 +541,13 @@ export default function BibleAssetsView() { React.useState(false); const [isOffloading, setIsOffloading] = React.useState(false); const [isRefreshing, setIsRefreshing] = React.useState(false); - // Track which asset is currently playing during play-all - const [currentlyPlayingAssetId, setCurrentlyPlayingAssetId] = React.useState< - string | null - >(null); // Track if PlayAll is running (for button icon state) const [isPlayAllRunning, setIsPlayAllRunning] = React.useState(false); - // OLD handlePlayAllAssets refs - commented out - // const assetUriMapRef = React.useRef>(new Map()); // URI -> assetId - // const assetOrderRef = React.useRef([]); // Ordered list of asset IDs - // const uriOrderRef = React.useRef([]); // Ordered list of URIs matching assetOrderRef - // const segmentDurationsRef = React.useRef([]); // Duration of each URI segment in ms + // Track active asset during PlayAll to avoid highlight gaps between clips. + const [playAllActiveAssetId, setPlayAllActiveAssetId] = React.useState< + string | null + >(null); + const listRef = React.useRef | null>(null); const fixedItemsIndexesRef = React.useRef([0]); // Ref to allow handlePlayAsset to be used in renderItem before it's defined const handlePlayAssetRef = React.useRef< @@ -2373,16 +2372,14 @@ export default function BibleAssetsView() { // Handle asset items const asset = item.content; - const isPlaying = - (audioContext.isPlaying && - (audioContext.currentAudioId === asset.id || - (audioContext.currentAudioId === PLAY_ALL_AUDIO_ID && - currentlyPlayingAssetId === asset.id))) || - currentlyPlayingAssetId === asset.id; + const isPlaying = isPlayAllRunning + ? playAllActiveAssetId === asset.id + : assetAudio.isPlaying && assetAudio.currentAudioId === asset.id; const isSelected = selectedAssetIds.has(asset.id); const isAssetSelectedForRecording = + !isPlayAllRunning && !isPublished && selectedForRecording?.type === 'asset' && selectedForRecording?.assetId === asset.id; @@ -2429,9 +2426,10 @@ export default function BibleAssetsView() { [ isPublished, currentQuestId, - audioContext.isPlaying, - audioContext.currentAudioId, - currentlyPlayingAssetId, + assetAudio.isPlaying, + assetAudio.currentAudioId, + isPlayAllRunning, + playAllActiveAssetId, stableOnPlay, getRangeForAsset, isSelectionMode, @@ -2488,368 +2486,62 @@ export default function BibleAssetsView() { currentQuestId ); - // Special audio ID for "play all" mode - const PLAY_ALL_AUDIO_ID = 'play-all-assets'; - - // Fetch audio URIs for an asset (similar to RecordingViewSimplified) - // Includes fallback logic for local-only files when server records are removed - const getAssetAudioUris = React.useCallback( - async (assetId: string): Promise => { - try { - // Get content links from both synced and local tables - const assetContentLinkSynced = resolveTable('asset_content_link', { - localOverride: false - }); - const contentLinksSynced = await system.db - .select() - .from(assetContentLinkSynced) - .where(eq(assetContentLinkSynced.asset_id, assetId)); - - const assetContentLinkLocal = resolveTable('asset_content_link', { - localOverride: true - }); - const contentLinksLocal = await system.db - .select() - .from(assetContentLinkLocal) - .where(eq(assetContentLinkLocal.asset_id, assetId)); - - // Prefer synced links, but merge with local for fallback - const allContentLinks = [...contentLinksSynced, ...contentLinksLocal]; - - // Deduplicate by ID (prefer synced over local) - const seenIds = new Set(); - const uniqueLinks = allContentLinks.filter((link) => { - if (seenIds.has(link.id)) { - return false; - } - seenIds.add(link.id); - return true; - }); - - if (uniqueLinks.length === 0) { - return []; - } - - // Get audio values from content links (can be URIs or attachment IDs) - const audioValues = uniqueLinks - .flatMap((link) => { - const audioArray = link.audio ?? []; - return audioArray; - }) - .filter((value): value is string => !!value); - - if (audioValues.length === 0) { - return []; - } + // Ref to track if handlePlayAll is running (for cancellation and to avoid state conflicts) + const isPlayAllRunningRef = React.useRef(false); - // Process each audio value - can be either a local URI or an attachment ID - const uris: string[] = []; - for (const audioValue of audioValues) { - // Check if this is already a local URI (starts with 'local/' or 'file://') - if (audioValue.startsWith('local/')) { - // It's a direct local URI from saveAudioLocally() - const constructedUri = - await getLocalAttachmentUriWithOPFS(audioValue); - // Check if file exists at constructed path - if (await fileExists(constructedUri)) { - uris.push(constructedUri); - } else { - // File doesn't exist at expected path - try to find it in attachment queue - console.log( - `โš ๏ธ Local URI ${audioValue} not found at ${constructedUri}, searching attachment queue...` - ); - - if (system.permAttachmentQueue) { - // Extract filename from local path (e.g., "local/uuid.wav" -> "uuid.wav") - const filename = audioValue.replace(/^local\//, ''); - // Extract UUID part (without extension) for more flexible matching - const uuidPart = filename.split('.')[0]; - - // Search attachment queue by filename or UUID - let attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR filename LIKE ? OR id = ? OR id LIKE ? LIMIT 1`, - [filename, `%${uuidPart}%`, filename, `%${uuidPart}%`] - ); + const stopPlayAll = React.useCallback(async () => { + isPlayAllRunningRef.current = false; + setIsPlayAllRunning(false); + setPlayAllActiveAssetId(null); + await assetAudio.stop(); + }, [assetAudio]); - // If not found, try searching all attachments for this asset's content links - if (!attachment && uniqueLinks.length > 0) { - const allAttachmentIds = uniqueLinks - .flatMap((link) => link.audio ?? []) - .filter( - (av): av is string => - typeof av === 'string' && - !av.startsWith('local/') && - !av.startsWith('file://') - ); - if (allAttachmentIds.length > 0) { - const placeholders = allAttachmentIds - .map(() => '?') - .join(','); - attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id IN (${placeholders}) LIMIT 1`, - allAttachmentIds - ); - } - } + const scrollToAssetInPlayAll = React.useCallback( + (assetId: string) => { + const listIndex = listItems.findIndex( + (item) => item.type === 'asset' && item.content.id === assetId + ); + if (listIndex < 0) return; - if (attachment?.local_uri) { - const foundUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - // Verify the found file actually exists - if (await fileExists(foundUri)) { - uris.push(foundUri); - console.log( - `โœ… Found attachment in queue for local URI ${audioValue.slice(0, 20)}` - ); - } else { - console.warn( - `โš ๏ธ Attachment found in queue but file doesn't exist: ${foundUri}` - ); - } - } else { - // Try fallback to local table for alternative audio values - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - console.log(`โœ… Found fallback file URI`); - break; - } - } - } - } - } - } - } - } else if (audioValue.startsWith('file://')) { - // Already a full file URI - verify it exists - if (await fileExists(audioValue)) { - uris.push(audioValue); - } else { - console.warn(`File URI does not exist: ${audioValue}`); - // Try to find in attachment queue by extracting filename from path - if (system.permAttachmentQueue) { - const filename = audioValue.split('/').pop(); - if (filename) { - const attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR id = ? LIMIT 1`, - [filename, filename] - ); - - if (attachment?.local_uri) { - const foundUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - if (await fileExists(foundUri)) { - uris.push(foundUri); - console.log(`โœ… Found attachment in queue for file URI`); - } - } - } - } - } - } else { - // It's an attachment ID - look it up in the attachment queue - if (!system.permAttachmentQueue) { - // No attachment queue - try fallback to local table - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('local/')) { - const fallbackUri = - await getLocalAttachmentUriWithOPFS(fallbackAudioValue); - if (await fileExists(fallbackUri)) { - uris.push(fallbackUri); - break; - } - } else if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - break; - } - } - } - } - continue; + // Defer until interactions settle to improve reliability while reordering/list updates occur. + InteractionManager.runAfterInteractions(() => { + requestAnimationFrame(() => { + const list = listRef.current; + if (!list) return; + try { + if (typeof list.scrollToIndex === 'function') { + list.scrollToIndex({ + index: listIndex, + animated: true, + viewPosition: 0.3 + }); + return; } - - const attachment = await system.powersync.getOptional<{ - id: string; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, - [audioValue] - ); - - if (attachment?.local_uri) { - const localUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - if (await fileExists(localUri)) { - uris.push(localUri); - } - } else { - // Attachment ID not found in queue - try fallback to local table - console.log( - `โš ๏ธ Attachment ID ${audioValue.slice(0, 8)} not found in queue, checking local table fallback...` - ); - - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('local/')) { - const fallbackUri = - await getLocalAttachmentUriWithOPFS(fallbackAudioValue); - if (await fileExists(fallbackUri)) { - uris.push(fallbackUri); - console.log( - `โœ… Found fallback local URI for attachment ${audioValue.slice(0, 8)}` - ); - break; - } - } else if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - console.log( - `โœ… Found fallback file URI for attachment ${audioValue.slice(0, 8)}` - ); - break; - } - } - } - } else { - // Try to get cloud URL if local not available - try { - if (!AppConfig.supabaseBucket) { - continue; - } - const { data } = system.supabaseConnector.client.storage - .from(AppConfig.supabaseBucket) - .getPublicUrl(audioValue); - if (data.publicUrl) { - uris.push(data.publicUrl); - } - } catch (error) { - console.error('Failed to get cloud audio URL:', error); - } - } + if (typeof list.scrollToOffset === 'function') { + list.scrollToOffset({ + offset: Math.max(0, listIndex * 72), + animated: true + }); } + } catch (error) { + console.warn('Failed to auto-scroll play-all asset:', error); } - } - - return uris; - } catch (error) { - console.error('Failed to fetch audio URIs:', error); - return []; - } + }); + }); }, - [] + [listItems] ); - // OLD handlePlayAllAssets - Asset ranges for play-all: maps each asset to its time range - // const assetTimeRangesRef = React.useRef< - // { assetId: string; startMs: number; endMs: number }[] - // >([]); - - // Calculate which asset should be highlighted based on position - // NOTE: This is only used for handlePlayAsset (individual) - // handlePlayAll (new function) controls currentlyPlayingAssetId directly - const derivedCurrentlyPlayingAssetId = React.useMemo(() => { - // Not playing at all - if (!audioContext.isPlaying) { - return null; - } - - // Playing a single asset (not play-all mode) - return directly - if (audioContext.currentAudioId !== PLAY_ALL_AUDIO_ID) { - return audioContext.currentAudioId; - } - - // OLD handlePlayAllAssets logic - commented out - // // Play-all mode (handlePlayAllAssets): Use time ranges if available - // const ranges = assetTimeRangesRef.current; - // if (ranges.length > 0) { - // const position = audioContext.position; - // for (const range of ranges) { - // if (position >= range.startMs && position < range.endMs) { - // return range.assetId; - // } - // } - // // Position beyond all ranges - return last asset - // return ranges[ranges.length - 1]?.assetId || null; - // } - - // // Fallback to first asset in order - // return assetOrderRef.current[0] || null; - - return null; - }, [ - audioContext.isPlaying, - audioContext.currentAudioId, - audioContext.position - ]); - - // Ref to track if handlePlayAll is running (for cancellation and to avoid state conflicts) - const isPlayAllRunningRef = React.useRef(false); - // Ref to track current playing sound for immediate cancellation - const currentPlayAllSoundRef = React.useRef(null); - - // Ref to hold latest audioContext for cleanup (avoids stale closure) - const audioContextCurrentRef = React.useRef(audioContext); - React.useEffect(() => { - audioContextCurrentRef.current = audioContext; - }, [audioContext]); - - // Update state only for handlePlayAsset and handlePlayAllAssets - // handlePlayAll controls state directly so we skip when it's running - React.useEffect(() => { - // Skip if handlePlayAll is controlling the state directly - if (isPlayAllRunningRef.current) { - return; - } - - // Only update if we're in audioContext-controlled playback mode - if ( - audioContext.isPlaying && - (audioContext.currentAudioId === PLAY_ALL_AUDIO_ID || - audioContext.currentAudioId) - ) { - setCurrentlyPlayingAssetId(derivedCurrentlyPlayingAssetId); - } else if (!audioContext.isPlaying && !audioContext.currentAudioId) { - // Clear highlight when audio finishes naturally - setCurrentlyPlayingAssetId(null); - } - }, [ - derivedCurrentlyPlayingAssetId, - audioContext.isPlaying, - audioContext.currentAudioId - ]); - - // Handle play all - plays all assets sequentially with direct asset-audio linking - // Uses assets that have isAssetSelectedForRecording={true} in BibleAssetListItem (determined by selectedForRecording) - // Takes selectedAsset as parameter to avoid recreating the function when selection changes + const activateAssetForPlayAll = React.useCallback( + async (assetId: string) => { + setPlayAllActiveAssetId(assetId); + await Promise.resolve(); + scrollToAssetInPlayAll(assetId); + }, + [scrollToAssetInPlayAll] + ); + // Handle play all - plays all assets sequentially via assetAudio service const handlePlayAll = React.useCallback( async ( selectedAsset?: { type: 'asset' | 'separator'; assetId?: string } | null @@ -2857,194 +2549,76 @@ export default function BibleAssetsView() { try { // Check if already playing - toggle to stop if (isPlayAllRunningRef.current) { - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); - currentPlayAllSoundRef.current = null; - } catch (error) { - console.error('Error stopping sound:', error); - } - } - - setCurrentlyPlayingAssetId(null); - console.log('โธ๏ธ Stopped play all'); + await stopPlayAll(); return; } // Determine which assets to process based on selection state let assetsToProcess: AssetQuestLink[]; - // Priority 1: selectedForRecording (for unpublished quests with recording selection) if (selectedAsset?.type === 'asset' && selectedAsset?.assetId) { const selectedIndex = assets.findIndex( (a) => a.id === selectedAsset.assetId ); - if (selectedIndex >= 0) { - assetsToProcess = assets.slice(selectedIndex); - } else { - assetsToProcess = assets; - } - } - // Priority 2: selectedAssetIds (for published quests with visual selection) - else if (selectedAssetIds.size > 0) { + assetsToProcess = + selectedIndex >= 0 ? assets.slice(selectedIndex) : assets; + } else if (selectedAssetIds.size > 0) { const firstSelectedIndex = assets.findIndex((a) => selectedAssetIds.has(a.id) ); - if (firstSelectedIndex >= 0) { - assetsToProcess = assets.slice(firstSelectedIndex); - console.log( - `๐ŸŽต Starting from first selected asset at index ${firstSelectedIndex}` - ); - } else { - assetsToProcess = assets; - } - } - // Priority 3: No selection, play all - else { + assetsToProcess = + firstSelectedIndex >= 0 + ? assets.slice(firstSelectedIndex) + : assets; + } else { assetsToProcess = assets; } - if (assetsToProcess.length === 0) { - console.warn('โš ๏ธ No assets to play'); - return; - } + if (assetsToProcess.length === 0) return; - console.log( - `๐ŸŽต Starting play all from ${assetsToProcess.length} assets...` - ); - - // Mark as running isPlayAllRunningRef.current = true; setIsPlayAllRunning(true); - // Build playlist: Array<{assetId, uris}> - const playlist: { assetId: string; uris: string[] }[] = []; - + // Play each asset sequentially. + // Keep highlight continuous across clip boundaries by controlling it here. for (const asset of assetsToProcess) { - // Check if cancelled if (!isPlayAllRunningRef.current) { - console.log('โธ๏ธ Play all cancelled during playlist build'); + setPlayAllActiveAssetId(null); return; } - // Get URIs for this asset (getAssetAudioUris handles all the resolution) - const uris = await getAssetAudioUris(asset.id); - if (uris.length > 0) { - playlist.push({ assetId: asset.id, uris }); - } - } + await activateAssetForPlayAll(asset.id); + if (!isPlayAllRunningRef.current) break; - if (playlist.length === 0) { - console.error('โŒ No audio URIs found for any assets'); - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - return; - } - - console.log( - `โ–ถ๏ธ Playing ${playlist.reduce((sum, p) => sum + p.uris.length, 0)} audio segments from ${playlist.length} assets` - ); - - // STEP 2: Play each asset sequentially with direct linking - for (let i = 0; i < playlist.length; i++) { - // Check if cancelled - if (!isPlayAllRunningRef.current) { - console.log('โธ๏ธ Play all cancelled'); - setCurrentlyPlayingAssetId(null); - return; - } - - const item = playlist[i]!; - - // HIGHLIGHT THIS ASSET - direct link! - setCurrentlyPlayingAssetId(item.assetId); - console.log( - `โ–ถ๏ธ [${i + 1}/${playlist.length}] Playing asset ${item.assetId.slice(0, 8)} (${item.uris.length} segments)` - ); - - // Play all URIs for this asset sequentially - for (const uri of item.uris) { - // Check if cancelled - if (!isPlayAllRunningRef.current) { - setCurrentlyPlayingAssetId(null); - return; - } - - // Play this URI and wait for it to finish - await new Promise((resolve) => { - // Create and play the sound - Audio.Sound.createAsync({ uri }, { shouldPlay: true }) - .then(({ sound }) => { - // Store reference for immediate cancellation - currentPlayAllSoundRef.current = sound; - - // Set up listener for when sound finishes - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) return; - - if (status.didJustFinish) { - currentPlayAllSoundRef.current = null; - void sound.unloadAsync().then(() => { - resolve(); - }); - } - }); - }) - .catch((error) => { - console.error('Failed to play audio:', error); - currentPlayAllSoundRef.current = null; - resolve(); // Continue to next even on error - }); - }); - } + await assetAudio.play(asset.id); + await assetAudio.waitForPlaybackEnd(asset.id); + if (!isPlayAllRunningRef.current) break; } - // Done playing all - console.log('โœ… Finished playing all assets'); - setCurrentlyPlayingAssetId(null); + // Done isPlayAllRunningRef.current = false; setIsPlayAllRunning(false); - currentPlayAllSoundRef.current = null; + setPlayAllActiveAssetId(null); } catch (error) { - console.error('โŒ Erro ao tocar todos os assets:', error); - setCurrentlyPlayingAssetId(null); + console.error('Failed to play all assets:', error); isPlayAllRunningRef.current = false; setIsPlayAllRunning(false); - currentPlayAllSoundRef.current = null; + setPlayAllActiveAssetId(null); } }, - [assets, getAssetAudioUris, selectedAssetIds] + [activateAssetForPlayAll, assets, assetAudio, selectedAssetIds, stopPlayAll] ); // Handle going to recording - stops any playing audio first const handleGoToRecording = React.useCallback(async () => { // Stop PlayAll if running if (isPlayAllRunningRef.current) { - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); - currentPlayAllSoundRef.current = null; - } catch (error) { - console.error('Error stopping sound:', error); - } - } - - setCurrentlyPlayingAssetId(null); + await stopPlayAll(); } - // Stop any other audio from audioContext - if (audioContext.isPlaying) { - await audioContext.stopCurrentSound(); + // Stop any playing audio + else if (assetAudio.isPlaying) { + await assetAudio.stop(); } // Navigate to recording view @@ -3066,7 +2640,8 @@ export default function BibleAssetsView() { } }); }, [ - audioContext, + assetAudio, + stopPlayAll, navigate, currentQuestId, currentProjectId, @@ -3080,173 +2655,45 @@ export default function BibleAssetsView() { limitVerse ]); + // Ref to hold latest assetAudio for cleanup (avoids stale closure) + const assetAudioRef = React.useRef(assetAudio); + React.useEffect(() => { + assetAudioRef.current = assetAudio; + }, [assetAudio]); + // Cleanup effect: Stop audio when component unmounts React.useEffect(() => { return () => { - // Stop audio playback if playing (access via ref for latest state) - if (audioContextCurrentRef.current.isPlaying) { - void audioContextCurrentRef.current.stopCurrentSound(); - } - - // Stop PlayAll if running - if (isPlayAllRunningRef.current) { - isPlayAllRunningRef.current = false; - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - void currentPlayAllSoundRef.current - .stopAsync() - .then(() => { - void currentPlayAllSoundRef.current?.unloadAsync(); - currentPlayAllSoundRef.current = null; - }) - .catch(() => { - // Ignore errors during cleanup - currentPlayAllSoundRef.current = null; - }); - } - } - - // Reset state - setCurrentlyPlayingAssetId(null); + isPlayAllRunningRef.current = false; + void assetAudioRef.current.stop(); setIsPlayAllRunning(false); - - console.log('๐Ÿงน Cleaned up BibleAssetsView on unmount'); + setPlayAllActiveAssetId(null); }; }, []); - // OLD handlePlayAllAssets function - commented out (replaced by handlePlayAll) - // const handlePlayAllAssets = React.useCallback(async () => { - // try { - // const isPlayingAll = - // audioContext.isPlaying && - // audioContext.currentAudioId === PLAY_ALL_AUDIO_ID; - // - // if (isPlayingAll) { - // await audioContext.stopCurrentSound(); - // setCurrentlyPlayingAssetId(null); - // assetUriMapRef.current.clear(); - // assetOrderRef.current = []; - // uriOrderRef.current = []; - // segmentDurationsRef.current = []; - // assetTimeRangesRef.current = []; - // } else { - // if (assets.length === 0) { - // console.warn('โš ๏ธ No assets to play'); - // return; - // } - // - // // Collect all URIs from all assets in order, tracking which asset each URI belongs to - // const allUris: string[] = []; - // assetUriMapRef.current.clear(); - // assetOrderRef.current = []; - // uriOrderRef.current = []; - // segmentDurationsRef.current = []; - // assetTimeRangesRef.current = []; - // - // // Build time ranges for each asset - // let cumulativeTime = 0; - // for (const asset of assets) { - // const uris = await getAssetAudioUris(asset.id); - // if (uris.length > 0) { - // const assetStartTime = cumulativeTime; - // assetOrderRef.current.push(asset.id); - // - // // Add all URIs for this asset - // for (const uri of uris) { - // allUris.push(uri); - // uriOrderRef.current.push(uri); - // assetUriMapRef.current.set(uri, asset.id); - // - // // Load duration for this URI - // try { - // const { sound } = await Audio.Sound.createAsync({ uri }); - // const status = await sound.getStatusAsync(); - // await sound.unloadAsync(); - // if (status.isLoaded) { - // const duration = status.durationMillis ?? 0; - // segmentDurationsRef.current.push(duration); - // cumulativeTime += duration; - // } else { - // segmentDurationsRef.current.push(0); - // } - // } catch { - // segmentDurationsRef.current.push(0); - // } - // } - // - // // Store the time range for this asset - // assetTimeRangesRef.current.push({ - // assetId: asset.id, - // startMs: assetStartTime, - // endMs: cumulativeTime - // }); - // - // console.log( - // `๐Ÿ“Š Asset ${asset.id.slice(0, 8)}: ${Math.round(assetStartTime)}ms - ${Math.round(cumulativeTime)}ms (${uris.length} segments)` - // ); - // } - // } - // - // if (allUris.length === 0) { - // console.error('โŒ No audio URIs found for any assets'); - // return; - // } - // - // console.log( - // `โ–ถ๏ธ Playing ${allUris.length} audio segments from ${assets.length} assets (total: ${Math.round(cumulativeTime)}ms)` - // ); - // - // // Start playing (AudioContext will handle sequence playback) - // await audioContext.playSoundSequence(allUris, PLAY_ALL_AUDIO_ID); - // } - // } catch (error) { - // console.error('โŒ Failed to play all assets:', error); - // setCurrentlyPlayingAssetId(null); - // assetUriMapRef.current.clear(); - // assetOrderRef.current = []; - // uriOrderRef.current = []; - // segmentDurationsRef.current = []; - // } - // }, [audioContext, getAssetAudioUris, assets]); - // Handle play individual asset const handlePlayAsset = React.useCallback( async (assetId: string) => { try { + // During Play All, asset tap acts as "stop play all". + if (isPlayAllRunningRef.current) { + await stopPlayAll(); + return; + } + const isThisAssetPlaying = - audioContext.isPlaying && audioContext.currentAudioId === assetId; + assetAudio.isPlaying && assetAudio.currentAudioId === assetId; if (isThisAssetPlaying) { - console.log('โธ๏ธ Stopping asset:', assetId.slice(0, 8)); - await audioContext.stopCurrentSound(); - setCurrentlyPlayingAssetId(null); + await assetAudio.stop(); } else { - console.log('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); - const uris = await getAssetAudioUris(assetId); - - if (uris.length === 0) { - console.warn('โš ๏ธ No audio URIs found for asset:', assetId); - return; - } - - // Set the asset as currently playing immediately for visual feedback - setCurrentlyPlayingAssetId(assetId); - - if (uris.length === 1 && uris[0]) { - console.log('โ–ถ๏ธ Playing single segment'); - await audioContext.playSound(uris[0], assetId); - } else if (uris.length > 1) { - console.log(`โ–ถ๏ธ Playing ${uris.length} segments in sequence`); - await audioContext.playSoundSequence(uris, assetId); - } + await assetAudio.play(assetId); } } catch (error) { - console.error('โŒ Failed to play audio:', error); - setCurrentlyPlayingAssetId(null); + console.error('Failed to play audio:', error); } }, - [audioContext, getAssetAudioUris] + [assetAudio, stopPlayAll] ); // Update ref so renderItem can use it @@ -3590,25 +3037,6 @@ export default function BibleAssetsView() { {/* Right side: Publish/Export buttons (isolated) */} - {/* OLD handlePlayAllAssets button - commented out (replaced by Library icon button) */} - {/* {assets.length > 0 && ( - - )} */} {isPublished ? ( // Show cloud badge and export button if user is creator, member, or owner canSeePublishedBadge ? ( @@ -3766,6 +3194,7 @@ export default function BibleAssetsView() { ) ) : ( item.key} renderItem={renderItem} From cc90b1a05f0c5741c0d6bbb140201f6b0563bbad Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Thu, 12 Feb 2026 18:42:44 -0600 Subject: [PATCH 051/143] update package lock --- package-lock.json | 486 +++++++++++++++++++++++++++++----------------- 1 file changed, 312 insertions(+), 174 deletions(-) diff --git a/package-lock.json b/package-lock.json index 675cf51b3..514eaac03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3685,9 +3685,9 @@ } }, "node_modules/@expo-google-fonts/material-symbols": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/@expo-google-fonts/material-symbols/-/material-symbols-0.4.21.tgz", - "integrity": "sha512-nsbtsdihVp8AxFfkv0po3z59iSmeKt33cv/wgPxiFdOx2HI5xRgAi63f/4dW6bYbC2PF5Jv6rF7afqbqTrdUhg==", + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/@expo-google-fonts/material-symbols/-/material-symbols-0.4.22.tgz", + "integrity": "sha512-Kgn/eYeb5s/pxVkRWQLgZOdaC6SpOofUVc7mtadUQc1OwEy9meDupWCvfWE7+Y8Rh9kFpQe9UxJNvmfmV4pqHA==", "license": "MIT AND Apache-2.0" }, "node_modules/@expo-google-fonts/noto-sans": { @@ -3846,12 +3846,12 @@ } }, "node_modules/@expo/cli/node_modules/glob": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", - "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", + "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", + "minimatch": "^10.2.0", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -3862,13 +3862,37 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@expo/cli/node_modules/glob/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/cli/node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/cli/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -4088,13 +4112,37 @@ "xml2js": "0.6.0" } }, + "node_modules/@expo/config-plugins/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/config-plugins/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/config-plugins/node_modules/glob": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", - "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", + "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", + "minimatch": "^10.2.0", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -4106,12 +4154,12 @@ } }, "node_modules/@expo/config-plugins/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -4138,13 +4186,37 @@ "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", "license": "MIT" }, + "node_modules/@expo/config/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/config/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/config/node_modules/glob": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", - "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", + "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", + "minimatch": "^10.2.0", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -4156,12 +4228,12 @@ } }, "node_modules/@expo/config/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -4278,12 +4350,12 @@ } }, "node_modules/@expo/fingerprint/node_modules/glob": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", - "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", + "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", + "minimatch": "^10.2.0", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -4294,13 +4366,37 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@expo/fingerprint/node_modules/glob/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/fingerprint/node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -4467,12 +4563,12 @@ } }, "node_modules/@expo/metro-config/node_modules/glob": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", - "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", + "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", + "minimatch": "^10.2.0", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -4483,13 +4579,37 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@expo/metro-config/node_modules/glob/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/metro-config/node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -5516,32 +5636,10 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -6515,12 +6613,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", - "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.1.tgz", + "integrity": "sha512-BViBCdE/GuXRlp9k7nS1w6wJvY5fnFX5XvuEtWsTAOQFIO89Eru7lGW3WbfbxtCuZ/GbrJfAziXG0w0dpxL7eQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.5.0", + "@opentelemetry/core": "2.5.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -6531,9 +6629,9 @@ } }, "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", - "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.1.tgz", + "integrity": "sha512-Dwlc+3HAZqpgTYq0MUyZABjFkcrKTePwuiFVLjahGD8cx3enqihmpAmdgNFO1R4m/sIe5afjJrA25Prqy4NXlA==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" @@ -6948,18 +7046,18 @@ } }, "node_modules/@posthog/core": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.21.0.tgz", - "integrity": "sha512-0a2JUIX1vhduP2El/6/J8s5AeYAurIoufQGFgMiGnJE5ajd63o9LFocu2vFYYBnIOmy75y4ADNeW8zSl1keEQQ==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.22.0.tgz", + "integrity": "sha512-WkmOnq95aAOu6yk6r5LWr5cfXsQdpVbWDCwOxQwxSne8YV6GuZET1ziO5toSQXgrgbdcjrSz2/GopAfiL6iiAA==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.6" } }, "node_modules/@posthog/types": { - "version": "1.345.2", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.345.2.tgz", - "integrity": "sha512-VZ1I+bp1YbYG4pSN84YAYCfvUyG5PmKIHx0ucZ6HO23sRgMZw381LLzfBAtmsA4tQ9+uMLigCTIZ4sDMl4ADFw==", + "version": "1.347.0", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.347.0.tgz", + "integrity": "sha512-wnz/9DBO4b/C7mzhXgUacKyqt/DNN+yg7CutJXflAm7cbrSygULhndHlGhDtbZPL7XgCkoNq9tEjVr7tUVm8aA==", "license": "MIT" }, "node_modules/@powersync/attachments": { @@ -9630,9 +9728,9 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", - "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", + "version": "5.90.21", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", + "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", "license": "MIT", "dependencies": { "@tanstack/query-core": "5.90.20" @@ -9882,9 +9980,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", - "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -15343,6 +15441,15 @@ "expo-module": "bin/expo-module.js" } }, + "node_modules/expo-module-scripts/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, "node_modules/expo-module-scripts/node_modules/@babel/generator": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", @@ -15425,15 +15532,6 @@ "integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA==", "license": "MIT" }, - "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/expo-module-scripts/node_modules/@expo/config/node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -15466,15 +15564,6 @@ "write-file-atomic": "^2.3.0" } }, - "node_modules/expo-module-scripts/node_modules/@expo/json-file/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/expo-module-scripts/node_modules/@expo/plist": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz", @@ -15486,6 +15575,20 @@ "xmlbuilder": "^14.0.0" } }, + "node_modules/expo-module-scripts/node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/expo-module-scripts/node_modules/@react-native/babel-plugin-codegen": { "version": "0.74.87", "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz", @@ -15641,41 +15744,6 @@ "zod-validation-error": "^2.1.0" } }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/expo-module-scripts/node_modules/babel-plugin-react-compiler/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, "node_modules/expo-module-scripts/node_modules/babel-plugin-react-native-web": { "version": "0.19.13", "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", @@ -15792,10 +15860,25 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/expo-module-scripts/node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/expo-module-scripts/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, "node_modules/expo-module-scripts/node_modules/react-test-renderer": { @@ -15812,6 +15895,12 @@ "react": "^18.2.0" } }, + "node_modules/expo-module-scripts/node_modules/react-test-renderer/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/expo-module-scripts/node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -16266,13 +16355,37 @@ "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", "license": "MIT" }, + "node_modules/expo-updates/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/expo-updates/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/expo-updates/node_modules/glob": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.2.tgz", - "integrity": "sha512-035InabNu/c1lW0tzPhAgapKctblppqsKKG9ZaNzbr+gXwWMjXoiyGSyB9sArzrjG7jY+zntRq5ZSUYemrnWVQ==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", + "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", + "minimatch": "^10.2.0", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -16284,12 +16397,12 @@ } }, "node_modules/expo-updates/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -16821,9 +16934,9 @@ } }, "node_modules/fetch-nodeshim": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", - "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.6.tgz", + "integrity": "sha512-RP+zh0GZLp/7bUoS37+pN8zKIhqQ5YuI3m2RQfxZSqPzwYO1wRzwWqq4Va0kWpNPQbtpomEYAQ7zC/VjJWGmIw==", "license": "MIT" }, "node_modules/fflate": { @@ -17097,9 +17210,9 @@ "license": "MIT" }, "node_modules/flow-parser": { - "version": "0.299.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.299.0.tgz", - "integrity": "sha512-phGMRoNt6SNglPHGRbCyWm9/pxfe6t/t4++EIYPaBGWT6e0lphLBgUMrvpL62NbRo9R549o3oqrbKHq82kANCw==", + "version": "0.301.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.301.0.tgz", + "integrity": "sha512-yKRjJzN+W9dwk1tU9u6gowANdgFZyYknokcLePyLe30AV6WzAquKJzx+smN9wovWMBE2hvCDUvKbXUpcT1+8OA==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -18675,7 +18788,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^9.0.0" @@ -22577,9 +22689,9 @@ "license": "MIT" }, "node_modules/posthog-js": { - "version": "1.345.2", - "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.345.2.tgz", - "integrity": "sha512-5J0RfI6U11Sy76cL7QR5f+a/IqbQvcsF6XSItT6i+VPp0oX+XQE3eRnqkx1Ne8/PLegpn1xP3h6KSBMshwq0SQ==", + "version": "1.347.0", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.347.0.tgz", + "integrity": "sha512-AEbSkr1EAg4v8PvijuuaQ0z/Ki9yRT1MrkRRkQpt+gN/ZuQNsjVZgKZYrLd0kPzAI0vLLK0ToCpt4BCytwULqQ==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -22587,8 +22699,8 @@ "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", "@opentelemetry/resources": "^2.2.0", "@opentelemetry/sdk-logs": "^0.208.0", - "@posthog/core": "1.21.0", - "@posthog/types": "1.345.2", + "@posthog/core": "1.22.0", + "@posthog/types": "1.347.0", "core-js": "^3.38.1", "dompurify": "^3.3.1", "fflate": "^0.4.8", @@ -22598,12 +22710,12 @@ } }, "node_modules/posthog-react-native": { - "version": "4.31.1", - "resolved": "https://registry.npmjs.org/posthog-react-native/-/posthog-react-native-4.31.1.tgz", - "integrity": "sha512-67HHwzPuoe2Vc9PMdWIXOp4HIPF8C565eTI+AVudezm4fP/keiV0j3/4immcOpqomN3KhjTkSx4qVYGhS70PHg==", + "version": "4.34.0", + "resolved": "https://registry.npmjs.org/posthog-react-native/-/posthog-react-native-4.34.0.tgz", + "integrity": "sha512-wJLIDA8S12C61rV02I8rLStMLdG4aP7/+b5Hn54KnqydWokdMaCvMhEI2ZlqYxqpQqD8CVGevwxRuIT1q6oeig==", "license": "MIT", "dependencies": { - "@posthog/core": "1.21.0" + "@posthog/core": "1.22.0" }, "peerDependencies": { "@react-native-async-storage/async-storage": ">=1.0.0", @@ -22972,9 +23084,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -24826,6 +24938,32 @@ "node": ">=18.17" } }, + "node_modules/sharp-cli/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/sharp-cli/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/sharp-cli/node_modules/glob": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", @@ -24852,13 +24990,13 @@ } }, "node_modules/sharp-cli/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -25589,9 +25727,9 @@ } }, "node_modules/supabase": { - "version": "2.76.7", - "resolved": "https://registry.npmjs.org/supabase/-/supabase-2.76.7.tgz", - "integrity": "sha512-tUseXvr7uLkw665cHdY3mg8NTHL5GABViRk7OhJkkbpOzvAJW/ydxQWAwLTcvXaI4P+cjbAmUgIv+6m8lOUe1Q==", + "version": "2.76.8", + "resolved": "https://registry.npmjs.org/supabase/-/supabase-2.76.8.tgz", + "integrity": "sha512-Mhu3KNioxSjymdaHu6hQ/qZKzu/v1AzIEnYOOZ9+ATtSfrQNjqiMg9sivKx1vToKqcDBm3BXjmg8OX65sZW2Pw==", "dev": true, "hasInstallScript": true, "license": "MIT", From 78e22ccd2dd00aefa9c34a3a1df8ebc6bc7b93bf Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Thu, 12 Feb 2026 17:06:58 -0800 Subject: [PATCH 052/143] junk that probably shouldn't be in this branch - updated eas,json - accidentally messed with RecordingViewSimplified, but I think it is OK but it is going to be replaced anyway - one line change to localStore to allow app to remember last opened view! --- eas.json | 18 +- store/localStore.ts | 2 +- .../components/RecordingViewSimplified.tsx | 236 ++++++++---------- 3 files changed, 114 insertions(+), 142 deletions(-) diff --git a/eas.json b/eas.json index 444f92878..36e987e65 100644 --- a/eas.json +++ b/eas.json @@ -10,27 +10,26 @@ "distribution": "internal", "channel": "development", "environment": "development", - "developmentClient": true, + "developmentClient": true + }, + "development-simulator": { + "extends": "development", + "withoutCredentials": true, "ios": { - "simulator": true, - "distribution": "store" + "simulator": true } }, "preview": { "autoIncrement": true, "channel": "preview", "environment": "preview", - "distribution": "internal", - "ios": { - "distribution": "store" - } + "distribution": "internal" }, "preview-simulator": { "extends": "preview", "withoutCredentials": true, "ios": { - "simulator": true, - "distribution": "internal" + "simulator": true } }, "production": { @@ -41,7 +40,6 @@ "production-simulator": { "extends": "production", "withoutCredentials": true, - "distribution": "internal", "ios": { "simulator": true } diff --git a/store/localStore.ts b/store/localStore.ts index 9dca84978..d5f508757 100644 --- a/store/localStore.ts +++ b/store/localStore.ts @@ -629,7 +629,7 @@ export const useLocalStore = create()( 'currentProjectId', 'currentQuestId', 'currentAssetId', - 'navigationStack' + //'navigationStack' //commented out so the app can remember the last view on reload ].includes(key) ) ) diff --git a/views/new/recording/components/RecordingViewSimplified.tsx b/views/new/recording/components/RecordingViewSimplified.tsx index 3ab74c805..be8b77b75 100644 --- a/views/new/recording/components/RecordingViewSimplified.tsx +++ b/views/new/recording/components/RecordingViewSimplified.tsx @@ -4,10 +4,6 @@ import { RecordingHelpDialog } from '@/components/RecordingHelpDialog'; import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; -import { - resolveAssetAudio, - useAssetAudio -} from '@/services/assetAudio'; import { useAuth } from '@/contexts/AuthContext'; import { renameAsset } from '@/database_services/assetService'; import { audioSegmentService } from '@/database_services/audioSegmentService'; @@ -21,10 +17,12 @@ import { system } from '@/db/powersync/system'; import { useProjectById } from '@/hooks/db/useProjects'; import { useCurrentNavigation } from '@/hooks/useAppNavigation'; import { useLocalization } from '@/hooks/useLocalization'; +import { + useAssetAudio +} from '@/services/assetAudio'; import { useLocalStore } from '@/store/localStore'; import { resolveTable } from '@/utils/dbUtils'; import { - fileExists, getLocalAttachmentUriWithOPFS, saveAudioLocally } from '@/utils/fileUtils'; @@ -38,7 +36,6 @@ import { Audio } from 'expo-av'; import { ArrowLeft, ListVideo, PauseIcon } from 'lucide-react-native'; import React from 'react'; import { InteractionManager, View } from 'react-native'; -import { useSharedValue } from 'react-native-reanimated'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { useHybridData } from '../../useHybridData'; import { useSelectionMode } from '../hooks/useSelectionMode'; @@ -53,7 +50,7 @@ import { VADSettingsDrawer } from './VADSettingsDrawer'; // Feature flag: true = use ArrayInsertionWheel, false = use LegendList const USE_INSERTION_WHEEL = true; -const DEBUG_MODE = false; +const DEBUG_MODE = true; function debugLog(...args: unknown[]) { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (DEBUG_MODE) { @@ -185,9 +182,6 @@ const RecordingViewSimplified = ({ // Track AbortController for batch loading cleanup const batchLoadingControllerRef = React.useRef(null); - // Single SharedValue for play-all progress (only 1 asset plays at a time) - const playAllProgress = useSharedValue(0); - // Insertion wheel state const [insertionIndex, setInsertionIndex] = React.useState(0); const wheelRef = React.useRef(null); @@ -394,37 +388,126 @@ const RecordingViewSimplified = ({ // AUDIO PLAYBACK // ============================================================================ + const stopPlayAll = React.useCallback(async () => { + console.log('โธ๏ธ stopPlayAll called'); + isPlayAllRunningRef.current = false; + setIsPlayAllRunning(false); + setCurrentlyPlayingAssetId(null); + await audio.stop(); + }, [audio]); + + const activateAssetForPlayAll = React.useCallback( + async (assetId: string, actualAssetIndex: number) => { + setCurrentlyPlayingAssetId(assetId); + await Promise.resolve(); + + if (wheelRef.current && lastScrolledAssetIdRef.current !== assetId) { + wheelRef.current.scrollItemToTop(actualAssetIndex - 1, true); + lastScrolledAssetIdRef.current = assetId; + } + }, + [] + ); + + /** + * Core queue runner for Play All. + * + * Flow: + * 1) Build ordered playlist from current assets and start index. + * 2) For each asset: activate UI -> play -> wait for playback end. + * 3) Exit immediately if stop was requested. + * 4) Always reset Play All state in finally. + */ + const runPlayAll = React.useCallback( + async (startIndex: number) => { + // Small helper so stop checks read cleanly in the loop. + const isPlayAllActive = () => isPlayAllRunningRef.current; + // Live-array style: iterate directly over assets by index so if assets + // change while Play All is running, queue progression adapts in real time. + if (startIndex >= assets.length) { + console.warn('โš ๏ธ No assets to play from insertion index'); + return; + } + + // Enter Play All mode once, then keep loop logic simple. + isPlayAllRunningRef.current = true; + setIsPlayAllRunning(true); + + debugLog(`โ–ถ๏ธ Playing assets sequentially (live list mode)`); + + try { + // Sequential queue: each asset fully finishes before next starts. + let index = startIndex; + while (index < assets.length) { + // Stop requested (button toggle, card press, unmount, etc) + if (!isPlayAllActive()) break; + + const item = assets[index]; + if (!item?.id) { + index += 1; + continue; + } + const assetId = item.id; + const actualAssetIndex = index; + // Update list highlight / visibility for this queue position. + await activateAssetForPlayAll(assetId, actualAssetIndex); + + debugLog( + `โ–ถ๏ธ Playing asset at index ${actualAssetIndex} (${assetId.slice(0, 8)})` + ); + + // Start playback for this asset through AssetAudio abstraction. + await audio.play(assetId); + // Block until this asset is done (natural end or stop). + await audio.waitForPlaybackEnd(assetId); + index += 1; + } + } finally { + // Always leave Play All mode, regardless of completion/cancel/error. + isPlayAllRunningRef.current = false; + setIsPlayAllRunning(false); + setCurrentlyPlayingAssetId(null); + } + }, + [assets, audio, activateAssetForPlayAll] + ); + // Handle asset playback (single asset or merged) const handlePlayAsset = React.useCallback( async (assetId: string) => { try { + // During Play All, any asset tap acts as "stop play all" only. + if (isPlayAllRunningRef.current) { + debugLog( + 'โธ๏ธ Stopping Play All from asset tap:', + assetId.slice(0, 8) + ); + await stopPlayAll(); + return; + } + const isThisAssetPlaying = audio.isPlaying && audio.currentAudioId === assetId; if (isThisAssetPlaying) { - debugLog('โธ๏ธ Stopping asset:', assetId.slice(0, 8)); + console.log('โธ๏ธ Stopping asset:', assetId.slice(0, 8)); await audio.stop(); } else { - debugLog('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); + console.log('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); await audio.play(assetId); } } catch (error) { console.error('โŒ Failed to play audio:', error); } }, - [audio] + [audio, stopPlayAll] ); // Handle play all - plays all assets sequentially starting from insertionIndex const handlePlayAll = React.useCallback(async () => { try { - // Check if already playing - toggle to stop if (isPlayAllRunningRef.current) { - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - await audio.stop(); - playAllProgress.value = 0; - setCurrentlyPlayingAssetId(null); + await stopPlayAll(); debugLog('โธ๏ธ Stopped play all'); return; } @@ -434,106 +517,14 @@ const RecordingViewSimplified = ({ return; } - // Determine which assets to process starting from insertionIndex const startIndex = Math.min(insertionIndex, assets.length - 1); - const assetsToProcess = assets.slice(startIndex); - - if (assetsToProcess.length === 0) { - console.warn('โš ๏ธ No assets to play from insertion index'); - return; - } - - debugLog( - `๐ŸŽต Starting play all from insertion index ${startIndex} (${assetsToProcess.length} assets)...` - ); - - // Mark as running - isPlayAllRunningRef.current = true; - setIsPlayAllRunning(true); - - // Build playlist: assets with resolvable audio - const playlist: { assetId: string }[] = []; - for (const asset of assetsToProcess) { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!isPlayAllRunningRef.current) { - debugLog('โธ๏ธ Play all cancelled during playlist build'); - return; - } - const resolved = await resolveAssetAudio(asset.id); - if (resolved && resolved.segments.length > 0) { - playlist.push({ assetId: asset.id }); - } - } - - if (playlist.length === 0) { - console.error('โŒ No audio found for any assets'); - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - return; - } - - debugLog(`โ–ถ๏ธ Playing ${playlist.length} assets sequentially`); - - // Play each asset sequentially via AssetAudio - for (let i = 0; i < playlist.length; i++) { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!isPlayAllRunningRef.current) { - debugLog('โธ๏ธ Play all cancelled'); - setCurrentlyPlayingAssetId(null); - return; - } - - const item = playlist[i]!; - const actualAssetIndex = startIndex + i; - - setCurrentlyPlayingAssetId(item.assetId); - await Promise.resolve(); - - // Scroll to this asset in the wheel - if (wheelRef.current) { - wheelRef.current.scrollItemToTop(actualAssetIndex - 1, true); - } - - debugLog( - `โ–ถ๏ธ [${i + 1}/${playlist.length}] Playing asset at index ${actualAssetIndex} (${item.assetId.slice(0, 8)})` - ); - - playAllProgress.value = 0; - await audio.play(item.assetId); - - // Poll until playback completes or user stops - while (true) { - await new Promise((r) => setTimeout(r, 100)); - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!isPlayAllRunningRef.current) { - await audio.stop(); - setCurrentlyPlayingAssetId(null); - return; - } - const pos = audio.positionShared.value; - const dur = audio.durationShared.value; - if (dur > 0) { - playAllProgress.value = (pos / dur) * 100; - } - if (audio.currentAudioId !== item.assetId || !audio.isPlaying) { - break; - } - } - } - + await runPlayAll(startIndex); debugLog('โœ… Finished playing all assets'); - playAllProgress.value = 0; - setCurrentlyPlayingAssetId(null); - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); } catch (error) { console.error('โŒ Error playing all assets:', error); - playAllProgress.value = 0; - setCurrentlyPlayingAssetId(null); - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); + await stopPlayAll(); } - }, [assets, audio, insertionIndex, playAllProgress]); + }, [assets.length, insertionIndex, runPlayAll, stopPlayAll]); // ============================================================================ // RECORDING HANDLERS @@ -1472,13 +1463,11 @@ const RecordingViewSimplified = ({ const stableHandleRenameAsset = React.useCallback(handleRenameAsset, [ handleRenameAsset ]); - // Memoized render function for LegendList // OPTIMIZED: No audioContext.position dependency - progress now uses SharedValues! // This eliminates 10 re-renders/second during audio playback const renderAssetItem = React.useCallback( ({ item, index }: { item: UIAsset; index: number }) => { - // Check if this asset is playing individually OR if it's the currently playing asset during play-all const isThisAssetPlayingIndividually = audio.isPlaying && audio.currentAudioId === item.id; const isThisAssetPlayingInPlayAll = @@ -1492,11 +1481,6 @@ const RecordingViewSimplified = ({ // Duration from lazy-loaded metadata const duration = item.duration; - // Get custom progress for play-all mode (only for the currently playing asset) - const customProgress = isThisAssetPlayingInPlayAll - ? playAllProgress - : undefined; - return ( { if (isSelectionMode) { stableToggleSelect(item.id); @@ -1532,7 +1515,6 @@ const RecordingViewSimplified = ({ audio.currentAudioId, isPlayAllRunning, currentlyPlayingAssetId, - playAllProgress, // audioContext.position REMOVED - uses SharedValues now! // audioContext.duration REMOVED - not needed for render selectedAssetIds, @@ -1552,7 +1534,6 @@ const RecordingViewSimplified = ({ // This eliminates re-creating all children 10+ times per second during audio playback const wheelChildren = React.useMemo(() => { return assetsForLegendList.map((item, index) => { - // Check if this asset is playing individually OR if it's the currently playing asset during play-all const isThisAssetPlayingIndividually = audio.isPlaying && audio.currentAudioId === item.id; const isThisAssetPlayingInPlayAll = @@ -1567,11 +1548,6 @@ const RecordingViewSimplified = ({ // Duration from lazy-loaded metadata const duration = item.duration; - // Get custom progress for play-all mode (only for the currently playing asset) - const customProgress = isThisAssetPlayingInPlayAll - ? playAllProgress - : undefined; - return ( { if (isSelectionMode) { stableToggleSelect(item.id); @@ -1609,7 +1584,6 @@ const RecordingViewSimplified = ({ audio.currentAudioId, isPlayAllRunning, currentlyPlayingAssetId, - playAllProgress, // audioContext.position REMOVED - uses SharedValues now! // audioContext.duration REMOVED - not needed for render selectedAssetIds, From c3d4a77f2e594790ed01866b85a0df2af0ae66d4 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:18:31 -0600 Subject: [PATCH 053/143] chore: style changes --- views/new/BibleAssetsView.tsx | 2 +- views/new/NextGenAssetsView.tsx | 2 +- views/new/NextGenProjectsView.tsx | 2 +- views/new/ProjectDirectoryView.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index d98a138ee..79d3b419e 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -3433,7 +3433,7 @@ export default function BibleAssetsView() { const projectName = currentProjectData?.name || ''; return ( - + {/* Left side: Quest name + action buttons */} diff --git a/views/new/NextGenAssetsView.tsx b/views/new/NextGenAssetsView.tsx index aabe298e6..085fe1668 100644 --- a/views/new/NextGenAssetsView.tsx +++ b/views/new/NextGenAssetsView.tsx @@ -1237,7 +1237,7 @@ export default function NextGenAssetsView() { const projectName = currentProjectData?.name || ''; return ( - + {t('assets')} diff --git a/views/new/NextGenProjectsView.tsx b/views/new/NextGenProjectsView.tsx index 8cc68257a..09c68241e 100644 --- a/views/new/NextGenProjectsView.tsx +++ b/views/new/NextGenProjectsView.tsx @@ -743,7 +743,7 @@ export default function NextGenProjectsView() { snapPoints={[700]} enableDynamicSizing={false} > - + {/* Tabs */} + From cbaa7a6ae2221f59a3cc1135ab50a1e7751723ef Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:33:35 -0600 Subject: [PATCH 054/143] chore: style changes --- views/NotificationsView.tsx | 30 +++++++---------------------- views/new/BibleChapterList.tsx | 35 ++++++++++++++++++++++------------ 2 files changed, 30 insertions(+), 35 deletions(-) diff --git a/views/NotificationsView.tsx b/views/NotificationsView.tsx index 41952d208..392dc76cc 100644 --- a/views/NotificationsView.tsx +++ b/views/NotificationsView.tsx @@ -39,8 +39,6 @@ import { useAppNavigation } from '@/hooks/useAppNavigation'; import { useLocalization } from '@/hooks/useLocalization'; import { useNetworkStatus } from '@/hooks/useNetworkStatus'; import { useLocalStore } from '@/store/localStore'; -import { colors } from '@/styles/theme'; -import { getThemeColor } from '@/utils/styleUtils'; import { useHybridData } from '@/views/new/useHybridData'; import RNAlert from '@blazejkustra/react-native-alert'; import { toCompilableQuery } from '@powersync/drizzle-driver'; @@ -57,12 +55,7 @@ import { XIcon } from 'lucide-react-native'; import React, { useState } from 'react'; -import { - ActivityIndicator, - RefreshControl, - ScrollView, - View -} from 'react-native'; +import { RefreshControl, ScrollView, View } from 'react-native'; interface NotificationItem { id: string; @@ -884,7 +877,7 @@ export default function NotificationsView() { {item.type === 'invite' @@ -961,7 +954,7 @@ export default function NotificationsView() { - {/* Overlay to make entire button pressable for download when needed */} - {needsDownload && !disabled && ( + {/* Overlay to make entire button pressable for download when needed (dark theme only) */} + {needsDownload && !disabled && isDarkColorScheme && ( Date: Thu, 12 Feb 2026 20:14:34 -0600 Subject: [PATCH 055/143] chore: update app version to 2.1.0 and fix typo in android release script --- app.config.ts | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app.config.ts b/app.config.ts index eb17987e6..fe1100ff0 100644 --- a/app.config.ts +++ b/app.config.ts @@ -53,7 +53,7 @@ export default ({ config }: ConfigContext): ExpoConfig => owner: 'eten-genesis', name: getAppName(appVariant), slug: 'langquest', - version: '2.0.13', + version: '2.1.0', orientation: 'portrait', icon: iconLight, scheme: getScheme(appVariant), diff --git a/package.json b/package.json index 5217e1372..e441bc360 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "rebuild-android": "git clean -xdf node_modules package-lock.json android ios && npm i && npx expo prebuild --platform android && cd android && gradlew clean && cd ..", "android": "expo run:android --variant debugOptimized --device", "android:preview": "npx cross-env EXPO_PUBLIC_APP_VARIANT=preview expo run:android --device --variant release", - "android:releasre": "npx cross-env EXPO_PUBLIC_APP_VARIANT=production expo run:android --device --variant release", + "android:release": "npx cross-env EXPO_PUBLIC_APP_VARIANT=production expo run:android --device --variant release", "ios": "expo run:ios --device", "ios:preview": "npx cross-env EXPO_PUBLIC_APP_VARIANT=preview expo run:ios --device --variant release", "ios:release": "npx cross-env EXPO_PUBLIC_APP_VARIANT=production expo run:ios --device --variant release", From f13eda48dd08bcbf77d819fc2f5c7ae647520bfa Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Thu, 12 Feb 2026 20:32:53 -0600 Subject: [PATCH 056/143] Add isPreferred: true to react-native-alert primary action buttons Mark primary action buttons (confirm, submit, delete, publish, merge, OK, etc.) as preferred in alert dialogs across the codebase. This improves UX by highlighting the default/preferred action in multi-button alerts. Updated alerts in: - BibleChapterList, NextGenAssetsView, BibleAssetsView - RecordingViewSimplified, BibleRecordingView - NextGenNewTranslationModal, AuthContext - SignInView, ResetPasswordView, ForgotPasswordView - AccountDeletedOverlay, AccountDeletionView, ProfileView - SettingsView, CorruptedAttachmentsView - PrivateAccessGate, ProjectMembershipModal - NewReportModal, TranscriptionEditModal, QuestTreeRow --- components/AccountDeletedOverlay.tsx | 1 + components/NewReportModal.tsx | 1 + components/PrivateAccessGate.tsx | 1 + components/ProjectMembershipModal.tsx | 5 +++++ components/TranscriptionEditModal.tsx | 2 +- contexts/AuthContext.tsx | 2 +- views/AccountDeletionView.tsx | 1 + views/CorruptedAttachmentsView.tsx | 2 ++ views/ForgotPasswordView.tsx | 1 + views/ProfileView.tsx | 4 ++++ views/ResetPasswordView.tsx | 1 + views/SettingsView.tsx | 1 + views/SignInView.tsx | 2 +- views/new/BibleAssetsView.tsx | 9 ++++++--- views/new/BibleChapterList.tsx | 1 + views/new/NextGenAssetsView.tsx | 7 ++++--- views/new/NextGenNewTranslationModal.tsx | 6 +++--- views/new/QuestTreeRow.tsx | 1 + views/new/recording/components/BibleRecordingView.tsx | 2 ++ .../new/recording/components/RecordingViewSimplified.tsx | 2 ++ 20 files changed, 40 insertions(+), 12 deletions(-) diff --git a/components/AccountDeletedOverlay.tsx b/components/AccountDeletedOverlay.tsx index 5ab46b548..47a7eb9a0 100644 --- a/components/AccountDeletedOverlay.tsx +++ b/components/AccountDeletedOverlay.tsx @@ -72,6 +72,7 @@ export function AccountDeletedOverlay() { RNAlert.alert(t('success'), t('accountRestoreSuccess'), [ { text: t('ok'), + isPreferred: true, onPress: () => { // Navigate to projects page after restore goToProjects(); diff --git a/components/NewReportModal.tsx b/components/NewReportModal.tsx index ee82a9472..455156213 100644 --- a/components/NewReportModal.tsx +++ b/components/NewReportModal.tsx @@ -92,6 +92,7 @@ export const ReportModal: React.FC = ({ { text: t('cancel'), style: 'cancel' }, { text: t('signIn') || 'Sign In', + isPreferred: true, onPress: () => { onClose(); setAuthView('sign-in'); diff --git a/components/PrivateAccessGate.tsx b/components/PrivateAccessGate.tsx index e87f6ca7d..4e54cd83e 100644 --- a/components/PrivateAccessGate.tsx +++ b/components/PrivateAccessGate.tsx @@ -325,6 +325,7 @@ export const PrivateAccessGate: React.FC = ({ { text: t('confirm'), style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { setIsSubmitting(true); diff --git a/components/ProjectMembershipModal.tsx b/components/ProjectMembershipModal.tsx index 6544699b2..7b8c08cb1 100644 --- a/components/ProjectMembershipModal.tsx +++ b/components/ProjectMembershipModal.tsx @@ -356,6 +356,7 @@ export const ProjectMembershipModal: React.FC = ({ { text: t('remove'), style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { try { @@ -392,6 +393,7 @@ export const ProjectMembershipModal: React.FC = ({ { text: t('cancel'), style: 'cancel' }, { text: t('confirm'), + isPreferred: true, onPress: () => { void (async () => { try { @@ -434,6 +436,7 @@ export const ProjectMembershipModal: React.FC = ({ { text: t('confirm'), style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { try { @@ -545,6 +548,7 @@ export const ProjectMembershipModal: React.FC = ({ { text: t('cancel'), style: 'cancel' }, { text: t('confirm'), + isPreferred: true, onPress: () => { void (async () => { setIsSubmitting(true); @@ -617,6 +621,7 @@ export const ProjectMembershipModal: React.FC = ({ { text: t('confirm'), style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { setIsSubmitting(true); diff --git a/components/TranscriptionEditModal.tsx b/components/TranscriptionEditModal.tsx index c737988cb..31d93f42a 100644 --- a/components/TranscriptionEditModal.tsx +++ b/components/TranscriptionEditModal.tsx @@ -132,7 +132,7 @@ export default function TranscriptionEditModal({ 'You have unsaved changes. Are you sure you want to close?', [ { text: t('cancel') || 'Cancel', style: 'cancel' }, - { text: 'Discard', style: 'destructive', onPress: onClose } + { text: 'Discard', style: 'destructive', isPreferred: true, onPress: onClose } ] ); } else { diff --git a/contexts/AuthContext.tsx b/contexts/AuthContext.tsx index e910abcef..64be070ef 100644 --- a/contexts/AuthContext.tsx +++ b/contexts/AuthContext.tsx @@ -187,7 +187,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { RNAlert.alert( 'Initialization Error', 'Failed to initialize the app. Please try logging out and back in.', - [{ text: 'OK' }] + [{ text: 'OK', isPreferred: true }] ); } }; diff --git a/views/AccountDeletionView.tsx b/views/AccountDeletionView.tsx index b5168342d..f5a9c024b 100644 --- a/views/AccountDeletionView.tsx +++ b/views/AccountDeletionView.tsx @@ -123,6 +123,7 @@ export default function AccountDeletionView() { { text: t('deleteAccount'), style: 'destructive', + isPreferred: true, onPress: () => { void deleteAccount(); } diff --git a/views/CorruptedAttachmentsView.tsx b/views/CorruptedAttachmentsView.tsx index e3a3205e8..413afe3fc 100644 --- a/views/CorruptedAttachmentsView.tsx +++ b/views/CorruptedAttachmentsView.tsx @@ -83,6 +83,7 @@ export default function CorruptedAttachmentsView() { { text: t('clean'), style: 'destructive', + isPreferred: true, onPress: async () => { try { setCleaningIds((prev) => new Set(prev).add(attachmentId)); @@ -137,6 +138,7 @@ export default function CorruptedAttachmentsView() { { text: t('clean'), style: 'destructive', + isPreferred: true, onPress: async () => { try { setCleaningAll(true); diff --git a/views/ForgotPasswordView.tsx b/views/ForgotPasswordView.tsx index 984eef94c..9e9f3eb84 100644 --- a/views/ForgotPasswordView.tsx +++ b/views/ForgotPasswordView.tsx @@ -59,6 +59,7 @@ export default function ForgotPasswordView({ RNAlert.alert(t('success'), t('checkEmailForResetLink'), [ { text: t('ok'), + isPreferred: true, onPress: () => safeNavigate(() => onNavigate('sign-in', { email: form.getValues('email') }) diff --git a/views/ProfileView.tsx b/views/ProfileView.tsx index da0947619..a3f69ba1b 100644 --- a/views/ProfileView.tsx +++ b/views/ProfileView.tsx @@ -260,6 +260,7 @@ export default function ProfileView() { { text: t('confirm'), style: 'destructive', + isPreferred: true, onPress: () => { void seedDatabase(); } @@ -283,6 +284,7 @@ export default function ProfileView() { { text: t('confirm'), style: 'destructive', + isPreferred: true, onPress: () => { void deleteDatabase(); } @@ -307,6 +309,7 @@ export default function ProfileView() { { text: t('confirm'), style: 'destructive', + isPreferred: true, onPress: () => { void deleteAttachments(); } @@ -330,6 +333,7 @@ export default function ProfileView() { { text: t('cancel'), style: 'cancel' }, { text: t('confirm'), + isPreferred: true, onPress: () => { void clearDegradedModeState(); } diff --git a/views/ResetPasswordView.tsx b/views/ResetPasswordView.tsx index 0be7a98be..dc95ea2c8 100644 --- a/views/ResetPasswordView.tsx +++ b/views/ResetPasswordView.tsx @@ -62,6 +62,7 @@ export default function ResetPasswordView() { RNAlert.alert(t('success'), t('passwordResetSuccess'), [ { text: t('ok'), + isPreferred: true, // Sign out and let auth context handle navigation to sign in // ** It is needed to wait the keyboard be hidden, otherwise can cause some components to be flickering // at next page. diff --git a/views/SettingsView.tsx b/views/SettingsView.tsx index 0bf82a36c..26014bf0c 100644 --- a/views/SettingsView.tsx +++ b/views/SettingsView.tsx @@ -149,6 +149,7 @@ export default function SettingsView() { { text: t('clear'), style: 'destructive', + isPreferred: true, onPress: () => { // TODO: Implement cache clearing logic RNAlert.alert(t('success'), t('cacheClearedSuccess')); diff --git a/views/SignInView.tsx b/views/SignInView.tsx index c6dc711b5..20dc7a9d7 100644 --- a/views/SignInView.tsx +++ b/views/SignInView.tsx @@ -76,7 +76,7 @@ export default function SignInView({ ? error.message : t('signInError') || 'Sign in failed', [ - { text: t('ok') || 'OK' }, + { text: t('ok') || 'OK', isPreferred: true }, { text: t('newUser'), onPress: () => diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index 79d3b419e..c1253877f 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -1089,6 +1089,7 @@ export default function BibleAssetsView() { { text: 'Delete', style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { try { @@ -1138,6 +1139,7 @@ export default function BibleAssetsView() { { text: 'Merge', style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { try { @@ -3190,10 +3192,10 @@ export default function BibleAssetsView() { console.log('โœ… [Publish Quest] All queries invalidated'); - RNAlert.alert(t('success'), result.message, [{ text: t('ok') }]); + RNAlert.alert(t('success'), result.message, [{ text: t('ok'), isPreferred: true }]); } else { RNAlert.alert(t('error'), result.message || t('error'), [ - { text: t('ok') } + { text: t('ok'), isPreferred: true } ]); } }, @@ -3202,7 +3204,7 @@ export default function BibleAssetsView() { RNAlert.alert( t('error'), error instanceof Error ? error.message : t('failedCreateTranslation'), - [{ text: t('ok') }] + [{ text: t('ok'), isPreferred: true }] ); } }); @@ -3609,6 +3611,7 @@ export default function BibleAssetsView() { { text: t('publish'), style: 'default', + isPreferred: true, onPress: () => { publishQuest(); } diff --git a/views/new/BibleChapterList.tsx b/views/new/BibleChapterList.tsx index 94d86f0d4..b78bd63d8 100644 --- a/views/new/BibleChapterList.tsx +++ b/views/new/BibleChapterList.tsx @@ -555,6 +555,7 @@ export function BibleChapterList({ }, { text: t('confirm'), + isPreferred: true, onPress: () => { void (async () => { setCreatingChapter(chapterNum); diff --git a/views/new/NextGenAssetsView.tsx b/views/new/NextGenAssetsView.tsx index 085fe1668..bdfb93fc8 100644 --- a/views/new/NextGenAssetsView.tsx +++ b/views/new/NextGenAssetsView.tsx @@ -1029,10 +1029,10 @@ export default function NextGenAssetsView() { console.log('โœ… [Publish Quest] All queries invalidated'); - RNAlert.alert(t('success'), result.message, [{ text: t('ok') }]); + RNAlert.alert(t('success'), result.message, [{ text: t('ok'), isPreferred: true }]); } else { RNAlert.alert(t('error'), result.message || t('error'), [ - { text: t('ok') } + { text: t('ok'), isPreferred: true } ]); } }, @@ -1041,7 +1041,7 @@ export default function NextGenAssetsView() { RNAlert.alert( t('error'), error instanceof Error ? error.message : t('failedCreateTranslation'), - [{ text: t('ok') }] + [{ text: t('ok'), isPreferred: true }] ); } }); @@ -1363,6 +1363,7 @@ export default function NextGenAssetsView() { { text: t('publish'), style: 'default', + isPreferred: true, onPress: () => { publishQuest(); } diff --git a/views/new/NextGenNewTranslationModal.tsx b/views/new/NextGenNewTranslationModal.tsx index 86adcec0f..714f6d889 100644 --- a/views/new/NextGenNewTranslationModal.tsx +++ b/views/new/NextGenNewTranslationModal.tsx @@ -585,7 +585,7 @@ export default function NextGenNewTranslationModal({ RNAlert.alert( 'No Source Text', 'There is no source text to translate. Please select an asset with content.', - [{ text: 'OK' }] + [{ text: 'OK', isPreferred: true }] ); return; } @@ -594,7 +594,7 @@ export default function NextGenNewTranslationModal({ RNAlert.alert( 'Offline', 'AI translation requires an internet connection. Please check your network and try again.', - [{ text: 'OK' }] + [{ text: 'OK', isPreferred: true }] ); return; } @@ -603,7 +603,7 @@ export default function NextGenNewTranslationModal({ RNAlert.alert( 'Missing Language Info', 'Target language information is not available. Please select a target language.', - [{ text: 'OK' }] + [{ text: 'OK', isPreferred: true }] ); return; } diff --git a/views/new/QuestTreeRow.tsx b/views/new/QuestTreeRow.tsx index b1b0ca389..f305b779e 100644 --- a/views/new/QuestTreeRow.tsx +++ b/views/new/QuestTreeRow.tsx @@ -73,6 +73,7 @@ export const QuestTreeRow: React.FC = ({ { text: t('cancel'), style: 'cancel' }, { text: t('downloadNow'), + isPreferred: true, onPress: () => { if (onDownloadClick) { onDownloadClick(quest.id); diff --git a/views/new/recording/components/BibleRecordingView.tsx b/views/new/recording/components/BibleRecordingView.tsx index 85c0fa9d7..990115233 100644 --- a/views/new/recording/components/BibleRecordingView.tsx +++ b/views/new/recording/components/BibleRecordingView.tsx @@ -2124,6 +2124,7 @@ const BibleRecordingView = ({ { text: 'Merge', style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { try { @@ -2224,6 +2225,7 @@ const BibleRecordingView = ({ { text: 'Delete', style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { try { diff --git a/views/new/recording/components/RecordingViewSimplified.tsx b/views/new/recording/components/RecordingViewSimplified.tsx index e458039c1..fd6e58bf5 100644 --- a/views/new/recording/components/RecordingViewSimplified.tsx +++ b/views/new/recording/components/RecordingViewSimplified.tsx @@ -1599,6 +1599,7 @@ const RecordingViewSimplified = ({ { text: t('merge'), style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { try { @@ -1693,6 +1694,7 @@ const RecordingViewSimplified = ({ { text: t('delete'), style: 'destructive', + isPreferred: true, onPress: () => { void (async () => { try { From 0b29b0d27ae15ea45ee308fc3f05e9d2da08c424 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Thu, 12 Feb 2026 23:55:27 -0800 Subject: [PATCH 057/143] fussed with animation of audio progress bar for merged clips --- contexts/AudioContext.tsx | 202 +++++++++++++++++++++++++++++--------- 1 file changed, 155 insertions(+), 47 deletions(-) diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index 7134477c9..7f8903bd3 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -58,10 +58,16 @@ const AudioContext = createContext(undefined); export function AudioProvider({ children }: { children: React.ReactNode }) { // Hybrid progress model: + // - Get duration for a segment or segment sequence + // and use that to set the duration for audio progress bar animation // - sparse native status callbacks for truth/corrections // - continuous UI-thread timing for smooth movement const STATUS_UPDATE_INTERVAL_MS = 5000; const DRIFT_CORRECTION_THRESHOLD_MS = 80; + // This is a timing adjustment per segment for a multi-segment sequence. + // Total padding budget is: + // segmentCount * MERGED_SEGMENT_PADDING_MS. + const MERGED_SEGMENT_PADDING_MS = 500; //this seems way to high, but it is working on my phone // How often to push React state (triggers re-renders). Keep low to reduce // JS-thread pressure โ€” progress bars use SharedValues, not React state. const REACT_STATE_THROTTLE_MS = 100; @@ -81,6 +87,12 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const currentAudioIdRef = useRef(null); const isPlayingRef = useRef(false); const isAdvancingSegmentRef = useRef(false); + const useSequenceLevelProgressRef = useRef(false); + const playbackSessionRef = useRef(0); + const preloadedSegmentRef = useRef<{ + index: number; + sound: Audio.Sound; + } | null>(null); const animationStartWallClockMsRef = useRef(null); const animationStartPositionMsRef = useRef(0); const animationTargetPositionMsRef = useRef(0); @@ -165,6 +177,74 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { return cumulativeDuration; }; + const totalSequenceDuration = () => + segmentDurations.current.reduce((sum, d) => sum + d, 0); + + const mergedPaddingForRemainingSegments = () => { + // "Remaining" means segments not yet loaded. + const remaining = Math.max( + 0, + sequenceSegments.current.length - (currentSequenceIndex.current + 1) + ); + return remaining * MERGED_SEGMENT_PADDING_MS; + }; + + const unloadPreloadedSegment = async () => { + const preloaded = preloadedSegmentRef.current; + preloadedSegmentRef.current = null; + if (!preloaded) return; + try { + preloaded.sound.setOnPlaybackStatusUpdate(null); + await preloaded.sound.unloadAsync(); + } catch { + // Ignore preload unload errors + } + }; + + const preloadSegmentAtIndex = async (index: number, sessionId: number) => { + if (!useSequenceLevelProgressRef.current) return; + if (index < 0 || index >= sequenceSegments.current.length) return; + if (sessionId !== playbackSessionRef.current) return; + + const existing = preloadedSegmentRef.current; + if (existing?.index === index) return; + + await unloadPreloadedSegment(); + if (sessionId !== playbackSessionRef.current) return; + + const segment = sequenceSegments.current[index]; + if (!segment) return; + + try { + const { sound } = await Audio.Sound.createAsync( + { uri: segment.uri }, + { shouldPlay: false } + ); + await sound.setProgressUpdateIntervalAsync(STATUS_UPDATE_INTERVAL_MS); + + const shouldSeek = segment.startMs != null && segment.startMs > 0; + if (shouldSeek) { + await sound.setPositionAsync(segment.startMs!, { + toleranceMillisBefore: 0, + toleranceMillisAfter: 0 + }); + } + + if (sessionId !== playbackSessionRef.current) { + try { + await sound.unloadAsync(); + } catch { + // Ignore stale preload unload errors + } + return; + } + + preloadedSegmentRef.current = { index, sound }; + } catch { + // Preload failures are non-fatal; segment will load on demand. + } + }; + const startPredictedProgressAnimation = ( fromTotalPosition: number, targetTotalPosition: number @@ -197,9 +277,11 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { }; const stopCurrentSound = async () => { + playbackSessionRef.current += 1; const finishingAudioId = currentAudioIdRef.current; clearStatusListener(); isAdvancingSegmentRef.current = false; + useSequenceLevelProgressRef.current = false; resetPredictedProgress(); // Reset sequence state @@ -213,6 +295,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { await soundRef.current.unloadAsync(); soundRef.current = null; } + await unloadPreloadedSegment(); setIsPlayingState(false); setCurrentAudioIdState(null); @@ -243,7 +326,10 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } } else { // Sequence finished โ€” reset all state + playbackSessionRef.current += 1; isAdvancingSegmentRef.current = false; + useSequenceLevelProgressRef.current = false; + await unloadPreloadedSegment(); resetPredictedProgress(); sequenceSegments.current = []; currentSequenceIndex.current = 0; @@ -282,13 +368,23 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { }); const shouldSeek = segment.startMs != null && segment.startMs > 0; + const segmentIndex = currentSequenceIndex.current; + const preloaded = preloadedSegmentRef.current; + const canUsePreloaded = preloaded?.index === segmentIndex; try { - const { sound } = await Audio.Sound.createAsync( - { uri: segment.uri }, - { shouldPlay: !shouldSeek } - ); - await sound.setProgressUpdateIntervalAsync(STATUS_UPDATE_INTERVAL_MS); + let sound: Audio.Sound; + if (canUsePreloaded) { + sound = preloaded.sound; + preloadedSegmentRef.current = null; + } else { + const created = await Audio.Sound.createAsync( + { uri: segment.uri }, + { shouldPlay: false } + ); + sound = created.sound; + await sound.setProgressUpdateIntervalAsync(STATUS_UPDATE_INTERVAL_MS); + } soundRef.current = sound; setIsPlayingState(true); @@ -297,13 +393,13 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { setCurrentAudioIdState(audioId); } - // Seek to startMs before starting playback - if (shouldSeek) { + // Seek to startMs before starting playback (unless preloaded segment + // was already seeked during background preload). + if (shouldSeek && !canUsePreloaded) { await sound.setPositionAsync(segment.startMs!, { toleranceMillisBefore: 0, toleranceMillisAfter: 0 }); - await sound.playAsync(); } // Get initial status to set the duration @@ -320,20 +416,17 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { segmentDurations.current[currentSequenceIndex.current] = effectiveDuration; - // Calculate total duration across all segments - const totalDuration = segmentDurations.current.reduce( - (sum, d) => sum + d, - 0 - ); - setDuration(totalDuration); - durationSharedRef.current.value = totalDuration; - - const cumulativeBefore = cumulativeDurationBeforeCurrent(); - const targetTotal = cumulativeBefore + effectiveDuration; - // Start deterministic motion immediately from expected segment start. - // We intentionally ignore real-position reconciliation until the first - // full status interval has elapsed to avoid rough startup hitching. - startPredictedProgressAnimation(cumulativeBefore, targetTotal); + // Single-segment playback animates per segment. + // Merged sequences start from playSound() and keep a single timeline + // (no per-segment retiming). + if (!useSequenceLevelProgressRef.current) { + const totalDuration = totalSequenceDuration(); + setDuration(totalDuration); + durationSharedRef.current.value = totalDuration; + const cumulativeBefore = cumulativeDurationBeforeCurrent(); + const targetTotal = cumulativeBefore + effectiveDuration; + startPredictedProgressAnimation(cumulativeBefore, targetTotal); + } // Guard: block all status-callback position writes for 1 second. // This lets the deterministic withTiming animation run uninterrupted // through the startup burst of eager expo-av callbacks. @@ -350,10 +443,6 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const now = Date.now(); const guarded = now < statusGuardUntilMsRef.current; - console.log( - `[STATUS CB] posMillis=${status.positionMillis} guarded=${guarded} t=${now}` - ); - const currentSeg = sequenceSegments.current[currentSequenceIndex.current]; const cumulativeDuration = cumulativeDurationBeforeCurrent(); @@ -368,24 +457,28 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // real-position hard-sets from these early callbacks. if (!guarded) { cumulativePositionSharedRef.current.value = totalPosition; - if ( - now - lastReactStateUpdateMs.current >= - REACT_STATE_THROTTLE_MS - ) { + if (now - lastReactStateUpdateMs.current >= REACT_STATE_THROTTLE_MS) { lastReactStateUpdateMs.current = now; setPositionState(totalPosition); } - const currentTargetTotal = - cumulativeDuration + - (segmentDurations.current[currentSequenceIndex.current] || 0); - const predicted = predictedPositionNow(); - const drift = - predicted == null - ? Number.POSITIVE_INFINITY - : totalPosition - predicted; - if (Math.abs(drift) >= DRIFT_CORRECTION_THRESHOLD_MS) { - startPredictedProgressAnimation(totalPosition, currentTargetTotal); + // For merged playback, keep one continuous timeline and do not + // restart timing at segment boundaries. + if (!useSequenceLevelProgressRef.current) { + const currentTargetTotal = + cumulativeDuration + + (segmentDurations.current[currentSequenceIndex.current] || 0); + const predicted = predictedPositionNow(); + const drift = + predicted == null + ? Number.POSITIVE_INFINITY + : totalPosition - predicted; + if (Math.abs(drift) >= DRIFT_CORRECTION_THRESHOLD_MS) { + startPredictedProgressAnimation( + totalPosition, + currentTargetTotal + ); + } } } @@ -408,7 +501,6 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { if (status.didJustFinish) { if (isAdvancingSegmentRef.current) return; isAdvancingSegmentRef.current = true; - resetPredictedProgress(); clearStatusListener(); void sound.unloadAsync(); soundRef.current = null; @@ -417,6 +509,15 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { void playNextInSequence(); } }); + + await sound.playAsync(); + + // Preload exactly one segment ahead while current segment is playing. + if (useSequenceLevelProgressRef.current) { + const currentSession = playbackSessionRef.current; + const nextIndex = segmentIndex + 1; + void preloadSegmentAtIndex(nextIndex, currentSession); + } } catch { setIsPlayingState(false); setCurrentAudioIdState(null); @@ -440,6 +541,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // Stop any current playback await stopCurrentSound(); + playbackSessionRef.current += 1; // Always set up sequence state โ€” even for single segments โ€” so that // trim enforcement (startMs/endMs) works via startPositionTracking. @@ -447,6 +549,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { currentSequenceIndex.current = 0; segmentDurations.current = new Array(segments.length).fill(0); cumulativePositionSharedRef.current.value = 0; + useSequenceLevelProgressRef.current = segments.length > 1; // For multi-segment sequences, preload durations for accurate total display. // Single segments get their duration set inside playSegment. @@ -466,14 +569,17 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } } - const totalDuration = segmentDurations.current.reduce( - (sum, d) => sum + d, - 0 - ); - setDuration(totalDuration); - durationSharedRef.current.value = totalDuration; + const totalDuration = totalSequenceDuration(); + const mergedTimelineDuration = + totalDuration + segments.length * MERGED_SEGMENT_PADDING_MS; + setDuration(mergedTimelineDuration); + durationSharedRef.current.value = mergedTimelineDuration; + if (mergedTimelineDuration > 0) { + startPredictedProgressAnimation(0, mergedTimelineDuration); + } } catch { // Failed to preload durations, will calculate on the fly + useSequenceLevelProgressRef.current = false; } } @@ -492,11 +598,13 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // Ensure cleanup when the component unmounts React.useEffect(() => { return () => { + playbackSessionRef.current += 1; resetPredictedProgress(); clearStatusListener(); if (soundRef.current) { void soundRef.current.unloadAsync(); } + void unloadPreloadedSegment(); }; }, []); From 340da6dbbcbf95835dd56b0caf6cccbd6e7641a8 Mon Sep 17 00:00:00 2001 From: Keean <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:00:01 -0600 Subject: [PATCH 058/143] Jesus/animate button (#653) * refactor: Remove pressto dependency and update button component implementation - Eliminated the `pressto` package from `package.json` and refactored the button component to use native React Native components directly, enhancing performance and reducing dependencies. - Updated the button's pressable logic to streamline event handling and improve code clarity. * Refactor: Improve button disabled state and component logic Fix: Correct null return in ProjectMembershipModal Refactor: Simplify Button component props and logic Fix: Ensure Combobox and RadioGroup disable correctly Co-authored-by: realdinozoid * refactor: Update button component implementation and enhance animation handling - Refactored button components across the application to utilize a unified Button component with improved pressable logic and animations using React Native Reanimated. - Replaced TouchableOpacity with the new Button component in various files, ensuring consistent styling and behavior. - Introduced custom easing functions for animations to enhance user experience. - Updated terms and conditions text handling in the Terms and Register views for better localization support. These changes aim to streamline button interactions and improve the overall UI responsiveness. * fix: Update import path for custom easing curves in animation guidelines - Changed the import path for custom easing curves from `tailwind.config.ts` to `@constants/animations.ts` to ensure correct usage with React Native Reanimated animations. * Initial commit of modified files from installation Co-authored-by: realdinozoid * Refactor: Update styling and remove unused code Co-authored-by: realdinozoid --------- Co-authored-by: Cursor Agent Co-authored-by: Keean --- .cursor/rules/animation-guidelines.mdc | 75 +++--- .cursor/rules/creating-components.mdc | 19 ++ app/terms.tsx | 47 ++-- components/AudioPlayer.tsx | 19 +- components/DownloadIndicator.tsx | 8 +- components/MiniAudioPlayer.tsx | 21 +- components/PasswordInput.tsx | 9 +- components/RadioSelect.tsx | 8 +- components/TranslationCard.tsx | 7 +- components/UpdateBanner.tsx | 7 +- components/questsComponents/QuestItem.tsx | 6 +- components/ui/button.tsx | 261 ++++++++++++++---- components/ui/text.tsx | 20 +- constants/animations.ts | 16 ++ package-lock.json | 315 ++++++++-------------- views/ForgotPasswordView.tsx | 2 +- views/RegisterView.tsx | 38 ++- views/SignInView.tsx | 24 +- 18 files changed, 517 insertions(+), 385 deletions(-) create mode 100644 constants/animations.ts diff --git a/.cursor/rules/animation-guidelines.mdc b/.cursor/rules/animation-guidelines.mdc index c89d21f8e..ab273a8a5 100644 --- a/.cursor/rules/animation-guidelines.mdc +++ b/.cursor/rules/animation-guidelines.mdc @@ -61,23 +61,28 @@ The goal is to make complex products accessible to newcomers without sacrificing A system of components housed within trays that expand, contract, and adapt in response to user actions: **Tray Initiation Rules:** + - Trays are initiated by the user (tapping buttons, icons, or opening notifications) - They can appear standalone on top of any content, or emerge from within other components like buttons **Height Variation Rule:** + - Each subsequent tray varies in height to make progression unmistakably clear - This constraint may require rewriting content or tweaking designs to make transitions apparent **Single Focus Rule:** + - Each tray is dedicated to a singular piece of content (like educational text) or a primary action (like completing a checklist) - Every tray has a title capturing its function and an icon for dismissal/navigation **Context Preservation:** + - Unlike full screen transitions that displace users, trays overlay content directly onto the current interface - Users aren't veering off courseโ€”they're diving deeper into their current context - Contextual continuity keeps flows feeling integrated rather than disjointed **When to Use Trays vs Full Screens:** + - Use trays for transient actions that don't need permanent display - Especially helpful for confirmation steps and warnings that appear at the right time - Trays can serve as starting points for elaborate flows that transition to full screen @@ -118,6 +123,7 @@ While speed is important, applying motion thoughtfully can enhance clarity and f **If a component is visible and will persist in the next phase, it should remain consistent.** Components should "travel" between screens rather than disappear and reappear. Examples: + - Wallet cards move seamlessly between screens - Empty states keep unchanged text constant when only a portion needs updating - The same element animates into its new position rather than fading out/in @@ -125,6 +131,7 @@ Examples: ### Connected State Transitions Create interactions where: + - Trays morph into full screen views - Buttons glide across trays - Buttons morph into trays and back again @@ -142,6 +149,7 @@ For actions where understanding is crucial (like sending money): ### The Cost of Removing Fluidity Without fluid animations: + - The sense of connection is lost - Contextual continuity disappears - Actions feel like "digital whiplash" @@ -162,6 +170,7 @@ Delight is about creating moments that resonate on a personal levelโ€”making sof ### The Foundation of Delight Before adding delightful moments: + - Achieve consistent polish everywhere first - Users notice when parts of an app are less polished - Every part of the app deserves the same holistic design approach @@ -173,11 +182,11 @@ Before adding delightful moments: The potential for delight increases as feature usage frequency decreases: -| Feature Frequency | Delight Strategy | -|------------------|------------------| +| Feature Frequency | Delight Strategy | +| -------------------------- | ------------------------------------------------------------ | | Daily use (sending tokens) | Focus on small, efficient touches that don't become tiresome | -| Occasional use (settings) | Add satisfying interactions that reward exploration | -| Rare use (wallet setup) | Create memorable, celebration-worthy moments | +| Occasional use (settings) | Add satisfying interactions that reward exploration | +| Rare use (wallet setup) | Create memorable, celebration-worthy moments | **Why this works:** The "specialness of a moment" generally decreases with repeated encounters. Rare features benefit most from delightful surprises. @@ -188,6 +197,7 @@ The potential for delight increases as feature usage frequency decreases: - The discovery process itself creates delight **Examples:** + - QR code screen: Tapping triggers a gentle ripple effect - Swiping across QR code reveals a sequin-like transformation - Entering an amount exceeding balance triggers a playful easter egg @@ -197,31 +207,35 @@ The potential for delight increases as feature usage frequency decreases: Match delight intensity to feature frequency: **High-frequency features (daily use):** + - Commas visually shift place-to-place when inputting numbers - Small, efficient touches that don't become annoying **Medium-frequency features:** + - Drag-and-drop with attractive stacking animations - Satisfying rather than tedious interactions **Low-frequency features (rare use):** + - Wallet setup: Interactive animation marking the significant occasion - Backup completion: Confetti fills the screen as reward - Trash items: Visually tumble into a skeuomorphic trash can with sound effects ### Specific Delight Patterns -| Feature | Delightful Touch | -|---------|------------------| -| First-time browser | Animated arrow guides toward creating a new tab | -| Reordering items | Smooth drag-and-drop with stacking animations | -| Stealth mode | Gentle shimmer effect signals hidden-but-updating values | -| Price charts | Arrow flips direction alongside changing numbers | -| Security tasks | Confetti rewards completion of essential tasks | +| Feature | Delightful Touch | +| ------------------ | -------------------------------------------------------- | +| First-time browser | Animated arrow guides toward creating a new tab | +| Reordering items | Smooth drag-and-drop with stacking animations | +| Stealth mode | Gentle shimmer effect signals hidden-but-updating values | +| Price charts | Arrow flips direction alongside changing numbers | +| Security tasks | Confetti rewards completion of essential tasks | ### The Purpose of Delight Delightful moments are not just entertainmentโ€”they: + - Value and reward the user's time and emotional investment - Transform mundane interactions into memorable ones - Create a familiar, friendly companion rather than just a tool @@ -245,21 +259,7 @@ Delightful moments are not just entertainmentโ€”they: - **Consider Ease-In-Out:** Appropriate for elements that move and scale but stay on the screen. - **Avoid Linear:** Linear animations feel unnatural and lack energy; avoid them in 99% of cases. -Use the following custom easing curves for a polished feel: - -```css -/* Standard ease-out - good default for most animations */ ---ease-out: cubic-bezier(0.16, 1, 0.3, 1); - -/* Smooth ease-in-out for symmetrical animations */ ---ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); - -/* Snappy ease for quick feedback */ ---ease-snappy: cubic-bezier(0.2, 0, 0, 1); - -/* Spring-like bounce */ ---ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); -``` +Use these Custom easing curves for a polished feel exported from `@constants/animations.ts` - import `easeOut`, `easeInOut`, `easeSnappy`, or `easeSpring` for use with React Native Reanimated animations. ### Button Press Feedback @@ -426,19 +426,16 @@ For interactive elements, spring physics feel more natural than duration-based a ### Accessibility -- **Respect User Preferences:** Use media queries like `prefers-reduced-motion` to disable or reduce animations for users who prefer it. +- **Respect User Preferences:** Use React Native Reanimated's reduced motion functionality to respect system accessibility settings. All animations should respect the user's reduced motion preferences by default. -```css -@media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - } -} -``` +React Native Reanimated provides: + +- `ReduceMotion` enum (`System`, `Always`, `Never`) for configuring animation behavior +- `reduceMotion` option in animation functions (`withTiming`, `withSpring`, `withDelay`, etc.) +- `.reduceMotion()` method on layout animations (entering/exiting animations) +- `useReducedMotion()` hook for conditional animation logic + +**Reference:** See the [React Native Reanimated Accessibility Guide](https://docs.swmansion.com/react-native-reanimated/docs/guides/accessibility/) for complete documentation, examples, and implementation details. --- @@ -463,6 +460,7 @@ For interactive elements, spring physics feel more natural than duration-based a ### Delight Audit When implementing a feature, ask: + 1. How frequently will users encounter this? 2. What's the appropriate intensity of delight? 3. Is there an opportunity for surprise/discovery? @@ -499,6 +497,7 @@ When implementing a feature, ask: ## Trade-offs and Commitment Creating this level of experience requires: + - Conscious trade-offs in development speed - Obsessive attention to detail - Deep understanding of app navigation architecture diff --git a/.cursor/rules/creating-components.mdc b/.cursor/rules/creating-components.mdc index 95e4704f7..1b3ec8174 100644 --- a/.cursor/rules/creating-components.mdc +++ b/.cursor/rules/creating-components.mdc @@ -189,6 +189,25 @@ While React Compiler can automatically memoize components, it has limitations an - **ESLint Disable Comments**: Never use `// eslint-disable-next-line` or similar ESLint disable comments in your code. These comments prevent React Compiler from properly analyzing and optimizing your code. If ESLint flags an issue, fix the underlying problem rather than suppressing the warning. For legitimate cases where a dependency should be excluded (like stable functions or refs), refactor the code to make the stability explicit rather than disabling the exhaustive-deps rule. +- **React Native Reanimated Shared Values**: When working with React Native Reanimated's `useSharedValue`, use the `.get()` and `.set()` methods instead of accessing `.value` directly. This is the React Compiler-compliant API that avoids the need for refs or workarounds. Example: + +```tsx +function App() { + const sv = useSharedValue(100); + + const animatedStyle = useAnimatedStyle(() => { + 'worklet'; + return { width: sv.get() * 100 }; + }); + + const handlePress = () => { + sv.set(withTiming(200, { duration: 300 })); + }; +} +``` + +This eliminates the need for refs (`useRef`) and `useEffect` when modifying shared values in inline handlers, as React Compiler treats direct `.value` access as immutable mutations. + ### Types and Props API - **TypeScript**: Ship with comprehensive types for maximum safety and autocomplete diff --git a/app/terms.tsx b/app/terms.tsx index 55f34f218..97c76b434 100644 --- a/app/terms.tsx +++ b/app/terms.tsx @@ -1,9 +1,5 @@ import { LanguageSelect } from '@/components/language-select'; -import { - Button, - ButtonPressableOpacity, - buttonTextVariants -} from '@/components/ui/button'; +import { Button } from '@/components/ui/button'; import { Checkbox } from '@/components/ui/checkbox'; import { Icon } from '@/components/ui/icon'; import { Label } from '@/components/ui/label'; @@ -18,6 +14,27 @@ import React, { useCallback, useState } from 'react'; import { Linking, Pressable, View } from 'react-native'; import { ScrollView } from 'react-native-gesture-handler'; +function AgreeToTermsText({ className }: { className?: string }) { + const { t } = useLocalization(); + const handleLinkPress = useCallback(() => { + void Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/terms`); + }, []); + + const baseText = t('agreeToTerms'); + const linkText = t('termsAndPrivacyLink'); + const textParts = baseText.split('{link}'); + + return ( + + {textParts[0]} + + {textParts[1]} + + ); +} + function Terms() { const router = useRouter(); const dateTermsAccepted = useLocalStore((state) => state.dateTermsAccepted); @@ -94,16 +111,12 @@ function Terms() { {t('termsDataInfo')} {t('analyticsInfo')} - - - {t('viewFullTerms')} - - - - - {t('viewFullPrivacy')} - - + + @@ -117,7 +130,7 @@ function Terms() { onPress={handleToggleTerms} accessibilityRole="checkbox" accessibilityState={{ checked: termsAccepted }} - accessibilityLabel={t('agreeToTerms')} + accessibilityLabel={`${t('agreeToTerms').replace('{link}', t('termsAndPrivacyLink'))}`} > - {t('agreeToTerms')} + diff --git a/components/AudioPlayer.tsx b/components/AudioPlayer.tsx index 0400b861a..f29b76f4e 100644 --- a/components/AudioPlayer.tsx +++ b/components/AudioPlayer.tsx @@ -1,3 +1,4 @@ +import { Button } from '@/components/ui/button'; import { Slider } from '@/components/ui/slider'; import { useAudio } from '@/contexts/AudioContext'; import { useLocalization } from '@/hooks/useLocalization'; @@ -5,13 +6,7 @@ import { colors, fontSizes, spacing } from '@/styles/theme'; import { Ionicons } from '@expo/vector-icons'; import { setAudioModeAsync } from 'expo-audio'; import React, { useEffect } from 'react'; -import { - ActivityIndicator, - StyleSheet, - Text, - TouchableOpacity, - View -} from 'react-native'; +import { ActivityIndicator, StyleSheet, Text, View } from 'react-native'; import Carousel from './Carousel'; interface AudioFile { @@ -87,7 +82,8 @@ const AudioPlayer: React.FC = ({ return ( - handlePlayPause(item.uri, item.id)} > @@ -96,9 +92,10 @@ const AudioPlayer: React.FC = ({ size={mini ? 24 : 48} color={colors.text} /> - + {onTranscribe && ( - = ({ color={colors.background} /> )} - + )} {!mini && {item.title}} diff --git a/components/DownloadIndicator.tsx b/components/DownloadIndicator.tsx index 427720efd..92550087f 100644 --- a/components/DownloadIndicator.tsx +++ b/components/DownloadIndicator.tsx @@ -1,10 +1,11 @@ +import { Button } from '@/components/ui/button'; import { useAuth } from '@/contexts/AuthContext'; import { useNetworkStatus } from '@/hooks/useNetworkStatus'; import { storage } from '@/utils/storage'; import { cn, useThemeColor } from '@/utils/styleUtils'; import { CircleArrowDownIcon, CircleCheckIcon } from 'lucide-react-native'; import React, { useState } from 'react'; -import { ActivityIndicator, TouchableOpacity } from 'react-native'; +import { ActivityIndicator } from 'react-native'; import { DownloadConfirmationModal } from './DownloadConfirmationModal'; import { OfflineUndownloadWarning } from './OfflineUndownloadWarning'; import { Icon } from './ui/icon'; @@ -116,7 +117,8 @@ export const DownloadIndicator: React.FC = ({ return ( <> - = ({ ) : ( )} - + {/* Download confirmation modal */} {downloadType && stats && ( diff --git a/components/MiniAudioPlayer.tsx b/components/MiniAudioPlayer.tsx index 59f18beab..1998834bb 100644 --- a/components/MiniAudioPlayer.tsx +++ b/components/MiniAudioPlayer.tsx @@ -1,3 +1,4 @@ +import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; import { useAudio } from '@/contexts/AudioContext'; @@ -6,12 +7,7 @@ import { getThemeColor } from '@/utils/styleUtils'; import { Ionicons } from '@expo/vector-icons'; import { SparklesIcon } from 'lucide-react-native'; import React from 'react'; -import { - ActivityIndicator, - StyleSheet, - TouchableOpacity, - View -} from 'react-native'; +import { ActivityIndicator, StyleSheet, View } from 'react-native'; interface MiniAudioPlayerProps { id: string; @@ -60,15 +56,20 @@ export default function MiniAudioPlayer({ return ( - + {onTranscribe && ( - Aa )} - + )} ); diff --git a/components/PasswordInput.tsx b/components/PasswordInput.tsx index 3ed456566..44063f036 100644 --- a/components/PasswordInput.tsx +++ b/components/PasswordInput.tsx @@ -1,7 +1,8 @@ +import { Button } from '@/components/ui/button'; import { Ionicons } from '@expo/vector-icons'; import React, { useState } from 'react'; import type { StyleProp, ViewStyle } from 'react-native'; -import { StyleSheet, TextInput, TouchableOpacity, View } from 'react-native'; +import { StyleSheet, TextInput, View } from 'react-native'; interface PasswordInputProps { value: string; @@ -30,11 +31,11 @@ export const PasswordInput = ({ style={[styles.input, { color: style?.color }]} placeholderTextColor={placeholderTextColor} /> - { setShowPassword(!showPassword); }} - activeOpacity={1} style={styles.icon} > - + ); }; diff --git a/components/RadioSelect.tsx b/components/RadioSelect.tsx index 1c406b0f8..7066db4ac 100644 --- a/components/RadioSelect.tsx +++ b/components/RadioSelect.tsx @@ -1,6 +1,7 @@ +import { Button } from '@/components/ui/button'; import { colors } from '@/styles/theme'; import React from 'react'; -import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; +import { StyleSheet, Text, View } from 'react-native'; interface Option { label: string; @@ -29,7 +30,8 @@ export default function RadioSelect({ {options.map((option) => { const selected = value === option.value; return ( - onChange(option.value)} @@ -44,7 +46,7 @@ export default function RadioSelect({ {option.label} - + ); })} diff --git a/components/TranslationCard.tsx b/components/TranslationCard.tsx index 913732631..238722452 100644 --- a/components/TranslationCard.tsx +++ b/components/TranslationCard.tsx @@ -9,7 +9,8 @@ import type { WithSource } from '@/utils/dbUtils'; import { SHOW_DEV_ELEMENTS } from '@/utils/featureFlags'; import { cn } from '@/utils/styleUtils'; import { ThumbsDownIcon, ThumbsUpIcon } from 'lucide-react-native'; -import { TouchableOpacity, View } from 'react-native'; +import { View } from 'react-native'; +import { Button } from './ui/button'; import AudioPlayer from './AudioPlayer'; interface TranslationCardProps { @@ -46,7 +47,7 @@ export const TranslationCard = ({ }; return ( - + ); }; diff --git a/components/UpdateBanner.tsx b/components/UpdateBanner.tsx index 41ff044eb..eed35a616 100644 --- a/components/UpdateBanner.tsx +++ b/components/UpdateBanner.tsx @@ -5,7 +5,7 @@ import { useExpoUpdates } from '@/hooks/useExpoUpdates'; import { useLocalization } from '@/hooks/useLocalization'; import { CloudDownload, XIcon } from 'lucide-react-native'; import React from 'react'; -import { ActivityIndicator, TouchableOpacity, View } from 'react-native'; +import { ActivityIndicator, View } from 'react-native'; // DEV ONLY: Import mock for testing // To test OTA updates in development, uncomment the next 2 lines: @@ -71,13 +71,14 @@ export function UpdateBanner() { )} - - + ); diff --git a/components/questsComponents/QuestItem.tsx b/components/questsComponents/QuestItem.tsx index 3a9919536..25f29ed14 100644 --- a/components/questsComponents/QuestItem.tsx +++ b/components/questsComponents/QuestItem.tsx @@ -1,9 +1,9 @@ import { QuestCard } from '@/components/QuestCard'; +import { Button } from '@/components/ui/button'; import type { Project } from '@/database_services/projectService'; import type { Quest } from '@/database_services/questService'; import type { Tag } from '@/database_services/tagService'; import React, { useCallback } from 'react'; -import { TouchableOpacity } from 'react-native'; // Memoized quest item component for better performance @@ -24,9 +24,9 @@ export const QuestItem = React.memo( if (!project) return null; return ( - + ); } ); diff --git a/components/ui/button.tsx b/components/ui/button.tsx index 6a298e70b..46942d464 100644 --- a/components/ui/button.tsx +++ b/components/ui/button.tsx @@ -1,25 +1,35 @@ import { TextClassContext } from '@/components/ui/text'; +import { easeButton, easeOut } from '@/constants/animations'; import { cn, useThemeColor } from '@/utils/styleUtils'; import type { VariantProps } from 'class-variance-authority'; import { cva } from 'class-variance-authority'; -import type { BaseSyntheticEvent } from 'react'; import * as React from 'react'; -import { ActivityIndicator, Pressable, TouchableOpacity } from 'react-native'; +import type { GestureResponderEvent, Pressable } from 'react-native'; +import { ActivityIndicator, Pressable as RNPressable } from 'react-native'; +import Animated, { + useAnimatedReaction, + useAnimatedStyle, + useSharedValue, + withTiming +} from 'react-native-reanimated'; import * as Slot from './slot'; +const AnimatedPressable = Animated.createAnimatedComponent(RNPressable); + const buttonVariants = cva( - 'group flex items-center justify-center rounded-md web:ring-offset-background web:transition-[transform,color] web:focus-visible:outline-none web:focus-visible:ring-2 web:focus-visible:ring-ring web:focus-visible:ring-offset-2', + 'group flex items-center justify-center rounded-md web:ring-offset-background web:transition-[color] web:focus-visible:outline-none web:focus-visible:ring-2 web:focus-visible:ring-ring web:focus-visible:ring-offset-2', { variants: { variant: { - default: 'bg-primary active:opacity-90 web:hover:opacity-90', - destructive: 'bg-destructive active:opacity-90 web:hover:opacity-90', + default: 'bg-primary web:hover:opacity-90', + destructive: 'bg-destructive web:hover:opacity-90', outline: 'border border-input bg-background active:bg-accent web:hover:bg-accent web:hover:text-accent-foreground', - secondary: 'bg-secondary active:opacity-80 web:hover:opacity-80', + secondary: 'bg-secondary web:hover:opacity-80', ghost: 'active:bg-accent web:hover:bg-accent web:hover:text-accent-foreground', - link: 'active:scale-100 web:underline-offset-4 web:hover:underline web:focus:underline' + link: 'web:underline-offset-4 web:hover:underline web:focus:underline', + plain: '' }, size: { sm: 'h-10 rounded-md px-3', @@ -29,7 +39,8 @@ const buttonVariants = cva( icon: 'size-10', 'icon-lg': 'size-12', 'icon-xl': 'size-14', - 'icon-2xl': 'size-16' + 'icon-2xl': 'size-16', + auto: '' } }, defaultVariants: { @@ -50,7 +61,8 @@ const buttonTextVariants = cva( secondary: 'text-secondary-foreground group-active:text-secondary-foreground', ghost: 'group-active:text-accent-foreground', - link: 'text-primary group-active:underline' + link: 'text-primary group-active:underline', + plain: 'text-primary' }, size: { default: '', @@ -60,7 +72,8 @@ const buttonTextVariants = cva( icon: '', 'icon-lg': '', 'icon-xl': '', - 'icon-2xl': '' + 'icon-2xl': '', + auto: '' } }, defaultVariants: { @@ -70,18 +83,178 @@ const buttonTextVariants = cva( } ); -const ButtonPressable = Pressable; +type ButtonPressableComponentProps = React.ComponentPropsWithoutRef< + typeof RNPressable +> & { + ref?: React.ComponentRef; + disabled?: boolean; + className?: string; +}; + +/** + * ButtonPressable - A Pressable component with built-in scale animation on press + * Handles scale animation on press (0.97 scale) with smooth transitions + * Uses react-native-reanimated on all platforms (native and web) + */ +const ButtonPressable = React.forwardRef< + React.ComponentRef, + ButtonPressableComponentProps +>(({ disabled, onPressIn, onPressOut, style, className, ...props }, ref) => { + const scale = useSharedValue(1); + const opacity = useSharedValue(disabled ? 0.5 : 1); + + useAnimatedReaction( + () => disabled, + (isDisabled) => { + opacity.set( + withTiming(isDisabled ? 0.5 : 1, { + duration: 160, + easing: easeButton + }) + ); + } + ); + + const animatedStyle = useAnimatedStyle(() => ({ + transform: [{ scale: scale.get() }], + opacity: opacity.get() + })); + + return ( + { + if (!disabled) { + scale.set( + withTiming(0.97, { + duration: 160, + easing: easeButton + }) + ); + opacity.set( + withTiming(0.9, { + duration: 160, + easing: easeButton + }) + ); + } + onPressIn?.(e); + }} + onPressOut={(e: GestureResponderEvent) => { + if (!disabled) { + scale.set( + withTiming(1, { + duration: 160, + easing: easeButton + }) + ); + opacity.set( + withTiming(1, { + duration: 160, + easing: easeButton + }) + ); + } + onPressOut?.(e); + }} + style={[animatedStyle, style]} + className={className} + {...props} + /> + ); +}); -const ButtonPressableOpacity = TouchableOpacity; +ButtonPressable.displayName = 'ButtonPressable'; -type ButtonPressableProps = Omit< - React.ComponentPropsWithoutRef, - 'onPress' +type PressableOpacityProps = React.ComponentPropsWithoutRef< + typeof RNPressable > & { + ref?: React.ComponentRef; + disabled?: boolean; + activeOpacity?: number; + className?: string; +}; + +/** + * PressableOpacity - A Pressable component with opacity animation on press + * Similar to TouchableOpacity but uses react-native-reanimated for better performance + * Uses opacity animation (default 0.7) on press with smooth transitions + */ +const PressableOpacity = React.forwardRef< + React.ComponentRef, + PressableOpacityProps +>( + ( + { + disabled, + activeOpacity = 0.4, // official TouchableOpacity default is 0.2 + onPressIn, + onPressOut, + style, + className, + ...props + }, + ref + ) => { + const opacity = useSharedValue(disabled ? 0.5 : 1); + + useAnimatedReaction( + () => disabled, + (isDisabled) => { + opacity.set( + withTiming(isDisabled ? 0.5 : 1, { + duration: 160, + easing: easeOut + }) + ); + } + ); + + const animatedStyle = useAnimatedStyle(() => ({ + opacity: opacity.get() + })); + + return ( + { + // if (!disabled) { + opacity.set( + withTiming(activeOpacity, { + duration: 160, + easing: easeOut + }) + ); + // } + onPressIn?.(e); + }} + onPressOut={(e: GestureResponderEvent) => { + // if (!disabled) { + opacity.set( + withTiming(1, { + duration: 160, + easing: easeOut + }) + ); + // } + onPressOut?.(e); + }} + style={[animatedStyle, style]} + className={className} + {...props} + /> + ); + } +); + +PressableOpacity.displayName = 'PressableOpacity'; + +type ButtonPressableProps = React.ComponentPropsWithoutRef & { ref?: React.ComponentRef; role?: string; disabled?: boolean; - onPress?: (e?: BaseSyntheticEvent) => void | Promise; }; type ButtonProps = ButtonPressableProps & @@ -104,6 +277,8 @@ const Button = React.forwardRef< loading, disabled, asChild, + onPressIn: _onPressIn, + onPressOut: _onPressOut, ...props }: ButtonProps, ref @@ -119,7 +294,8 @@ const Button = React.forwardRef< secondary: secondaryForeground, outline: accentForeground, ghost: accentForeground, - link: primaryForeground + link: primaryForeground, + plain: primaryForeground } as const; const isDisabled = disabled || loading; @@ -140,34 +316,35 @@ const Button = React.forwardRef< ); - const commonProps = { - className: cn( - 'flex flex-row items-center gap-2', - isDisabled && 'opacity-50 web:pointer-events-none web:cursor-default', - buttonVariants({ variant, size, className }) - ), - role: 'button' as const, - disabled: isDisabled, - ...props - }; + // Use PressableOpacity for link and plain variants (subtle opacity animation) + // Use ButtonPressable for other variants (scale animation) + const Component = asChild + ? Slot.Pressable + : variant === 'link' || variant === 'plain' + ? PressableOpacity + : ButtonPressable; return ( - {asChild ? ( - - {content} - - ) : ( - - {content} - - )} + + {content} + ); } @@ -175,11 +352,5 @@ const Button = React.forwardRef< Button.displayName = 'Button'; -export { - Button, - ButtonPressable, - ButtonPressableOpacity, - buttonTextVariants, - buttonVariants -}; +export { Button, ButtonPressable, buttonTextVariants, buttonVariants }; export type { ButtonProps }; diff --git a/components/ui/text.tsx b/components/ui/text.tsx index c2411d9a1..b6208cb36 100644 --- a/components/ui/text.tsx +++ b/components/ui/text.tsx @@ -45,7 +45,7 @@ const textVariants = cva( } }, defaultVariants: { - variant: 'default' + variant: 'default' // this is the default variant } } ); @@ -74,8 +74,8 @@ const TextClassContext = React.createContext(undefined); function Text({ className, - asChild = false, - variant = 'default', + asChild, + variant, ...props }: React.ComponentProps & TextVariantProps & @@ -87,22 +87,12 @@ function Text({ const { style, ...restProps } = props; const notoSansStyle = useNotoSans(mergedClassName, style); + const Component = asChild ? Slot.Text : RNText; // Render directly as RNText to avoid Slot navigation context issues during transitions // Only use Slot.Text when explicitly using asChild pattern - if (!asChild) { - return ( - - ); - } return ( - =10" @@ -2539,7 +2538,6 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, "license": "MIT" }, "node_modules/@blazejkustra/react-native-alert": { @@ -5133,14 +5131,14 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" @@ -5787,7 +5785,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -5862,7 +5859,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -5905,7 +5901,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -5921,7 +5916,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -5977,7 +5971,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -6007,7 +6000,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -6140,7 +6132,7 @@ "version": "0.17.0", "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@libsql/core": "^0.17.0", @@ -6154,7 +6146,7 @@ "version": "0.17.0", "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "js-base64": "^3.7.5" @@ -6167,7 +6159,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6181,7 +6172,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6192,7 +6182,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@libsql/isomorphic-ws": "^0.1.5", @@ -6205,7 +6195,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/ws": "^8.5.4", @@ -6219,7 +6209,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6233,7 +6222,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6247,7 +6235,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6261,7 +6248,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6275,7 +6261,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6289,7 +6274,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6303,7 +6287,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6436,7 +6419,7 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@nicolo-ribaudo/chokidar-2": { @@ -8213,7 +8196,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-clean": "20.1.1", @@ -8243,7 +8226,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8256,7 +8239,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8271,7 +8254,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8284,7 +8267,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8297,7 +8280,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config": "20.1.1", @@ -8321,7 +8304,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8334,7 +8317,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-android": "20.1.1", @@ -8348,7 +8331,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-apple": "20.1.1", @@ -8362,7 +8345,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-platform-apple": "20.1.1" @@ -8372,7 +8355,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8392,7 +8375,7 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "async-limiter": "~1.0.0" @@ -8402,7 +8385,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@vscode/sudo-prompt": "^9.0.0", @@ -8421,7 +8404,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8434,7 +8417,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "joi": "^17.2.1" @@ -8444,7 +8427,7 @@ "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": "^12.20.0 || >=14" @@ -8454,7 +8437,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -9247,7 +9230,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" @@ -9257,14 +9240,14 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/@sinclair/typebox": { @@ -10582,7 +10565,7 @@ "version": "9.3.2", "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@xmldom/xmldom": { @@ -10757,7 +10740,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "colorette": "^1.0.7", @@ -10769,7 +10752,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -10779,7 +10762,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" @@ -10847,7 +10830,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/arg": { @@ -11093,7 +11076,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -11112,7 +11095,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/async-lock": { @@ -11642,7 +11625,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -11655,7 +11637,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -11667,7 +11649,7 @@ "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -11692,7 +11674,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -11702,14 +11684,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/body-parser/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -11955,7 +11937,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -12010,7 +11991,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "devOptional": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -12035,7 +12015,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -12105,7 +12084,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true, "license": "MIT" }, "node_modules/class-variance-authority": { @@ -12124,7 +12102,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" @@ -12220,7 +12198,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -12278,7 +12255,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -12303,7 +12280,7 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/commander": { @@ -12434,7 +12411,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -12518,7 +12495,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.1", @@ -12545,7 +12522,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12585,7 +12561,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "node-fetch": "^2.7.0" @@ -12595,7 +12571,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -12616,21 +12592,21 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/cross-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause" }, "node_modules/cross-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -12705,7 +12681,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -12784,7 +12759,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 12" @@ -12869,7 +12844,7 @@ "version": "1.11.19", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/debug": { @@ -12893,7 +12868,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12918,7 +12893,6 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", - "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -13168,7 +13142,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -13178,7 +13152,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13194,7 +13167,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, "license": "Apache-2.0" }, "node_modules/diff-sequences": { @@ -13222,7 +13194,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, "license": "MIT" }, "node_modules/dnssd-advertise": { @@ -13363,7 +13334,6 @@ "version": "0.45.1", "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", - "dev": true, "license": "Apache-2.0", "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", @@ -13563,7 +13533,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -13573,7 +13543,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "envinfo": "dist/cli.js" @@ -13586,7 +13556,6 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -13605,7 +13574,7 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -14840,7 +14809,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -14864,7 +14832,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -16730,7 +16697,7 @@ "version": "4.5.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -16913,7 +16880,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -17305,7 +17272,7 @@ "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" @@ -17378,7 +17345,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -17539,7 +17506,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -17864,7 +17830,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, "license": "MIT" }, "node_modules/http-errors": { @@ -17918,7 +17883,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -17943,7 +17907,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -18025,7 +17989,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -18140,7 +18103,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -18181,7 +18143,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -18340,7 +18301,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -18350,7 +18311,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -18391,7 +18351,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -18538,7 +18498,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18599,7 +18558,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -18697,7 +18656,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -18714,7 +18672,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -18727,7 +18684,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -18742,7 +18698,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -18757,7 +18712,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -18803,7 +18757,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -18830,7 +18783,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -18845,7 +18797,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -18877,7 +18828,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -18911,7 +18861,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -18972,7 +18921,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -18985,7 +18933,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -19116,7 +19063,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -19179,7 +19125,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -19206,7 +19151,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -19227,7 +19171,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -19241,7 +19184,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -19274,7 +19216,6 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -19285,7 +19226,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -19319,7 +19259,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -19367,7 +19306,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -19614,7 +19552,7 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -19624,7 +19562,7 @@ "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", @@ -19648,7 +19586,7 @@ "version": "3.7.8", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/js-logger": { @@ -19792,7 +19730,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -19851,7 +19788,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, + "devOptional": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -20000,7 +19937,7 @@ "version": "2.12.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "picocolors": "^1.1.1", @@ -20039,7 +19976,7 @@ "wasm32", "arm" ], - "dev": true, + "devOptional": true, "license": "MIT", "os": [ "darwin", @@ -20349,7 +20286,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -20503,7 +20439,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -20520,7 +20456,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-fragments": "^0.2.1", @@ -20535,7 +20471,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -20547,7 +20483,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -20561,7 +20497,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -20574,7 +20510,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -20590,7 +20526,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -20603,7 +20539,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -20618,14 +20554,14 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "cliui": "^6.0.0", @@ -20648,7 +20584,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "camelcase": "^5.0.0", @@ -20710,7 +20646,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -20726,7 +20661,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -20775,7 +20709,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -21313,7 +21247,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "mime": "cli.js" @@ -21356,7 +21290,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -21585,7 +21518,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -21608,7 +21541,7 @@ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "deprecated": "Use your platform's native DOMException instead", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -21628,7 +21561,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", @@ -21668,7 +21601,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -21728,7 +21661,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -21786,7 +21718,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -21932,7 +21863,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -21948,7 +21878,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-wsl": "^1.1.0" @@ -21961,7 +21891,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -21988,7 +21918,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "bl": "^4.1.0", @@ -22119,7 +22049,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -22389,7 +22318,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -22418,7 +22346,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -22431,7 +22358,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -22445,7 +22371,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -22458,7 +22383,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -22474,7 +22398,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -22559,7 +22482,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", @@ -22577,7 +22499,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -22603,7 +22524,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "dev": true, "funding": [ { "type": "opencollective", @@ -22646,7 +22566,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -22672,7 +22591,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -22800,7 +22718,6 @@ "version": "3.8.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -22966,7 +22883,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/prompts": { @@ -23062,7 +22979,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, "funding": [ { "type": "individual", @@ -23087,7 +23003,7 @@ "version": "6.14.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -24171,7 +24087,7 @@ "version": "19.2.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "react-is": "^19.2.0", @@ -24191,7 +24107,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "license": "MIT", "dependencies": { "pify": "^2.3.0" @@ -24211,7 +24126,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -24226,7 +24141,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -24239,7 +24153,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -24398,7 +24311,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/require-resolve": { @@ -24441,7 +24354,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -24478,7 +24390,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -24488,7 +24399,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", @@ -24778,7 +24689,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/set-function-length": { @@ -25196,7 +25107,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", @@ -25211,7 +25122,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -25224,7 +25135,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -25234,7 +25145,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/sliced": { @@ -25474,14 +25385,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/strict-url-sanitise/-/strict-url-sanitise-0.0.1.tgz", "integrity": "sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -25632,7 +25543,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25642,7 +25552,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -25664,7 +25573,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -25906,7 +25815,6 @@ "version": "3.4.19", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", - "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -25953,7 +25861,6 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -26327,7 +26234,7 @@ "version": "4.21.0", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "esbuild": "~0.27.0", @@ -26789,7 +26696,7 @@ "version": "0.27.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -26864,7 +26771,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -27089,7 +26996,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -27252,7 +27159,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -27277,7 +27183,6 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -27375,7 +27280,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 8" @@ -27561,7 +27466,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/which-typed-array": { diff --git a/views/ForgotPasswordView.tsx b/views/ForgotPasswordView.tsx index 9e9f3eb84..8b7bef81a 100644 --- a/views/ForgotPasswordView.tsx +++ b/views/ForgotPasswordView.tsx @@ -135,7 +135,7 @@ export default function ForgotPasswordView({ ) } disabled={isPending} - variant="link" + variant="plain" > {t('backToLogin')} diff --git a/views/RegisterView.tsx b/views/RegisterView.tsx index cb65b98ab..c638bcba1 100644 --- a/views/RegisterView.tsx +++ b/views/RegisterView.tsx @@ -1,6 +1,6 @@ import { LanguageCombobox } from '@/components/language-combobox'; import { OfflineAlert } from '@/components/offline-alert'; -import { Button } from '@/components/ui/button'; +import { Button, buttonTextVariants } from '@/components/ui/button'; import { Checkbox } from '@/components/ui/checkbox'; import { Form, @@ -26,14 +26,39 @@ import RNAlert from '@blazejkustra/react-native-alert'; import { zodResolver } from '@hookform/resolvers/zod'; import { useMutation } from '@tanstack/react-query'; import { LockIcon, MailIcon, UserIcon } from 'lucide-react-native'; -import React, { useEffect } from 'react'; +import React, { useCallback, useEffect } from 'react'; import { useForm } from 'react-hook-form'; -import { Pressable, View } from 'react-native'; +import { Linking, Pressable, View } from 'react-native'; import { KeyboardAwareScrollView } from 'react-native-keyboard-controller'; import { z } from 'zod'; const { supabaseConnector } = system; +function AgreeToTermsText({ className }: { className?: string }) { + const { t } = useLocalization(); + const handleLinkPress = useCallback(() => { + void Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/terms`); + }, []); + + const baseText = t('agreeToTerms'); + const linkText = t('termsAndPrivacyLink'); + const textParts = baseText.split('{link}'); + + return ( + + {textParts[0]} + + {linkText} + + {textParts[1]} + + ); +} + export default function RegisterView({ onNavigate, sharedAuthInfo @@ -270,12 +295,9 @@ export default function RegisterView({ checked={field.value} onCheckedChange={field.onChange} /> - - {t('agreeToTerms') || - 'I accept the terms and conditions'} - + /> diff --git a/views/SignInView.tsx b/views/SignInView.tsx index 20dc7a9d7..f32231624 100644 --- a/views/SignInView.tsx +++ b/views/SignInView.tsx @@ -1,10 +1,6 @@ import { LanguageCombobox } from '@/components/language-combobox'; import { OfflineAlert } from '@/components/offline-alert'; -import { - Button, - ButtonPressableOpacity, - buttonTextVariants -} from '@/components/ui/button'; +import { Button } from '@/components/ui/button'; import { Form, FormControl, @@ -21,7 +17,6 @@ import { useLocalization } from '@/hooks/useLocalization'; import { useNetworkStatus } from '@/hooks/useNetworkStatus'; import type { SharedAuthInfo } from '@/navigators/AuthNavigator'; import { safeNavigate } from '@/utils/sharedUtils'; -import { cn } from '@/utils/styleUtils'; import RNAlert from '@blazejkustra/react-native-alert'; import { zodResolver } from '@hookform/resolvers/zod'; import { useMutation } from '@tanstack/react-query'; @@ -159,22 +154,19 @@ export default function SignInView({ )} /> - safeNavigate(() => onNavigate('forgot-password', { email: form.watch('email') }) ) } + size="auto" + className="self-start" + // className="native:px-0 native:py-0 h-auto self-start px-0 py-0" > - - {t('forgotPassword')} - - + {t('forgotPassword')} + From 7be63b1d8723f327ddb0933c7a0ef5d8a4e38b6b Mon Sep 17 00:00:00 2001 From: Keean <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:06:18 -0600 Subject: [PATCH 059/143] Enhance localization support by adding Hindi, Burmese, Thai, and Mandarin languages (#748) - Updated Bible book names to include translations for Hindi, Burmese, Thai, and Mandarin. - Modified seed data to reflect new language entries and their respective aliases. - Enhanced localization hooks and services to support new languages and their endonyms. - Updated email templates for account confirmation and password reset in the new languages. - Created a migration script to enable UI readiness for the newly added languages in the database. --- constants/bibleBookNames.ts | 396 +- db/seedData.json | 72 +- hooks/useLocalization.ts | 21 +- services/localizations.ts | 5278 ++++++++++++++--- .../send-email/_templates/confirm-email.tsx | 35 + .../send-email/_templates/invite-email.tsx | 50 + .../send-email/_templates/reset-password.tsx | 46 + supabase/functions/send-email/index.ts | 27 +- ...d_hindi_burmese_thai_mandarin_ui_ready.sql | 142 + 9 files changed, 5122 insertions(+), 945 deletions(-) create mode 100644 supabase/migrations/20260212000000_add_hindi_burmese_thai_mandarin_ui_ready.sql diff --git a/constants/bibleBookNames.ts b/constants/bibleBookNames.ts index ef0721cae..3d83eefe8 100644 --- a/constants/bibleBookNames.ts +++ b/constants/bibleBookNames.ts @@ -24,7 +24,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Gรชnesis', abbrev: 'Gn' }, tok_pisin: { name: 'Jenesis', abbrev: 'Jen' }, indonesian: { name: 'Kejadian', abbrev: 'Kej' }, - nepali: { name: 'เค‰เคคเฅเคชเคคเฅเคคเคฟ', abbrev: 'เค‰เคคเฅเคช' } + nepali: { name: 'เค‰เคคเฅเคชเคคเฅเคคเคฟ', abbrev: 'เค‰เคคเฅเคช' }, + hindi: { name: 'เค‰เคคเฅเคชเคคเฅเคคเคฟ', abbrev: 'เค‰เคคเฅเคช' }, + burmese: { name: 'แ€€แ€™แ€นแ€˜แ€ฌแ€ฆแ€ธแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€€แ€™แ€นแ€˜แ€ฌ' }, + thai: { name: 'เธ›เธเธกเธเธฒเธฅ', abbrev: 'เธ›เธเธ' }, + mandarin: { name: 'ๅˆ›ไธ–่ฎฐ', abbrev: 'ๅˆ›' } }, exo: { english: { name: 'Exodus', abbrev: 'Exod' }, @@ -32,7 +36,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'รŠxodo', abbrev: 'รŠx' }, tok_pisin: { name: 'Kisim Bek', abbrev: 'Kis' }, indonesian: { name: 'Keluaran', abbrev: 'Kel' }, - nepali: { name: 'เคชเฅเคฐเคธเฅเคฅเคพเคจ', abbrev: 'เคชเฅเคฐเคธเฅเคฅ' } + nepali: { name: 'เคชเฅเคฐเคธเฅเคฅเคพเคจ', abbrev: 'เคชเฅเคฐเคธเฅเคฅ' }, + hindi: { name: 'เคจเคฟเคฐเฅเค—เคฎเคจ', abbrev: 'เคจเคฟเคฐเฅเค—' }, + burmese: { name: 'แ€‘แ€ฝแ€€แ€บแ€™แ€ผแ€ฑแ€ฌแ€€แ€บแ€›แ€ฌแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€‘แ€ฝแ€€แ€บ' }, + thai: { name: 'เธญเธžเธขเธž', abbrev: 'เธญเธžเธข' }, + mandarin: { name: 'ๅ‡บๅŸƒๅŠ่ฎฐ', abbrev: 'ๅ‡บ' } }, lev: { english: { name: 'Leviticus', abbrev: 'Lev' }, @@ -40,7 +48,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Levรญtico', abbrev: 'Lv' }, tok_pisin: { name: 'Wok Pris', abbrev: 'Wok' }, indonesian: { name: 'Imamat', abbrev: 'Im' }, - nepali: { name: 'เคฒเฅ‡เคตเฅ€เคนเคฐเฅ‚', abbrev: 'เคฒเฅ‡เคตเฅ€' } + nepali: { name: 'เคฒเฅ‡เคตเฅ€เคนเคฐเฅ‚', abbrev: 'เคฒเฅ‡เคตเฅ€' }, + hindi: { name: 'เคฒเฅˆเคตเฅเคฏเคตเฅเคฏเคตเคธเฅเคฅเคพ', abbrev: 'เคฒเฅˆเคตเฅเคฏ' }, + burmese: { name: 'แ€šแ€‡แ€บแ€•แ€ฏแ€›แ€ฑแ€ฌแ€Ÿแ€ญแ€แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€šแ€‡แ€บ' }, + thai: { name: 'เน€เธฅเธงเธตเธ™เธดเธ•เธด', abbrev: 'เธฅเธ™เธ•' }, + mandarin: { name: 'ๅˆฉๆœช่ฎฐ', abbrev: 'ๅˆฉ' } }, num: { english: { name: 'Numbers', abbrev: 'Num' }, @@ -48,7 +60,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Nรบmeros', abbrev: 'Nm' }, tok_pisin: { name: 'Namba', abbrev: 'Nam' }, indonesian: { name: 'Bilangan', abbrev: 'Bil' }, - nepali: { name: 'เค—เคจเฅเคคเฅ€', abbrev: 'เค—เคจเฅเคคเฅ€' } + nepali: { name: 'เค—เคจเฅเคคเฅ€', abbrev: 'เค—เคจเฅเคคเฅ€' }, + hindi: { name: 'เค—เคฟเคจเคคเฅ€', abbrev: 'เค—เคฟเคจ' }, + burmese: { name: 'แ€แ€ฑแ€ฌแ€œแ€Šแ€บแ€›แ€ฌแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€แ€ฑแ€ฌ' }, + thai: { name: 'เธเธฑเธ™เธ”เธฒเธฃเธงเธดเธ–เธต', abbrev: 'เธเธ™เธง' }, + mandarin: { name: 'ๆฐ‘ๆ•ฐ่ฎฐ', abbrev: 'ๆฐ‘' } }, deu: { english: { name: 'Deuteronomy', abbrev: 'Deut' }, @@ -56,7 +72,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Deuteronรดmio', abbrev: 'Dt' }, tok_pisin: { name: 'Lo Namba Tu', abbrev: 'Lo2' }, indonesian: { name: 'Ulangan', abbrev: 'Ul' }, - nepali: { name: 'เคตเฅเคฏเคตเคธเฅเคฅเคพ', abbrev: 'เคตเฅเคฏเคต' } + nepali: { name: 'เคตเฅเคฏเคตเคธเฅเคฅเคพ', abbrev: 'เคตเฅเคฏเคต' }, + hindi: { name: 'เคตเฅเคฏเคตเคธเฅเคฅเคพเคตเคฟเคตเคฐเคฃ', abbrev: 'เคตเฅเคฏเคต' }, + burmese: { name: 'แ€แ€›แ€ฌแ€ธแ€Ÿแ€ฑแ€ฌแ€›แ€ฌแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€แ€›แ€ฌแ€ธ' }, + thai: { name: 'เน€เธ‰เธฅเธขเธ˜เธฃเธฃเธกเธšเธฑเธเธเธฑเธ•เธด', abbrev: 'เธ‰เธ˜เธš' }, + mandarin: { name: '็”ณๅ‘ฝ่ฎฐ', abbrev: '็”ณ' } }, jos: { english: { name: 'Joshua', abbrev: 'Josh' }, @@ -64,7 +84,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Josuรฉ', abbrev: 'Js' }, tok_pisin: { name: 'Josua', abbrev: 'Jos' }, indonesian: { name: 'Yosua', abbrev: 'Yos' }, - nepali: { name: 'เคฏเคนเฅ‹เคถเฅ‚', abbrev: 'เคฏเคนเฅ‹' } + nepali: { name: 'เคฏเคนเฅ‹เคถเฅ‚', abbrev: 'เคฏเคนเฅ‹' }, + hindi: { name: 'เคฏเคนเฅ‹เคถเฅ‚', abbrev: 'เคฏเคนเฅ‹' }, + burmese: { name: 'แ€šแ€ฑแ€ฌแ€›แ€พแ€ฏแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€šแ€ฑแ€ฌแ€›แ€พแ€ฏ' }, + thai: { name: 'เน‚เธขเธŠเธนเธงเธฒ', abbrev: 'เธขเธŠเธง' }, + mandarin: { name: '็บฆไนฆไบš่ฎฐ', abbrev: 'ไนฆ' } }, jdg: { english: { name: 'Judges', abbrev: 'Judg' }, @@ -72,7 +96,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Juรญzes', abbrev: 'Jz' }, tok_pisin: { name: 'Jas', abbrev: 'Jas' }, indonesian: { name: 'Hakim-hakim', abbrev: 'Hak' }, - nepali: { name: 'เคจเฅเคฏเคพเคฏเค•เคฐเฅเคคเคพ', abbrev: 'เคจเฅเคฏเคพ' } + nepali: { name: 'เคจเฅเคฏเคพเคฏเค•เคฐเฅเคคเคพ', abbrev: 'เคจเฅเคฏเคพ' }, + hindi: { name: 'เคจเฅเคฏเคพเคฏเคพเคงเฅ€เคถ', abbrev: 'เคจเฅเคฏเคพ' }, + burmese: { name: 'แ€แ€›แ€ฌแ€ธแ€žแ€ฐแ€€แ€ผแ€ฎแ€ธแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€แ€›แ€ฌแ€ธ' }, + thai: { name: 'เธœเธนเน‰เธงเธดเธ™เธดเธˆเธ‰เธฑเธข', abbrev: 'เธงเธ™เธ‰' }, + mandarin: { name: 'ๅฃซๅธˆ่ฎฐ', abbrev: 'ๅฃซ' } }, rut: { english: { name: 'Ruth', abbrev: 'Ruth' }, @@ -80,7 +108,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Rute', abbrev: 'Rt' }, tok_pisin: { name: 'Rut', abbrev: 'Rut' }, indonesian: { name: 'Rut', abbrev: 'Rut' }, - nepali: { name: 'เคฐเฅ‚เคฅ', abbrev: 'เคฐเฅ‚เคฅ' } + nepali: { name: 'เคฐเฅ‚เคฅ', abbrev: 'เคฐเฅ‚เคฅ' }, + hindi: { name: 'เคฐเฅ‚เคค', abbrev: 'เคฐเฅ‚เคค' }, + burmese: { name: 'แ€›แ€ฏแ€žแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€›แ€ฏแ€ž' }, + thai: { name: 'เธฃเธนเธ˜', abbrev: 'เธฃเธ˜' }, + mandarin: { name: '่ทฏๅพ—่ฎฐ', abbrev: 'ๅพ—' } }, '1sa': { english: { name: '1 Samuel', abbrev: '1 Sam' }, @@ -88,7 +120,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '1 Samuel', abbrev: '1Sm' }, tok_pisin: { name: '1 Samuel', abbrev: '1Sam' }, indonesian: { name: '1 Samuel', abbrev: '1Sam' }, - nepali: { name: 'เฅง เคถเคฎเฅ‚เคเคฒ', abbrev: 'เฅงเคถเคฎเฅ‚' } + nepali: { name: 'เฅง เคถเคฎเฅ‚เคเคฒ', abbrev: 'เฅงเคถเคฎเฅ‚' }, + hindi: { name: 'เฅง เคถเคฎเฅ‚เคเคฒ', abbrev: 'เฅงเคถเคฎเฅ‚' }, + burmese: { name: 'แ แ€›แ€พแ€™แ€ฝแ€ฑแ€œ', abbrev: 'แแ€›แ€พแ€™แ€ฝแ€ฑ' }, + thai: { name: 'เน‘ เธ‹เธฒเธกเธนเน€เธญเธฅ', abbrev: 'เน‘เธ‹เธกเธญ' }, + mandarin: { name: 'ๆ’’ๆฏ่€ณ่ฎฐไธŠ', abbrev: 'ๆ’’ไธŠ' } }, '2sa': { english: { name: '2 Samuel', abbrev: '2 Sam' }, @@ -96,7 +132,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '2 Samuel', abbrev: '2Sm' }, tok_pisin: { name: '2 Samuel', abbrev: '2Sam' }, indonesian: { name: '2 Samuel', abbrev: '2Sam' }, - nepali: { name: 'เฅจ เคถเคฎเฅ‚เคเคฒ', abbrev: 'เฅจเคถเคฎเฅ‚' } + nepali: { name: 'เฅจ เคถเคฎเฅ‚เคเคฒ', abbrev: 'เฅจเคถเคฎเฅ‚' }, + hindi: { name: 'เฅจ เคถเคฎเฅ‚เคเคฒ', abbrev: 'เฅจเคถเคฎเฅ‚' }, + burmese: { name: 'แ‚ แ€›แ€พแ€™แ€ฝแ€ฑแ€œ', abbrev: 'แ‚แ€›แ€พแ€™แ€ฝแ€ฑ' }, + thai: { name: 'เน’ เธ‹เธฒเธกเธนเน€เธญเธฅ', abbrev: 'เน’เธ‹เธกเธญ' }, + mandarin: { name: 'ๆ’’ๆฏ่€ณ่ฎฐไธ‹', abbrev: 'ๆ’’ไธ‹' } }, '1ki': { english: { name: '1 Kings', abbrev: '1 Kgs' }, @@ -104,7 +144,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '1 Reis', abbrev: '1Rs' }, tok_pisin: { name: '1 King', abbrev: '1Kin' }, indonesian: { name: '1 Raja-raja', abbrev: '1Raj' }, - nepali: { name: 'เฅง เคฐเคพเคœเคพ', abbrev: 'เฅงเคฐเคพเคœเคพ' } + nepali: { name: 'เฅง เคฐเคพเคœเคพ', abbrev: 'เฅงเคฐเคพเคœเคพ' }, + hindi: { name: 'เฅง เคฐเคพเคœเคพ', abbrev: 'เฅงเคฐเคพเคœเคพ' }, + burmese: { name: 'แ แ€“แ€™แ€นแ€™แ€›แ€ฌแ€‡แ€แ€„แ€บแ€แ€ปแ€ฏแ€•แ€บ', abbrev: 'แแ€›แ€ฌแ€‡' }, + thai: { name: 'เน‘ เธžเธ‡เธจเนŒเธเธฉเธฑเธ•เธฃเธดเธขเนŒ', abbrev: 'เน‘เธžเธเธฉ' }, + mandarin: { name: 'ๅˆ—็Ž‹็บชไธŠ', abbrev: '็Ž‹ไธŠ' } }, '2ki': { english: { name: '2 Kings', abbrev: '2 Kgs' }, @@ -112,7 +156,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '2 Reis', abbrev: '2Rs' }, tok_pisin: { name: '2 King', abbrev: '2Kin' }, indonesian: { name: '2 Raja-raja', abbrev: '2Raj' }, - nepali: { name: 'เฅจ เคฐเคพเคœเคพ', abbrev: 'เฅจเคฐเคพเคœเคพ' } + nepali: { name: 'เฅจ เคฐเคพเคœเคพ', abbrev: 'เฅจเคฐเคพเคœเคพ' }, + hindi: { name: 'เฅจ เคฐเคพเคœเคพ', abbrev: 'เฅจเคฐเคพเคœเคพ' }, + burmese: { name: 'แ‚ แ€“แ€™แ€นแ€™แ€›แ€ฌแ€‡แ€แ€„แ€บแ€แ€ปแ€ฏแ€•แ€บ', abbrev: 'แ‚แ€›แ€ฌแ€‡' }, + thai: { name: 'เน’ เธžเธ‡เธจเนŒเธเธฉเธฑเธ•เธฃเธดเธขเนŒ', abbrev: 'เน’เธžเธเธฉ' }, + mandarin: { name: 'ๅˆ—็Ž‹็บชไธ‹', abbrev: '็Ž‹ไธ‹' } }, '1ch': { english: { name: '1 Chronicles', abbrev: '1 Chr' }, @@ -120,7 +168,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '1 Crรดnicas', abbrev: '1Cr' }, tok_pisin: { name: '1 Kronikel', abbrev: '1Kro' }, indonesian: { name: '1 Tawarikh', abbrev: '1Taw' }, - nepali: { name: 'เฅง เค‡เคคเคฟเคนเคพเคธ', abbrev: 'เฅงเค‡เคคเคฟ' } + nepali: { name: 'เฅง เค‡เคคเคฟเคนเคพเคธ', abbrev: 'เฅงเค‡เคคเคฟ' }, + hindi: { name: 'เฅง เค‡เคคเคฟเคนเคพเคธ', abbrev: 'เฅงเค‡เคคเคฟ' }, + burmese: { name: 'แ แ€›แ€ฌแ€‡แ€แ€„แ€บแ€แ€ปแ€ฏแ€•แ€บ', abbrev: 'แแ€›แ€ฌแ€‡' }, + thai: { name: 'เน‘ เธžเธ‡เธจเธฒเธงเธ”เธฒเธฃ', abbrev: 'เน‘เธžเธจเธ”' }, + mandarin: { name: 'ๅކไปฃๅฟ—ไธŠ', abbrev: 'ไปฃไธŠ' } }, '2ch': { english: { name: '2 Chronicles', abbrev: '2 Chr' }, @@ -128,7 +180,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '2 Crรดnicas', abbrev: '2Cr' }, tok_pisin: { name: '2 Kronikel', abbrev: '2Kro' }, indonesian: { name: '2 Tawarikh', abbrev: '2Taw' }, - nepali: { name: 'เฅจ เค‡เคคเคฟเคนเคพเคธ', abbrev: 'เฅจเค‡เคคเคฟ' } + nepali: { name: 'เฅจ เค‡เคคเคฟเคนเคพเคธ', abbrev: 'เฅจเค‡เคคเคฟ' }, + hindi: { name: 'เฅจ เค‡เคคเคฟเคนเคพเคธ', abbrev: 'เฅจเค‡เคคเคฟ' }, + burmese: { name: 'แ‚ แ€›แ€ฌแ€‡แ€แ€„แ€บแ€แ€ปแ€ฏแ€•แ€บ', abbrev: 'แ‚แ€›แ€ฌแ€‡' }, + thai: { name: 'เน’ เธžเธ‡เธจเธฒเธงเธ”เธฒเธฃ', abbrev: 'เน’เธžเธจเธ”' }, + mandarin: { name: 'ๅކไปฃๅฟ—ไธ‹', abbrev: 'ไปฃไธ‹' } }, ezr: { english: { name: 'Ezra', abbrev: 'Ezra' }, @@ -136,7 +192,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Esdras', abbrev: 'Ed' }, tok_pisin: { name: 'Esra', abbrev: 'Esr' }, indonesian: { name: 'Ezra', abbrev: 'Ezr' }, - nepali: { name: 'เคเคœเฅเคฐเคพ', abbrev: 'เคเคœเฅเคฐเคพ' } + nepali: { name: 'เคเคœเฅเคฐเคพ', abbrev: 'เคเคœเฅเคฐเคพ' }, + hindi: { name: 'เคเคœเฅเคฐเคพ', abbrev: 'เคเคœเฅเคฐเคพ' }, + burmese: { name: 'แ€งแ€‡แ€›แ€ฌแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€งแ€‡แ€›แ€ฌ' }, + thai: { name: 'เน€เธญเธชเธฃเธฒ', abbrev: 'เธญเธชเธฃ' }, + mandarin: { name: 'ไปฅๆ–ฏๆ‹‰่ฎฐ', abbrev: 'ๆ‹‰' } }, neh: { english: { name: 'Nehemiah', abbrev: 'Neh' }, @@ -144,7 +204,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Neemias', abbrev: 'Ne' }, tok_pisin: { name: 'Nehemia', abbrev: 'Neh' }, indonesian: { name: 'Nehemia', abbrev: 'Neh' }, - nepali: { name: 'เคจเคนเฅ‡เคฎเฅเคฏเคพเคน', abbrev: 'เคจเคนเฅ‡' } + nepali: { name: 'เคจเคนเฅ‡เคฎเฅเคฏเคพเคน', abbrev: 'เคจเคนเฅ‡' }, + hindi: { name: 'เคจเคนเฅ‡เคฎเฅเคฏเคพเคน', abbrev: 'เคจเคนเฅ‡' }, + burmese: { name: 'แ€”แ€ฑแ€Ÿแ€™แ€ญแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€”แ€ฑแ€Ÿแ€™แ€ญ' }, + thai: { name: 'เน€เธ™เธซเธฐเธกเธตเธขเนŒ', abbrev: 'เธ™เธซเธก' }, + mandarin: { name: 'ๅฐผๅธŒ็ฑณ่ฎฐ', abbrev: 'ๅฐผ' } }, est: { english: { name: 'Esther', abbrev: 'Esth' }, @@ -152,7 +216,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Ester', abbrev: 'Et' }, tok_pisin: { name: 'Esta', abbrev: 'Est' }, indonesian: { name: 'Ester', abbrev: 'Est' }, - nepali: { name: 'เคเคธเฅเคคเคฐ', abbrev: 'เคเคธเฅเคค' } + nepali: { name: 'เคเคธเฅเคคเคฐ', abbrev: 'เคเคธเฅเคค' }, + hindi: { name: 'เคเคธเฅเคคเฅ‡เคฐ', abbrev: 'เคเคธเฅเคค' }, + burmese: { name: 'แ€งแ€žแ€แ€ฌแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€งแ€žแ€แ€ฌ' }, + thai: { name: 'เน€เธญเธชเน€เธ˜เธญเธฃเนŒ', abbrev: 'เธญเธชเธ˜' }, + mandarin: { name: 'ไปฅๆ–ฏๅธ–่ฎฐ', abbrev: 'ๆ–ฏ' } }, job: { english: { name: 'Job', abbrev: 'Job' }, @@ -160,7 +228,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Jรณ', abbrev: 'Jรณ' }, tok_pisin: { name: 'Jop', abbrev: 'Jop' }, indonesian: { name: 'Ayub', abbrev: 'Ayb' }, - nepali: { name: 'เค…เคฏเฅเคฏเฅ‚เคฌ', abbrev: 'เค…เคฏเฅเคฏเฅ‚' } + nepali: { name: 'เค…เคฏเฅเคฏเฅ‚เคฌ', abbrev: 'เค…เคฏเฅเคฏเฅ‚' }, + hindi: { name: 'เค…เคฏเฅเคฏเฅ‚เคฌ', abbrev: 'เค…เคฏเฅเคฏเฅ‚' }, + burmese: { name: 'แ€šแ€ฑแ€ฌแ€˜แ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€šแ€ฑแ€ฌแ€˜' }, + thai: { name: 'เน‚เธขเธš', abbrev: 'เธขเธš' }, + mandarin: { name: '็บฆไผฏ่ฎฐ', abbrev: 'ไผฏ' } }, psa: { english: { name: 'Psalms', abbrev: 'Ps' }, @@ -168,7 +240,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Salmos', abbrev: 'Sl' }, tok_pisin: { name: 'Buk Song', abbrev: 'Sng' }, indonesian: { name: 'Mazmur', abbrev: 'Mzm' }, - nepali: { name: 'เคญเคœเคจเคธเค‚เค—เฅเคฐเคน', abbrev: 'เคญเคœ' } + nepali: { name: 'เคญเคœเคจเคธเค‚เค—เฅเคฐเคน', abbrev: 'เคญเคœ' }, + hindi: { name: 'เคญเคœเคจ เคธเค‚เคนเคฟเคคเคพ', abbrev: 'เคญเคœ' }, + burmese: { name: 'แ€†แ€ฌแ€œแ€ถแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€†แ€ฌแ€œแ€ถ' }, + thai: { name: 'เธชเธ”เธธเธ”เธต', abbrev: 'เธชเธ”เธ”' }, + mandarin: { name: '่ฏ—็ฏ‡', abbrev: '่ฏ—' } }, pro: { english: { name: 'Proverbs', abbrev: 'Prov' }, @@ -176,7 +252,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Provรฉrbios', abbrev: 'Pv' }, tok_pisin: { name: 'Gutpela Tok', abbrev: 'Gut' }, indonesian: { name: 'Amsal', abbrev: 'Ams' }, - nepali: { name: 'เคนเคฟเคคเฅ‹เคชเคฆเฅ‡เคถ', abbrev: 'เคนเคฟเคคเฅ‹' } + nepali: { name: 'เคนเคฟเคคเฅ‹เคชเคฆเฅ‡เคถ', abbrev: 'เคนเคฟเคคเฅ‹' }, + hindi: { name: 'เคจเฅ€เคคเคฟเคตเคšเคจ', abbrev: 'เคจเฅ€เคคเคฟ' }, + burmese: { name: 'แ€žแ€ฏแ€แ€นแ€แ€ถแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€žแ€ฏแ€แ€นแ€แ€ถ' }, + thai: { name: 'เธชเธธเธ เธฒเธฉเธดเธ•', abbrev: 'เธชเธ เธฉ' }, + mandarin: { name: '็ฎด่จ€', abbrev: '็ฎด' } }, ecc: { english: { name: 'Ecclesiastes', abbrev: 'Eccl' }, @@ -184,7 +264,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Eclesiastes', abbrev: 'Ec' }, tok_pisin: { name: 'Saveman', abbrev: 'Sav' }, indonesian: { name: 'Pengkhotbah', abbrev: 'Pkh' }, - nepali: { name: 'เค‰เคชเคฆเฅ‡เคถเค•', abbrev: 'เค‰เคชเคฆเฅ‡' } + nepali: { name: 'เค‰เคชเคฆเฅ‡เคถเค•', abbrev: 'เค‰เคชเคฆเฅ‡' }, + hindi: { name: 'เคธเคญเฅ‹เคชเคฆเฅ‡เคถเค•', abbrev: 'เคธเคญเฅ‹' }, + burmese: { name: 'แ€’แ€ฑแ€žแ€”แ€ฌแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€’แ€ฑแ€žแ€”แ€ฌ' }, + thai: { name: 'เธ›เธฑเธเธเธฒเธˆเธฒเธฃเธขเนŒ', abbrev: 'เธ›เธเธˆ' }, + mandarin: { name: 'ไผ ้“ไนฆ', abbrev: 'ไผ ' } }, sng: { english: { name: 'Song of Solomon', abbrev: 'Song' }, @@ -192,7 +276,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Cรขnticos', abbrev: 'Ct' }, tok_pisin: { name: 'Song Solomon', abbrev: 'Son' }, indonesian: { name: 'Kidung Agung', abbrev: 'Kid' }, - nepali: { name: 'เคถเฅเคฐเฅ‡เคทเฅเค เค—เฅ€เคค', abbrev: 'เคถเฅเคฐเฅ‡เคทเฅเค ' } + nepali: { name: 'เคถเฅเคฐเฅ‡เคทเฅเค เค—เฅ€เคค', abbrev: 'เคถเฅเคฐเฅ‡เคทเฅเค ' }, + hindi: { name: 'เคถเฅเคฐเฅ‡เคทเฅเค เค—เฅ€เคค', abbrev: 'เคถเฅเคฐเฅ‡เคทเฅเค ' }, + burmese: { name: 'แ€’แ€ฑแ€žแ€”แ€ฌแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€’แ€ฑแ€žแ€”แ€ฌ' }, + thai: { name: 'เน€เธžเธฅเธ‡เธ‹เธฒเน‚เธฅเธกเธญเธ™', abbrev: 'เธžเธ‹เธก' }, + mandarin: { name: '้›…ๆญŒ', abbrev: 'ๆญŒ' } }, isa: { english: { name: 'Isaiah', abbrev: 'Isa' }, @@ -200,7 +288,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Isaรญas', abbrev: 'Is' }, tok_pisin: { name: 'Aisaia', abbrev: 'Ais' }, indonesian: { name: 'Yesaya', abbrev: 'Yes' }, - nepali: { name: 'เคฏเคถเฅˆเคฏเคพ', abbrev: 'เคฏเคถเฅˆ' } + nepali: { name: 'เคฏเคถเฅˆเคฏเคพ', abbrev: 'เคฏเคถเฅˆ' }, + hindi: { name: 'เคฏเคถเคพเคฏเคพเคน', abbrev: 'เคฏเคถเคพ' }, + burmese: { name: 'แ€Ÿแ€ฑแ€›แ€พแ€ฌแ€šแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€Ÿแ€ฑแ€›แ€พแ€ฌแ€š' }, + thai: { name: 'เธญเธดเธชเธขเธฒเธซเนŒ', abbrev: 'เธญเธชเธข' }, + mandarin: { name: 'ไปฅ่ต›ไบšไนฆ', abbrev: '่ต›' } }, jer: { english: { name: 'Jeremiah', abbrev: 'Jer' }, @@ -208,7 +300,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Jeremias', abbrev: 'Jr' }, tok_pisin: { name: 'Jeremaia', abbrev: 'Jer' }, indonesian: { name: 'Yeremia', abbrev: 'Yer' }, - nepali: { name: 'เคฏเคฐเฅเคฎเคฟเคฏเคพ', abbrev: 'เคฏเคฐเฅเคฎเคฟ' } + nepali: { name: 'เคฏเคฐเฅเคฎเคฟเคฏเคพ', abbrev: 'เคฏเคฐเฅเคฎเคฟ' }, + hindi: { name: 'เคฏเคฟเคฐเฅเคฎเคฏเคพเคน', abbrev: 'เคฏเคฟเคฐเฅเคฎ' }, + burmese: { name: 'แ€šแ€ฑแ€›แ€™แ€ญแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€šแ€ฑแ€›แ€™แ€ญ' }, + thai: { name: 'เน€เธขเน€เธฃเธกเธตเธขเนŒ', abbrev: 'เธขเธฃเธก' }, + mandarin: { name: '่€ถๅˆฉ็ฑณไนฆ', abbrev: '่€ถ' } }, lam: { english: { name: 'Lamentations', abbrev: 'Lam' }, @@ -216,7 +312,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Lamentaรงรตes', abbrev: 'Lm' }, tok_pisin: { name: 'Krai', abbrev: 'Kra' }, indonesian: { name: 'Ratapan', abbrev: 'Rat' }, - nepali: { name: 'เคตเคฟเคฒเคพเคช', abbrev: 'เคตเคฟเคฒเคพ' } + nepali: { name: 'เคตเคฟเคฒเคพเคช', abbrev: 'เคตเคฟเคฒเคพ' }, + hindi: { name: 'เคตเคฟเคฒเคพเคชเค—เฅ€เคค', abbrev: 'เคตเคฟเคฒเคพ' }, + burmese: { name: 'แ€™แ€ผแ€Šแ€บแ€แ€™แ€บแ€ธแ€…แ€€แ€ฌแ€ธแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€™แ€ผแ€Šแ€บ' }, + thai: { name: 'เน€เธžเธฅเธ‡เธ„เธฃเนˆเธณเธ„เธฃเธงเธ', abbrev: 'เธžเธ„เธ„' }, + mandarin: { name: '่€ถๅˆฉ็ฑณๅ“€ๆญŒ', abbrev: 'ๅ“€' } }, ezk: { english: { name: 'Ezekiel', abbrev: 'Ezek' }, @@ -224,7 +324,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Ezequiel', abbrev: 'Ez' }, tok_pisin: { name: 'Esekiel', abbrev: 'Ese' }, indonesian: { name: 'Yehezkiel', abbrev: 'Yeh' }, - nepali: { name: 'เค‡เคœเค•เคฟเคเคฒ', abbrev: 'เค‡เคœ' } + nepali: { name: 'เค‡เคœเค•เคฟเคเคฒ', abbrev: 'เค‡เคœ' }, + hindi: { name: 'เคฏเคนเฅ‡เคœเค•เฅ‡เคฒ', abbrev: 'เคฏเคนเฅ‡' }, + burmese: { name: 'แ€šแ€ฑแ€‡แ€€แ€ปแ€ฑแ€œแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€šแ€ฑแ€‡แ€€แ€ปแ€ฑ' }, + thai: { name: 'เน€เธญเน€เธชเน€เธ„เธตเธขเธฅ', abbrev: 'เธญเธชเธ„' }, + mandarin: { name: 'ไปฅ่ฅฟ็ป“ไนฆ', abbrev: '็ป“' } }, dan: { english: { name: 'Daniel', abbrev: 'Dan' }, @@ -232,7 +336,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Daniel', abbrev: 'Dn' }, tok_pisin: { name: 'Daniel', abbrev: 'Dan' }, indonesian: { name: 'Daniel', abbrev: 'Dan' }, - nepali: { name: 'เคฆเคพเคจเคฟเคเคฒ', abbrev: 'เคฆเคพเคจเคฟ' } + nepali: { name: 'เคฆเคพเคจเคฟเคเคฒ', abbrev: 'เคฆเคพเคจเคฟ' }, + hindi: { name: 'เคฆเคพเคจเคฟเคฏเฅ‡เคฒ', abbrev: 'เคฆเคพเคจเคฟ' }, + burmese: { name: 'แ€’แ€ถแ€šแ€ฑแ€œแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€’แ€ถแ€šแ€ฑแ€œ' }, + thai: { name: 'เธ”เธฒเน€เธ™เธตเธขเธฅ', abbrev: 'เธ”เธ™เธฅ' }, + mandarin: { name: 'ไฝ†ไปฅ็†ไนฆ', abbrev: 'ไฝ†' } }, hos: { english: { name: 'Hosea', abbrev: 'Hos' }, @@ -240,7 +348,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Osรฉias', abbrev: 'Os' }, tok_pisin: { name: 'Hosea', abbrev: 'Hos' }, indonesian: { name: 'Hosea', abbrev: 'Hos' }, - nepali: { name: 'เคนเฅ‹เคถเฅ‡', abbrev: 'เคนเฅ‹เคถเฅ‡' } + nepali: { name: 'เคนเฅ‹เคถเฅ‡', abbrev: 'เคนเฅ‹เคถเฅ‡' }, + hindi: { name: 'เคนเฅ‹เคถเฅ‡', abbrev: 'เคนเฅ‹เคถเฅ‡' }, + burmese: { name: 'แ€Ÿแ€ฑแ€ฌแ€›แ€พแ€ฑแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€Ÿแ€ฑแ€ฌแ€›แ€พแ€ฑ' }, + thai: { name: 'เน‚เธฎเน€เธŠเธขเธฒ', abbrev: 'เธฎเธŠเธข' }, + mandarin: { name: 'ไฝ•่ฅฟ้˜ฟไนฆ', abbrev: 'ไฝ•' } }, joe: { english: { name: 'Joel', abbrev: 'Joel' }, @@ -248,7 +360,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Joel', abbrev: 'Jl' }, tok_pisin: { name: 'Joel', abbrev: 'Joe' }, indonesian: { name: 'Yoรซl', abbrev: 'Yoรซ' }, - nepali: { name: 'เคฏเฅ‹เคเคฒ', abbrev: 'เคฏเฅ‹เคเคฒ' } + nepali: { name: 'เคฏเฅ‹เคเคฒ', abbrev: 'เคฏเฅ‹เคเคฒ' }, + hindi: { name: 'เคฏเฅ‹เคเคฒ', abbrev: 'เคฏเฅ‹เคเคฒ' }, + burmese: { name: 'แ€šแ€ฑแ€ฌแ€œแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€šแ€ฑแ€ฌแ€œ' }, + thai: { name: 'เน‚เธขเน€เธญเธฅ', abbrev: 'เธขเธญเธฅ' }, + mandarin: { name: '็บฆ็ฅไนฆ', abbrev: '็ฅ' } }, amo: { english: { name: 'Amos', abbrev: 'Amos' }, @@ -256,7 +372,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Amรณs', abbrev: 'Am' }, tok_pisin: { name: 'Amos', abbrev: 'Amo' }, indonesian: { name: 'Amos', abbrev: 'Amo' }, - nepali: { name: 'เค†เคฎเฅ‹เคธ', abbrev: 'เค†เคฎเฅ‹' } + nepali: { name: 'เค†เคฎเฅ‹เคธ', abbrev: 'เค†เคฎเฅ‹' }, + hindi: { name: 'เค†เคฎเฅ‹เคธ', abbrev: 'เค†เคฎเฅ‹' }, + burmese: { name: 'แ€กแ€ฌแ€™แ€ฏแ€แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€กแ€ฌแ€™แ€ฏแ€แ€บ' }, + thai: { name: 'เธญเธฒเน‚เธกเธช', abbrev: 'เธญเธกเธช' }, + mandarin: { name: '้˜ฟๆ‘ฉๅธไนฆ', abbrev: 'ๆ‘ฉ' } }, oba: { english: { name: 'Obadiah', abbrev: 'Obad' }, @@ -264,7 +384,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Obadias', abbrev: 'Ob' }, tok_pisin: { name: 'Obadia', abbrev: 'Oba' }, indonesian: { name: 'Obaja', abbrev: 'Ob' }, - nepali: { name: 'เค“เคฌเคฆเคฟเคฏเคพ', abbrev: 'เค“เคฌ' } + nepali: { name: 'เค“เคฌเคฆเคฟเคฏเคพ', abbrev: 'เค“เคฌ' }, + hindi: { name: 'เค“เคฌเคฆเฅเคฏเคพเคน', abbrev: 'เค“เคฌ' }, + burmese: { name: 'แ€ฉแ€—แ€’แ€ญแ€”แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€ฉแ€—แ€’แ€ญแ€”แ€บ' }, + thai: { name: 'เน‚เธญเธšเธฒเธ”เธตเธซเนŒ', abbrev: 'เธญเธšเธ”' }, + mandarin: { name: 'ไฟ„ๅทดๅบ•ไบšไนฆ', abbrev: 'ไฟ„' } }, jon: { english: { name: 'Jonah', abbrev: 'Jonah' }, @@ -272,7 +396,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Jonas', abbrev: 'Jn' }, tok_pisin: { name: 'Jona', abbrev: 'Jon' }, indonesian: { name: 'Yunus', abbrev: 'Yun' }, - nepali: { name: 'เคฏเฅ‹เคจเคพ', abbrev: 'เคฏเฅ‹เคจเคพ' } + nepali: { name: 'เคฏเฅ‹เคจเคพ', abbrev: 'เคฏเฅ‹เคจเคพ' }, + hindi: { name: 'เคฏเฅ‹เคจเคพ', abbrev: 'เคฏเฅ‹เคจเคพ' }, + burmese: { name: 'แ€šแ€ฑแ€ฌแ€”แ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€šแ€ฑแ€ฌแ€”' }, + thai: { name: 'เน‚เธขเธ™เธฒเธซเนŒ', abbrev: 'เธขเธ™เธฒเธซเนŒ' }, + mandarin: { name: '็บฆๆ‹ฟไนฆ', abbrev: 'ๆ‹ฟ' } }, mic: { english: { name: 'Micah', abbrev: 'Mic' }, @@ -280,7 +408,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Miquรฉias', abbrev: 'Mq' }, tok_pisin: { name: 'Maika', abbrev: 'Mai' }, indonesian: { name: 'Mikha', abbrev: 'Mik' }, - nepali: { name: 'เคฎเฅ€เค•เคพ', abbrev: 'เคฎเฅ€เค•เคพ' } + nepali: { name: 'เคฎเฅ€เค•เคพ', abbrev: 'เคฎเฅ€เค•เคพ' }, + hindi: { name: 'เคฎเฅ€เค•เคพ', abbrev: 'เคฎเฅ€เค•เคพ' }, + burmese: { name: 'แ€™แ€ญแ€€แ€นแ€แ€ฌแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€™แ€ญแ€€แ€นแ€แ€ฌ' }, + thai: { name: 'เธกเธตเธ„เธฒเธซเนŒ', abbrev: 'เธกเธ„เธฒ' }, + mandarin: { name: 'ๅผฅ่ฟฆไนฆ', abbrev: 'ๅผฅ' } }, nah: { english: { name: 'Nahum', abbrev: 'Nah' }, @@ -288,7 +420,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Naum', abbrev: 'Na' }, tok_pisin: { name: 'Nahum', abbrev: 'Nah' }, indonesian: { name: 'Nahum', abbrev: 'Nah' }, - nepali: { name: 'เคจเคนเฅ‚เคฎ', abbrev: 'เคจเคนเฅ‚' } + nepali: { name: 'เคจเคนเฅ‚เคฎ', abbrev: 'เคจเคนเฅ‚' }, + hindi: { name: 'เคจเคนเฅ‚เคฎ', abbrev: 'เคจเคนเฅ‚' }, + burmese: { name: 'แ€”แ€ฌแ€Ÿแ€ฏแ€ถแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€”แ€ฌแ€Ÿแ€ฏแ€ถ' }, + thai: { name: 'เธ™เธฒเธฎเธนเธก', abbrev: 'เธ™เธซเธก' }, + mandarin: { name: '้‚ฃ้ธฟไนฆ', abbrev: '้ธฟ' } }, hab: { english: { name: 'Habakkuk', abbrev: 'Hab' }, @@ -296,7 +432,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Habacuque', abbrev: 'Hc' }, tok_pisin: { name: 'Habakuk', abbrev: 'Hab' }, indonesian: { name: 'Habakuk', abbrev: 'Hab' }, - nepali: { name: 'เคนเคฌเค•เฅเค•เฅ‚เค•', abbrev: 'เคนเคฌ' } + nepali: { name: 'เคนเคฌเค•เฅเค•เฅ‚เค•', abbrev: 'เคนเคฌ' }, + hindi: { name: 'เคนเคฌเค•เฅเค•เฅ‚เค•', abbrev: 'เคนเคฌ' }, + burmese: { name: 'แ€Ÿแ€—แ€€แ€นแ€€แ€ฏแ€แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€Ÿแ€—แ€€แ€นแ€€แ€ฏแ€แ€บ' }, + thai: { name: 'เธฎเธฒเธšเธฒเธเธธเธ', abbrev: 'เธฎเธšเธ' }, + mandarin: { name: 'ๅ“ˆๅทด่ฐทไนฆ', abbrev: 'ๅ“ˆ' } }, zep: { english: { name: 'Zephaniah', abbrev: 'Zeph' }, @@ -304,7 +444,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Sofonias', abbrev: 'Sf' }, tok_pisin: { name: 'Sefanaia', abbrev: 'Sef' }, indonesian: { name: 'Zefanya', abbrev: 'Zef' }, - nepali: { name: 'เคธเคชเคจเฅเคฏเคพเคน', abbrev: 'เคธเคช' } + nepali: { name: 'เคธเคชเคจเฅเคฏเคพเคน', abbrev: 'เคธเคช' }, + hindi: { name: 'เคธเคชเคจเฅเคฏเคพเคน', abbrev: 'เคธเคช' }, + burmese: { name: 'แ€‡แ€ฑแ€–แ€”แ€ญแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€‡แ€ฑแ€–แ€”แ€ญ' }, + thai: { name: 'เน€เธจเธŸเธฑเธ™เธขเธฒเธซเนŒ', abbrev: 'เธจเธŸเธข' }, + mandarin: { name: '่ฅฟ็•ช้›…ไนฆ', abbrev: '็•ช' } }, hag: { english: { name: 'Haggai', abbrev: 'Hag' }, @@ -312,7 +456,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Ageu', abbrev: 'Ag' }, tok_pisin: { name: 'Hagai', abbrev: 'Hag' }, indonesian: { name: 'Hagai', abbrev: 'Hag' }, - nepali: { name: 'เคนเคพเค—เฅเค—เฅˆ', abbrev: 'เคนเคพเค—เฅเค—เฅˆ' } + nepali: { name: 'เคนเคพเค—เฅเค—เฅˆ', abbrev: 'เคนเคพเค—เฅเค—เฅˆ' }, + hindi: { name: 'เคนเคพเค—เฅเค—เฅˆ', abbrev: 'เคนเคพเค—เฅเค—เฅˆ' }, + burmese: { name: 'แ€Ÿแ€‚แ€นแ€‚แ€ฒแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€Ÿแ€‚แ€นแ€‚แ€ฒ' }, + thai: { name: 'เธฎเธฑเธเธเธฑเธข', abbrev: 'เธฎเธเธ' }, + mandarin: { name: 'ๅ“ˆ่ฏฅไนฆ', abbrev: '่ฏฅ' } }, zec: { english: { name: 'Zechariah', abbrev: 'Zech' }, @@ -320,7 +468,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Zacarias', abbrev: 'Zc' }, tok_pisin: { name: 'Sekaraia', abbrev: 'Sek' }, indonesian: { name: 'Zakharia', abbrev: 'Zak' }, - nepali: { name: 'เคœเค•เคฐเคฟเคฏเคพ', abbrev: 'เคœเค•' } + nepali: { name: 'เคœเค•เคฐเคฟเคฏเคพ', abbrev: 'เคœเค•' }, + hindi: { name: 'เคœเค•เคฐเฅเคฏเคพเคน', abbrev: 'เคœเค•' }, + burmese: { name: 'แ€‡แ€ฌแ€แ€›แ€ญแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€‡แ€ฌแ€แ€›แ€ญ' }, + thai: { name: 'เน€เธจเธ„เธฒเธฃเธดเธขเธฒเธซเนŒ', abbrev: 'เธจเธ„เธข' }, + mandarin: { name: 'ๆ’’่ฟฆๅˆฉไบšไนฆ', abbrev: 'ไบš' } }, mal: { english: { name: 'Malachi', abbrev: 'Mal' }, @@ -328,7 +480,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Malaquias', abbrev: 'Ml' }, tok_pisin: { name: 'Malakai', abbrev: 'Mal' }, indonesian: { name: 'Maleakhi', abbrev: 'Mal' }, - nepali: { name: 'เคฎเคฒเคพเค•เฅ€', abbrev: 'เคฎเคฒเคพ' } + nepali: { name: 'เคฎเคฒเคพเค•เฅ€', abbrev: 'เคฎเคฒเคพ' }, + hindi: { name: 'เคฎเคฒเคพเค•เฅ€', abbrev: 'เคฎเคฒเคพ' }, + burmese: { name: 'แ€™แ€ฌแ€œแ€แ€ญแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€™แ€ฌแ€œแ€แ€ญ' }, + thai: { name: 'เธกเธฒเธฅเธฒเธ„เธต', abbrev: 'เธกเธฅเธ„' }, + mandarin: { name: '็Ž›ๆ‹‰ๅŸบไนฆ', abbrev: '็Ž›' } }, // ============================================================================ @@ -340,7 +496,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Mateus', abbrev: 'Mt' }, tok_pisin: { name: 'Matyu', abbrev: 'Mat' }, indonesian: { name: 'Matius', abbrev: 'Mat' }, - nepali: { name: 'เคฎเคคเฅเคคเฅ€', abbrev: 'เคฎเคคเฅเคคเฅ€' } + nepali: { name: 'เคฎเคคเฅเคคเฅ€', abbrev: 'เคฎเคคเฅเคคเฅ€' }, + hindi: { name: 'เคฎเคคเฅเคคเฅ€', abbrev: 'เคฎเคคเฅเคคเฅ€' }, + burmese: { name: 'แ€™แ€ฟแ€ฒแ€แ€›แ€…แ€บแ€แ€„แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€™แ€ฟแ€ฒ' }, + thai: { name: 'เธกเธฑเธ—เธ˜เธดเธง', abbrev: 'เธกเธ˜' }, + mandarin: { name: '้ฉฌๅคช็ฆ้Ÿณ', abbrev: 'ๅคช' } }, mar: { english: { name: 'Mark', abbrev: 'Mark' }, @@ -348,7 +508,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Marcos', abbrev: 'Mc' }, tok_pisin: { name: 'Mak', abbrev: 'Mak' }, indonesian: { name: 'Markus', abbrev: 'Mrk' }, - nepali: { name: 'เคฎเคฐเฅเค•เฅ‚เคธ', abbrev: 'เคฎเคฐเฅเค•เฅ‚' } + nepali: { name: 'เคฎเคฐเฅเค•เฅ‚เคธ', abbrev: 'เคฎเคฐเฅเค•เฅ‚' }, + hindi: { name: 'เคฎเคฐเค•เฅเคธ', abbrev: 'เคฎเคฐเค•เฅเคธ' }, + burmese: { name: 'แ€™แ€ฌแ€€แ€ฏแ€แ€›แ€…แ€บแ€แ€„แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€™แ€ฌแ€€แ€ฏ' }, + thai: { name: 'เธกเธฒเธฃเธฐเน‚เธ', abbrev: 'เธกเธ' }, + mandarin: { name: '้ฉฌๅฏ็ฆ้Ÿณ', abbrev: 'ๅฏ' } }, luk: { english: { name: 'Luke', abbrev: 'Luke' }, @@ -356,7 +520,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Lucas', abbrev: 'Lc' }, tok_pisin: { name: 'Luk', abbrev: 'Luk' }, indonesian: { name: 'Lukas', abbrev: 'Luk' }, - nepali: { name: 'เคฒเฅ‚เค•เคพ', abbrev: 'เคฒเฅ‚เค•เคพ' } + nepali: { name: 'เคฒเฅ‚เค•เคพ', abbrev: 'เคฒเฅ‚เค•เคพ' }, + hindi: { name: 'เคฒเฅ‚เค•เคพ', abbrev: 'เคฒเฅ‚เค•เคพ' }, + burmese: { name: 'แ€œแ€ฏแ€€แ€ฌแ€แ€›แ€…แ€บแ€แ€„แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€œแ€ฏแ€€แ€ฌ' }, + thai: { name: 'เธฅเธนเธเธฒ', abbrev: 'เธฅเธ' }, + mandarin: { name: '่ทฏๅŠ ็ฆ้Ÿณ', abbrev: '่ทฏ' } }, jhn: { english: { name: 'John', abbrev: 'John' }, @@ -364,7 +532,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Joรฃo', abbrev: 'Jo' }, tok_pisin: { name: 'Jon', abbrev: 'Jon' }, indonesian: { name: 'Yohanes', abbrev: 'Yoh' }, - nepali: { name: 'เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เคฏเฅ‚เคนเคจเฅ' } + nepali: { name: 'เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เคฏเฅ‚เคนเคจเฅ' }, + hindi: { name: 'เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เคฏเฅ‚เคนเคจเฅ' }, + burmese: { name: 'แ€šแ€ฑแ€ฌแ€Ÿแ€”แ€บแ€แ€›แ€…แ€บแ€แ€„แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€šแ€ฑแ€ฌแ€Ÿแ€”แ€บ' }, + thai: { name: 'เธขเธญเธซเนŒเธ™', abbrev: 'เธขเธ™' }, + mandarin: { name: '็บฆ็ฟฐ็ฆ้Ÿณ', abbrev: '็บฆ' } }, act: { english: { name: 'Acts', abbrev: 'Acts' }, @@ -372,7 +544,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Atos', abbrev: 'At' }, tok_pisin: { name: 'Wok', abbrev: 'Wok' }, indonesian: { name: 'Kisah Para Rasul', abbrev: 'Kis' }, - nepali: { name: 'เคชเฅเคฐเฅ‡เคฐเคฟเคค', abbrev: 'เคชเฅเคฐเฅ‡เคฐเคฟ' } + nepali: { name: 'เคชเฅเคฐเฅ‡เคฐเคฟเคค', abbrev: 'เคชเฅเคฐเฅ‡เคฐเคฟ' }, + hindi: { name: 'เคชเฅเคฐเฅ‡เคฐเคฟเคคเฅ‹เค‚ เค•เฅ‡ เค•เคพเคฎ', abbrev: 'เคชเฅเคฐเฅ‡เคฐเคฟ' }, + burmese: { name: 'แ€แ€™แ€”แ€บแ€แ€ฑแ€ฌแ€บแ€แ€แ€นแ€‘แ€ฏ', abbrev: 'แ€แ€™แ€”แ€บ' }, + thai: { name: 'เธเธดเธˆเธเธฒเธฃ', abbrev: 'เธเธˆ' }, + mandarin: { name: 'ไฝฟๅพ’่กŒไผ ', abbrev: 'ๅพ’' } }, rom: { english: { name: 'Romans', abbrev: 'Rom' }, @@ -380,7 +556,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Romanos', abbrev: 'Rm' }, tok_pisin: { name: 'Rom', abbrev: 'Rom' }, indonesian: { name: 'Roma', abbrev: 'Rom' }, - nepali: { name: 'เคฐเฅ‹เคฎเฅ€', abbrev: 'เคฐเฅ‹เคฎเฅ€' } + nepali: { name: 'เคฐเฅ‹เคฎเฅ€', abbrev: 'เคฐเฅ‹เคฎเฅ€' }, + hindi: { name: 'เคฐเฅ‹เคฎเคฟเคฏเฅ‹เค‚', abbrev: 'เคฐเฅ‹เคฎเฅ€' }, + burmese: { name: 'แ€›แ€ฑแ€ฌแ€™แ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€›แ€ฑแ€ฌแ€™' }, + thai: { name: 'เน‚เธฃเธก', abbrev: 'เธฃเธก' }, + mandarin: { name: '็ฝ—้ฉฌไนฆ', abbrev: '็ฝ—' } }, '1co': { english: { name: '1 Corinthians', abbrev: '1 Cor' }, @@ -388,7 +568,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '1 Corรญntios', abbrev: '1Co' }, tok_pisin: { name: '1 Korin', abbrev: '1Kor' }, indonesian: { name: '1 Korintus', abbrev: '1Kor' }, - nepali: { name: 'เฅง เค•เฅ‹เคฐเคฟเคจเฅเคฅเฅ€', abbrev: 'เฅงเค•เฅ‹เคฐเคฟ' } + nepali: { name: 'เฅง เค•เฅ‹เคฐเคฟเคจเฅเคฅเฅ€', abbrev: 'เฅงเค•เฅ‹เคฐเคฟ' }, + hindi: { name: 'เฅง เค•เฅเคฐเคฟเคจเฅเคฅเคฟเคฏเฅ‹เค‚', abbrev: 'เฅงเค•เฅ‹เคฐเคฟ' }, + burmese: { name: 'แ แ€€แ€ฑแ€ฌแ€›แ€ญแ€”แ€นแ€’แ€ฐแ€ธแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แแ€€แ€ฑแ€ฌ' }, + thai: { name: 'เน‘ เน‚เธ„เธฃเธดเธ™เธ˜เนŒ', abbrev: 'เน‘เธ„เธฃ' }, + mandarin: { name: 'ๅ“ฅๆž—ๅคšๅ‰ไนฆ', abbrev: 'ๆž—ๅ‰' } }, '2co': { english: { name: '2 Corinthians', abbrev: '2 Cor' }, @@ -396,7 +580,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '2 Corรญntios', abbrev: '2Co' }, tok_pisin: { name: '2 Korin', abbrev: '2Kor' }, indonesian: { name: '2 Korintus', abbrev: '2Kor' }, - nepali: { name: 'เฅจ เค•เฅ‹เคฐเคฟเคจเฅเคฅเฅ€', abbrev: 'เฅจเค•เฅ‹เคฐเคฟ' } + nepali: { name: 'เฅจ เค•เฅ‹เคฐเคฟเคจเฅเคฅเฅ€', abbrev: 'เฅจเค•เฅ‹เคฐเคฟ' }, + hindi: { name: 'เฅจ เค•เฅเคฐเคฟเคจเฅเคฅเคฟเคฏเฅ‹เค‚', abbrev: 'เฅจเค•เฅ‹เคฐเคฟ' }, + burmese: { name: 'แ‚ แ€€แ€ฑแ€ฌแ€›แ€ญแ€”แ€นแ€’แ€ฐแ€ธแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ‚แ€€แ€ฑแ€ฌ' }, + thai: { name: 'เน’ เน‚เธ„เธฃเธดเธ™เธ˜เนŒ', abbrev: 'เน’เธ„เธฃ' }, + mandarin: { name: 'ๅ“ฅๆž—ๅคšๅŽไนฆ', abbrev: 'ๆž—ๅŽ' } }, gal: { english: { name: 'Galatians', abbrev: 'Gal' }, @@ -404,7 +592,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Gรกlatas', abbrev: 'Gl' }, tok_pisin: { name: 'Galesia', abbrev: 'Gal' }, indonesian: { name: 'Galatia', abbrev: 'Gal' }, - nepali: { name: 'เค—เคฒเคพเคคเฅ€', abbrev: 'เค—เคฒเคพ' } + nepali: { name: 'เค—เคฒเคพเคคเฅ€', abbrev: 'เค—เคฒเคพ' }, + hindi: { name: 'เค—เคฒเคพเคคเคฟเคฏเฅ‹เค‚', abbrev: 'เค—เคฒเคพ' }, + burmese: { name: 'แ€‚แ€œแ€ฌแ€แ€ญแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€‚แ€œแ€ฌแ€แ€ญ' }, + thai: { name: 'เธเธฒเธฅเธฒเน€เธ—เธตเธข', abbrev: 'เธเธ—' }, + mandarin: { name: 'ๅŠ ๆ‹‰ๅคชไนฆ', abbrev: 'ๅŠ ' } }, eph: { english: { name: 'Ephesians', abbrev: 'Eph' }, @@ -412,7 +604,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Efรฉsios', abbrev: 'Ef' }, tok_pisin: { name: 'Efesus', abbrev: 'Efe' }, indonesian: { name: 'Efesus', abbrev: 'Ef' }, - nepali: { name: 'เคเคซเคฟเคธเฅ€', abbrev: 'เคเคซเคฟ' } + nepali: { name: 'เคเคซเคฟเคธเฅ€', abbrev: 'เคเคซเคฟ' }, + hindi: { name: 'เค‡เคซเคฟเคธเคฟเคฏเฅ‹เค‚', abbrev: 'เค‡เคซเคฟ' }, + burmese: { name: 'แ€งแ€–แ€€แ€บแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€งแ€–แ€€แ€บ' }, + thai: { name: 'เน€เธญเน€เธŸเธ‹เธฑเธช', abbrev: 'เธญเธŸ' }, + mandarin: { name: 'ไปฅๅผ—ๆ‰€ไนฆ', abbrev: 'ๅผ—' } }, phi: { english: { name: 'Philippians', abbrev: 'Phil' }, @@ -420,7 +616,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Filipenses', abbrev: 'Fp' }, tok_pisin: { name: 'Filipai', abbrev: 'Fil' }, indonesian: { name: 'Filipi', abbrev: 'Flp' }, - nepali: { name: 'เคซเคฟเคฒเคฟเคชเฅเคชเฅ€', abbrev: 'เคซเคฟเคฒเคฟ' } + nepali: { name: 'เคซเคฟเคฒเคฟเคชเฅเคชเฅ€', abbrev: 'เคซเคฟเคฒเคฟ' }, + hindi: { name: 'เคซเคฟเคฒเคฟเคชเฅเคชเคฟเคฏเฅ‹เค‚', abbrev: 'เคซเคฟเคฒเคฟ' }, + burmese: { name: 'แ€–แ€ญแ€œแ€ญแ€•แ€นแ€•แ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€–แ€ญแ€œแ€ญแ€•แ€นแ€•' }, + thai: { name: 'เธŸเธดเธฅเธดเธ›เธ›เธต', abbrev: 'เธŸเธ›' }, + mandarin: { name: '่…“็ซ‹ๆฏ”ไนฆ', abbrev: '่…“' } }, col: { english: { name: 'Colossians', abbrev: 'Col' }, @@ -428,7 +628,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Colossenses', abbrev: 'Cl' }, tok_pisin: { name: 'Kolosi', abbrev: 'Kol' }, indonesian: { name: 'Kolose', abbrev: 'Kol' }, - nepali: { name: 'เค•เคฒเคธเฅเคธเฅ€', abbrev: 'เค•เคฒ' } + nepali: { name: 'เค•เคฒเคธเฅเคธเฅ€', abbrev: 'เค•เคฒ' }, + hindi: { name: 'เค•เฅเคฒเฅเคธเฅเคธเคฟเคฏเฅ‹เค‚', abbrev: 'เค•เคฒ' }, + burmese: { name: 'แ€€แ€ฑแ€ฌแ€œแ€ฑแ€ฌแ€žแ€ฒแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€€แ€ฑแ€ฌแ€œแ€ฑแ€ฌ' }, + thai: { name: 'เน‚เธ„เน‚เธฅเธชเธต', abbrev: 'เธ„เธช' }, + mandarin: { name: 'ๆญŒ็ฝ—่ฅฟไนฆ', abbrev: '่ฅฟ' } }, '1th': { english: { name: '1 Thessalonians', abbrev: '1 Thess' }, @@ -436,7 +640,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '1 Tessalonicenses', abbrev: '1Ts' }, tok_pisin: { name: '1 Tesalonaika', abbrev: '1Tes' }, indonesian: { name: '1 Tesalonika', abbrev: '1Tes' }, - nepali: { name: 'เฅง เคฅเฅ‡เคธเฅเคธเคฒเฅ‹เคจเคฟเค•เฅ€', abbrev: 'เฅงเคฅเฅ‡เคธเฅเคธ' } + nepali: { name: 'เฅง เคฅเฅ‡เคธเฅเคธเคฒเฅ‹เคจเคฟเค•เฅ€', abbrev: 'เฅงเคฅเฅ‡เคธเฅเคธ' }, + hindi: { name: 'เฅง เคฅเคฟเคธเฅเคธเคฒเฅเคจเฅ€เค•เคฟเคฏเฅ‹เค‚', abbrev: 'เฅงเคฅเฅ‡เคธเฅเคธ' }, + burmese: { name: 'แ แ€žแ€€แ€บแ€žแ€ฌแ€œแ€ฑแ€ฌแ€”แ€ญแ€แ€บแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แแ€žแ€€แ€บ' }, + thai: { name: 'เน‘ เน€เธ˜เธชเธฐเน‚เธฅเธ™เธดเธเธฒ', abbrev: 'เน‘เธ˜เธช' }, + mandarin: { name: 'ๅธ–ๆ’’็ฝ—ๅฐผ่ฟฆๅ‰ไนฆ', abbrev: 'ๅธ–ๅ‰' } }, '2th': { english: { name: '2 Thessalonians', abbrev: '2 Thess' }, @@ -444,7 +652,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '2 Tessalonicenses', abbrev: '2Ts' }, tok_pisin: { name: '2 Tesalonaika', abbrev: '2Tes' }, indonesian: { name: '2 Tesalonika', abbrev: '2Tes' }, - nepali: { name: 'เฅจ เคฅเฅ‡เคธเฅเคธเคฒเฅ‹เคจเคฟเค•เฅ€', abbrev: 'เฅจเคฅเฅ‡เคธเฅเคธ' } + nepali: { name: 'เฅจ เคฅเฅ‡เคธเฅเคธเคฒเฅ‹เคจเคฟเค•เฅ€', abbrev: 'เฅจเคฅเฅ‡เคธเฅเคธ' }, + hindi: { name: 'เฅจ เคฅเคฟเคธเฅเคธเคฒเฅเคจเฅ€เค•เคฟเคฏเฅ‹เค‚', abbrev: 'เฅจเคฅเฅ‡เคธเฅเคธ' }, + burmese: { name: 'แ‚ แ€žแ€€แ€บแ€žแ€ฌแ€œแ€ฑแ€ฌแ€”แ€ญแ€แ€บแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ‚แ€žแ€€แ€บ' }, + thai: { name: 'เน’ เน€เธ˜เธชเธฐเน‚เธฅเธ™เธดเธเธฒ', abbrev: 'เน’เธ˜เธช' }, + mandarin: { name: 'ๅธ–ๆ’’็ฝ—ๅฐผ่ฟฆๅŽไนฆ', abbrev: 'ๅธ–ๅŽ' } }, '1ti': { english: { name: '1 Timothy', abbrev: '1 Tim' }, @@ -452,7 +664,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '1 Timรณteo', abbrev: '1Tm' }, tok_pisin: { name: '1 Timoti', abbrev: '1Tim' }, indonesian: { name: '1 Timotius', abbrev: '1Tim' }, - nepali: { name: 'เฅง เคคเคฟเคฎเฅ‹เคฅเฅ€', abbrev: 'เฅงเคคเคฟเคฎเฅ‹' } + nepali: { name: 'เฅง เคคเคฟเคฎเฅ‹เคฅเฅ€', abbrev: 'เฅงเคคเคฟเคฎเฅ‹' }, + hindi: { name: 'เฅง เคคเฅ€เคฎเฅเคฅเคฟเคฏเฅเคธ', abbrev: 'เฅงเคคเคฟเคฎเฅ‹' }, + burmese: { name: 'แ แ€แ€ญแ€™แ€ฑแ€ฌแ€žแ€ฑแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แแ€แ€ญแ€™แ€ฑแ€ฌ' }, + thai: { name: 'เน‘ เธ—เธดเน‚เธกเธ˜เธต', abbrev: 'เน‘เธ—เธ˜' }, + mandarin: { name: 'ๆๆ‘ฉๅคชๅ‰ไนฆ', abbrev: 'ๆๅ‰' } }, '2ti': { english: { name: '2 Timothy', abbrev: '2 Tim' }, @@ -460,7 +676,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '2 Timรณteo', abbrev: '2Tm' }, tok_pisin: { name: '2 Timoti', abbrev: '2Tim' }, indonesian: { name: '2 Timotius', abbrev: '2Tim' }, - nepali: { name: 'เฅจ เคคเคฟเคฎเฅ‹เคฅเฅ€', abbrev: 'เฅจเคคเคฟเคฎเฅ‹' } + nepali: { name: 'เฅจ เคคเคฟเคฎเฅ‹เคฅเฅ€', abbrev: 'เฅจเคคเคฟเคฎเฅ‹' }, + hindi: { name: 'เฅจ เคคเฅ€เคฎเฅเคฅเคฟเคฏเฅเคธ', abbrev: 'เฅจเคคเคฟเคฎเฅ‹' }, + burmese: { name: 'แ‚ แ€แ€ญแ€™แ€ฑแ€ฌแ€žแ€ฑแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ‚แ€แ€ญแ€™แ€ฑแ€ฌ' }, + thai: { name: 'เน’ เธ—เธดเน‚เธกเธ˜เธต', abbrev: 'เน’เธ—เธ˜' }, + mandarin: { name: 'ๆๆ‘ฉๅคชๅŽไนฆ', abbrev: 'ๆๅŽ' } }, tit: { english: { name: 'Titus', abbrev: 'Titus' }, @@ -468,7 +688,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Tito', abbrev: 'Tt' }, tok_pisin: { name: 'Taitus', abbrev: 'Tai' }, indonesian: { name: 'Titus', abbrev: 'Tit' }, - nepali: { name: 'เคคเฅ€เคคเคธ', abbrev: 'เคคเฅ€เคค' } + nepali: { name: 'เคคเฅ€เคคเคธ', abbrev: 'เคคเฅ€เคค' }, + hindi: { name: 'เคคเฅ€เคคเฅเคธ', abbrev: 'เคคเฅ€เคค' }, + burmese: { name: 'แ€แ€ญแ€แ€ฏแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€แ€ญแ€แ€ฏ' }, + thai: { name: 'เธ—เธดเธ•เธฑเธช', abbrev: 'เธ—เธ•' }, + mandarin: { name: 'ๆๅคšไนฆ', abbrev: 'ๅคš' } }, phm: { english: { name: 'Philemon', abbrev: 'Phlm' }, @@ -476,7 +700,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Filemom', abbrev: 'Fm' }, tok_pisin: { name: 'Filemon', abbrev: 'Fil' }, indonesian: { name: 'Filemon', abbrev: 'Flm' }, - nepali: { name: 'เคซเคฟเคฒเฅ‡เคฎเฅ‹เคจ', abbrev: 'เคซเคฟเคฒเฅ‡' } + nepali: { name: 'เคซเคฟเคฒเฅ‡เคฎเฅ‹เคจ', abbrev: 'เคซเคฟเคฒเฅ‡' }, + hindi: { name: 'เคซเคฟเคฒเฅ‡เคฎเฅ‹เคจ', abbrev: 'เคซเคฟเคฒเฅ‡' }, + burmese: { name: 'แ€–แ€ญแ€œแ€ฑแ€™แ€ฏแ€”แ€บแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€–แ€ญแ€œแ€ฑ' }, + thai: { name: 'เธŸเธตเน€เธฅเน‚เธกเธ™', abbrev: 'เธŸเธก' }, + mandarin: { name: '่…“ๅˆฉ้—จไนฆ', abbrev: '้—จ' } }, heb: { english: { name: 'Hebrews', abbrev: 'Heb' }, @@ -484,7 +712,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Hebreus', abbrev: 'Hb' }, tok_pisin: { name: 'Hibru', abbrev: 'Hib' }, indonesian: { name: 'Ibrani', abbrev: 'Ibr' }, - nepali: { name: 'เคนเคฟเคฌเฅเคฐเฅ‚', abbrev: 'เคนเคฟเคฌเฅเคฐเฅ‚' } + nepali: { name: 'เคนเคฟเคฌเฅเคฐเฅ‚', abbrev: 'เคนเคฟเคฌเฅเคฐเฅ‚' }, + hindi: { name: 'เค‡เคฌเฅเคฐเคพเคจเคฟเคฏเฅ‹เค‚', abbrev: 'เค‡เคฌเฅเคฐเคพ' }, + burmese: { name: 'แ€Ÿแ€ฑแ€—แ€ผแ€ฒแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€Ÿแ€ฑแ€—แ€ผแ€ฒ' }, + thai: { name: 'เธฎเธตเธšเธฃเธน', abbrev: 'เธฎเธš' }, + mandarin: { name: 'ๅธŒไผฏๆฅไนฆ', abbrev: 'ๆฅ' } }, jas: { english: { name: 'James', abbrev: 'Jas' }, @@ -492,7 +724,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Tiago', abbrev: 'Tg' }, tok_pisin: { name: 'Jems', abbrev: 'Jem' }, indonesian: { name: 'Yakobus', abbrev: 'Yak' }, - nepali: { name: 'เคฏเคพเค•เฅ‚เคฌ', abbrev: 'เคฏเคพเค•เฅ‚' } + nepali: { name: 'เคฏเคพเค•เฅ‚เคฌ', abbrev: 'เคฏเคพเค•เฅ‚' }, + hindi: { name: 'เคฏเคพเค•เฅ‚เคฌ', abbrev: 'เคฏเคพเค•เฅ‚' }, + burmese: { name: 'แ€šแ€ฌแ€€แ€ฏแ€•แ€บแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€šแ€ฌแ€€แ€ฏแ€•แ€บ' }, + thai: { name: 'เธขเธฒเธเธญเธš', abbrev: 'เธขเธ' }, + mandarin: { name: '้›…ๅ„ไนฆ', abbrev: '้›…' } }, '1pe': { english: { name: '1 Peter', abbrev: '1 Pet' }, @@ -500,7 +736,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '1 Pedro', abbrev: '1Pe' }, tok_pisin: { name: '1 Pita', abbrev: '1Pit' }, indonesian: { name: '1 Petrus', abbrev: '1Ptr' }, - nepali: { name: 'เฅง เคชเคคเฅเคฐเฅเคธ', abbrev: 'เฅงเคชเคคเฅเคฐเฅ' } + nepali: { name: 'เฅง เคชเคคเฅเคฐเฅเคธ', abbrev: 'เฅงเคชเคคเฅเคฐเฅ' }, + hindi: { name: 'เฅง เคชเคคเคฐเคธ', abbrev: 'เฅงเคชเคคเฅเคฐเฅ' }, + burmese: { name: 'แ แ€•แ€ฑแ€แ€›แ€ฏแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แแ€•แ€ฑ' }, + thai: { name: 'เน‘ เน€เธ›เน‚เธ•เธฃ', abbrev: 'เน‘เธ›เธ•' }, + mandarin: { name: 'ๅฝผๅพ—ๅ‰ไนฆ', abbrev: 'ๅฝผๅ‰' } }, '2pe': { english: { name: '2 Peter', abbrev: '2 Pet' }, @@ -508,7 +748,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '2 Pedro', abbrev: '2Pe' }, tok_pisin: { name: '2 Pita', abbrev: '2Pit' }, indonesian: { name: '2 Petrus', abbrev: '2Ptr' }, - nepali: { name: 'เฅจ เคชเคคเฅเคฐเฅเคธ', abbrev: 'เฅจเคชเคคเฅเคฐเฅ' } + nepali: { name: 'เฅจ เคชเคคเฅเคฐเฅเคธ', abbrev: 'เฅจเคชเคคเฅเคฐเฅ' }, + hindi: { name: 'เฅจ เคชเคคเคฐเคธ', abbrev: 'เฅจเคชเคคเฅเคฐเฅ' }, + burmese: { name: 'แ‚ แ€•แ€ฑแ€แ€›แ€ฏแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ‚แ€•แ€ฑ' }, + thai: { name: 'เน’ เน€เธ›เน‚เธ•เธฃ', abbrev: 'เน’เธ›เธ•' }, + mandarin: { name: 'ๅฝผๅพ—ๅŽไนฆ', abbrev: 'ๅฝผๅŽ' } }, '1jn': { english: { name: '1 John', abbrev: '1 John' }, @@ -516,7 +760,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '1 Joรฃo', abbrev: '1Jo' }, tok_pisin: { name: '1 Jon', abbrev: '1Jon' }, indonesian: { name: '1 Yohanes', abbrev: '1Yoh' }, - nepali: { name: 'เฅง เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅงเคฏเฅ‚เคนเคจเฅ' } + nepali: { name: 'เฅง เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅงเคฏเฅ‚เคนเคจเฅ' }, + hindi: { name: 'เฅง เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅงเคฏเฅ‚เคนเคจเฅ' }, + burmese: { name: 'แ แ€šแ€ฑแ€ฌแ€Ÿแ€”แ€บแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แแ€šแ€ฑแ€ฌแ€Ÿแ€”แ€บ' }, + thai: { name: 'เน‘ เธขเธญเธซเนŒเธ™', abbrev: 'เน‘เธขเธ™' }, + mandarin: { name: '็บฆ็ฟฐไธ€ไนฆ', abbrev: '็บฆไธ€' } }, '2jn': { english: { name: '2 John', abbrev: '2 John' }, @@ -524,7 +772,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '2 Joรฃo', abbrev: '2Jo' }, tok_pisin: { name: '2 Jon', abbrev: '2Jon' }, indonesian: { name: '2 Yohanes', abbrev: '2Yoh' }, - nepali: { name: 'เฅจ เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅจเคฏเฅ‚เคนเคจเฅ' } + nepali: { name: 'เฅจ เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅจเคฏเฅ‚เคนเคจเฅ' }, + hindi: { name: 'เฅจ เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅจเคฏเฅ‚เคนเคจเฅ' }, + burmese: { name: 'แ‚ แ€šแ€ฑแ€ฌแ€Ÿแ€”แ€บแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ‚แ€šแ€ฑแ€ฌแ€Ÿแ€”แ€บ' }, + thai: { name: 'เน’ เธขเธญเธซเนŒเธ™', abbrev: 'เน’เธขเธ™' }, + mandarin: { name: '็บฆ็ฟฐไบŒไนฆ', abbrev: '็บฆไบŒ' } }, '3jn': { english: { name: '3 John', abbrev: '3 John' }, @@ -532,7 +784,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: '3 Joรฃo', abbrev: '3Jo' }, tok_pisin: { name: '3 Jon', abbrev: '3Jon' }, indonesian: { name: '3 Yohanes', abbrev: '3Yoh' }, - nepali: { name: 'เฅฉ เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅฉเคฏเฅ‚เคนเคจเฅ' } + nepali: { name: 'เฅฉ เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅฉเคฏเฅ‚เคนเคจเฅ' }, + hindi: { name: 'เฅฉ เคฏเฅ‚เคนเคจเฅเคจเคพ', abbrev: 'เฅฉเคฏเฅ‚เคนเคจเฅ' }, + burmese: { name: 'แƒ แ€šแ€ฑแ€ฌแ€Ÿแ€”แ€บแ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แƒแ€šแ€ฑแ€ฌแ€Ÿแ€”แ€บ' }, + thai: { name: 'เน“ เธขเธญเธซเนŒเธ™', abbrev: 'เน“เธขเธ™' }, + mandarin: { name: '็บฆ็ฟฐไธ‰ไนฆ', abbrev: '็บฆไธ‰' } }, jud: { english: { name: 'Jude', abbrev: 'Jude' }, @@ -540,7 +796,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Judas', abbrev: 'Jd' }, tok_pisin: { name: 'Jut', abbrev: 'Jut' }, indonesian: { name: 'Yudas', abbrev: 'Yud' }, - nepali: { name: 'เคฏเคนเฅ‚เคฆเคพ', abbrev: 'เคฏเคนเฅ‚' } + nepali: { name: 'เคฏเคนเฅ‚เคฆเคพ', abbrev: 'เคฏเคนเฅ‚' }, + hindi: { name: 'เคฏเคนเฅ‚เคฆเคพ', abbrev: 'เคฏเคนเฅ‚' }, + burmese: { name: 'แ€šแ€ฏแ€’แ€ฉแ€แ€ซแ€’แ€…แ€ฌ', abbrev: 'แ€šแ€ฏแ€’' }, + thai: { name: 'เธขเธนเธ”เธฒ', abbrev: 'เธขเธ”' }, + mandarin: { name: '็Šนๅคงไนฆ', abbrev: '็Šน' } }, rev: { english: { name: 'Revelation', abbrev: 'Rev' }, @@ -548,7 +808,11 @@ export const BIBLE_BOOK_NAMES: BibleBookNames = { brazilian_portuguese: { name: 'Apocalipse', abbrev: 'Ap' }, tok_pisin: { name: 'Kamapim Tok Hait', abbrev: 'Kam' }, indonesian: { name: 'Wahyu', abbrev: 'Why' }, - nepali: { name: 'เคชเฅเคฐเค•เคพเคถ', abbrev: 'เคชเฅเคฐเค•เคพ' } + nepali: { name: 'เคชเฅเคฐเค•เคพเคถ', abbrev: 'เคชเฅเคฐเค•เคพ' }, + hindi: { name: 'เคชเฅเคฐเค•เคพเคถเคฟเคคเคตเคพเค•เฅเคฏ', abbrev: 'เคชเฅเคฐเค•เคพ' }, + burmese: { name: 'แ€—แ€ปแ€ฌแ€’แ€ญแ€แ€บแ€€แ€ปแ€™แ€บแ€ธ', abbrev: 'แ€—แ€ปแ€ฌ' }, + thai: { name: 'เธงเธดเธงเธฃเธ“เนŒ', abbrev: 'เธงเธง' }, + mandarin: { name: 'ๅฏ็คบๅฝ•', abbrev: 'ๅฏ' } } }; diff --git a/db/seedData.json b/db/seedData.json index 9abf9438b..28cd46990 100644 --- a/db/seedData.json +++ b/db/seedData.json @@ -118,9 +118,9 @@ "creator_id": null }, { - "id": "lang-por-br", + "id": "lang-hin", "parent_id": null, - "name": "Brazilian Portuguese", + "name": "Hindi", "level": "language", "ui_ready": true, "active": true, @@ -130,9 +130,9 @@ "creator_id": null }, { - "id": "lang-tpi", + "id": "lang-mya", "parent_id": null, - "name": "Tok Pisin", + "name": "Burmese", "level": "language", "ui_ready": true, "active": true, @@ -142,9 +142,9 @@ "creator_id": null }, { - "id": "lang-ind", + "id": "lang-tha", "parent_id": null, - "name": "Indonesian", + "name": "Thai", "level": "language", "ui_ready": true, "active": true, @@ -154,9 +154,9 @@ "creator_id": null }, { - "id": "lang-nep", + "id": "lang-cmn", "parent_id": null, - "name": "Nepali", + "name": "Mandarin", "level": "language", "ui_ready": true, "active": true, @@ -233,10 +233,10 @@ "creator_id": null }, { - "id": "alias-por-br-endonym", - "subject_languoid_id": "lang-por-br", - "label_languoid_id": "lang-por-br", - "name": "Portuguรชs Brasileiro", + "id": "alias-hin-endonym", + "subject_languoid_id": "lang-hin", + "label_languoid_id": "lang-hin", + "name": "เคนเคฟเคจเฅเคฆเฅ€", "alias_type": "endonym", "source_names": ["lexvo"], "active": true, @@ -246,10 +246,10 @@ "creator_id": null }, { - "id": "alias-tpi-endonym", - "subject_languoid_id": "lang-tpi", - "label_languoid_id": "lang-tpi", - "name": "Tok Pisin", + "id": "alias-mya-endonym", + "subject_languoid_id": "lang-mya", + "label_languoid_id": "lang-mya", + "name": "แ€™แ€ผแ€”แ€บแ€™แ€ฌ", "alias_type": "endonym", "source_names": ["lexvo"], "active": true, @@ -259,10 +259,10 @@ "creator_id": null }, { - "id": "alias-ind-endonym", - "subject_languoid_id": "lang-ind", - "label_languoid_id": "lang-ind", - "name": "Bahasa Indonesia", + "id": "alias-tha-endonym", + "subject_languoid_id": "lang-tha", + "label_languoid_id": "lang-tha", + "name": "เน„เธ—เธข", "alias_type": "endonym", "source_names": ["lexvo"], "active": true, @@ -272,10 +272,10 @@ "creator_id": null }, { - "id": "alias-nep-endonym", - "subject_languoid_id": "lang-nep", - "label_languoid_id": "lang-nep", - "name": "เคจเฅ‡เคชเคพเคฒเฅ€", + "id": "alias-cmn-endonym", + "subject_languoid_id": "lang-cmn", + "label_languoid_id": "lang-cmn", + "name": "ๆ™ฎ้€š่ฏ", "alias_type": "endonym", "source_names": ["lexvo"], "active": true, @@ -352,11 +352,11 @@ "creator_id": null }, { - "id": "lsrc-por-br-iso", + "id": "lsrc-hin-iso", "name": "iso639-3", "version": null, - "languoid_id": "lang-por-br", - "unique_identifier": "por", + "languoid_id": "lang-hin", + "unique_identifier": "hin", "url": null, "active": true, "download_profiles": null, @@ -365,11 +365,11 @@ "creator_id": null }, { - "id": "lsrc-tpi-iso", + "id": "lsrc-mya-iso", "name": "iso639-3", "version": null, - "languoid_id": "lang-tpi", - "unique_identifier": "tpi", + "languoid_id": "lang-mya", + "unique_identifier": "mya", "url": null, "active": true, "download_profiles": null, @@ -378,11 +378,11 @@ "creator_id": null }, { - "id": "lsrc-ind-iso", + "id": "lsrc-tha-iso", "name": "iso639-3", "version": null, - "languoid_id": "lang-ind", - "unique_identifier": "ind", + "languoid_id": "lang-tha", + "unique_identifier": "tha", "url": null, "active": true, "download_profiles": null, @@ -391,11 +391,11 @@ "creator_id": null }, { - "id": "lsrc-nep-iso", + "id": "lsrc-cmn-iso", "name": "iso639-3", "version": null, - "languoid_id": "lang-nep", - "unique_identifier": "nep", + "languoid_id": "lang-cmn", + "unique_identifier": "cmn", "url": null, "active": true, "download_profiles": null, diff --git a/hooks/useLocalization.ts b/hooks/useLocalization.ts index 3700cddf6..7ba28a1ab 100644 --- a/hooks/useLocalization.ts +++ b/hooks/useLocalization.ts @@ -45,7 +45,24 @@ function mapLanguoidNameToSupportedLanguage( 'bahasa indonesia': 'indonesian', // Nepali names and endonyms nepali: 'nepali', - เคจเฅ‡เคชเคพเคฒเฅ€: 'nepali' + เคจเฅ‡เคชเคพเคฒเฅ€: 'nepali', + // Hindi names and endonyms + hindi: 'hindi', + เคนเคฟเคจเฅเคฆเฅ€: 'hindi', + เคนเคฟเค‚เคฆเฅ€: 'hindi', + // Burmese names and endonyms + burmese: 'burmese', + แ€™แ€ผแ€”แ€บแ€™แ€ฌ: 'burmese', + myanmar: 'burmese', + // Thai names and endonyms + thai: 'thai', + เน„เธ—เธข: 'thai', + // Mandarin names and endonyms + mandarin: 'mandarin', + 'mandarin chinese': 'mandarin', + ๆ™ฎ้€š่ฏ: 'mandarin', + ไธญๆ–‡: 'mandarin', + chinese: 'mandarin' }; return mapping[normalized] ?? 'english'; @@ -162,5 +179,5 @@ export function useLocalization(languageOverride?: string | null) { return translatedString; }; - return { t, currentLanguage: userLanguage }; + return { t }; } diff --git a/services/localizations.ts b/services/localizations.ts index 1055e8686..31998393f 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -5,7 +5,11 @@ export type SupportedLanguage = | 'brazilian_portuguese' | 'tok_pisin' | 'indonesian' - | 'nepali'; + | 'nepali' + | 'hindi' + | 'burmese' + | 'thai' + | 'mandarin'; /** * Languoid names that have local UI support. @@ -32,7 +36,21 @@ export const SUPPORTED_LANGUAGE_NAMES = new Set([ 'bahasa indonesia', // Nepali 'nepali', - 'เคจเฅ‡เคชเคพเคฒเฅ€' + 'เคจเฅ‡เคชเคพเคฒเฅ€', + // Hindi + 'hindi', + 'เคนเคฟเคจเฅเคฆเฅ€', + // Burmese + 'burmese', + 'แ€™แ€ผแ€”แ€บแ€™แ€ฌ', + // Thai + 'thai', + 'เน„เธ—เธข', + // Mandarin + 'mandarin', + 'mandarin chinese', + 'ๆ™ฎ้€š่ฏ', + 'ไธญๆ–‡' ]); // Define the structure for translations @@ -49,7 +67,11 @@ export const localizations = { brazilian_portuguese: 'Aceitar', tok_pisin: 'Orait', indonesian: 'Terima', - nepali: 'เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเฅ‡เค‚', + burmese: 'แ€œแ€€แ€บแ€แ€ถแ€•แ€ซ', + thai: 'เธขเธญเธกเธฃเธฑเธš', + mandarin: 'ๆŽฅๅ—' }, accountNotVerified: { english: @@ -63,7 +85,14 @@ export const localizations = { indonesian: 'Harap verifikasi alamat email Anda sebelum masuk. Periksa email Anda untuk tautan verifikasi.', nepali: - 'เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅ เค…เค˜เคฟ เค•เฅƒเคชเคฏเคพ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เค เฅ‡เค—เคพเคจเคพ เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ เคฒเคฟเค‚เค•เค•เฅ‹ เคฒเคพเค—เคฟ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคœเคพเคเคš เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅ เค…เค˜เคฟ เค•เฅƒเคชเคฏเคพ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เค เฅ‡เค—เคพเคจเคพ เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ เคฒเคฟเค‚เค•เค•เฅ‹ เคฒเคพเค—เคฟ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคœเคพเคเคš เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค•เฅƒเคชเคฏเคพ เคธเคพเค‡เคจ เค‡เคจ เค•เคฐเคจเฅ‡ เคธเฅ‡ เคชเคนเคฒเฅ‡ เค…เคชเคจเคพ เคˆเคฎเฅ‡เคฒ เคชเคคเคพ เคธเคคเฅเคฏเคพเคชเคฟเคค เค•เคฐเฅ‡เค‚เฅค เคธเคคเฅเคฏเคพเคชเคจ เคฒเคฟเค‚เค• เค•เฅ‡ เคฒเคฟเค เค…เคชเคจเคพ เคˆเคฎเฅ‡เคฒ เคœเคพเค‚เคšเฅ‡เค‚เฅค', + burmese: + 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€™แ€ฎ แ€žแ€„แ€บแแ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€œแ€ญแ€•แ€บแ€…แ€ฌแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซแ‹ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€œแ€„แ€ทแ€บแ€แ€บแ€กแ€แ€ฝแ€€แ€บ แ€žแ€„แ€บแแ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€†แ€ฑแ€ธแ€•แ€ซแ‹', + thai: 'เธเธฃเธธเธ“เธฒเธ•เธฃเธงเธˆเธชเธญเธšเธ—เธตเนˆเธญเธขเธนเนˆเธญเธตเน€เธกเธฅเธ‚เธญเธ‡เธ„เธธเธ“เธเนˆเธญเธ™เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš เธ•เธฃเธงเธˆเธชเธญเธšเธญเธตเน€เธกเธฅเธ‚เธญเธ‡เธ„เธธเธ“เน€เธžเธทเนˆเธญเธฅเธดเธ‡เธเนŒเธขเธทเธ™เธขเธฑเธ™', + mandarin: + '่ฏทๅœจ็™ปๅฝ•ๅ‰้ชŒ่ฏๆ‚จ็š„็”ตๅญ้‚ฎไปถๅœฐๅ€ใ€‚่ฏทๆฃ€ๆŸฅๆ‚จ็š„็”ตๅญ้‚ฎไปถไปฅ่Žทๅ–้ชŒ่ฏ้“พๆŽฅใ€‚' }, done: { english: 'Done', @@ -71,7 +100,11 @@ export const localizations = { brazilian_portuguese: 'Feito', tok_pisin: 'Done', indonesian: 'Selesai', - nepali: 'เคธเคฎเฅเคชเคจเฅเคจ' + nepali: 'เคธเคฎเฅเคชเคจเฅเคจ', + hindi: 'เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™', + mandarin: 'ๅฎŒๆˆ' }, all: { english: 'All', @@ -79,13 +112,21 @@ export const localizations = { brazilian_portuguese: 'Todos', tok_pisin: 'Olgeta', indonesian: 'Semua', - nepali: 'เคธเคฌเฅˆ' + nepali: 'เคธเคฌเฅˆ', + hindi: 'เคธเคญเฅ€', + burmese: 'แ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ', + thai: 'เธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: 'ๅ…จ้ƒจ' }, options: { english: 'Options', spanish: 'Opciones', brazilian_portuguese: 'Opรงรตes', - nepali: 'เคตเคฟเค•เคฒเฅเคชเคนเคฐเฅ‚' + nepali: 'เคตเคฟเค•เคฒเฅเคชเคนเคฐเฅ‚', + hindi: 'เคตเคฟเค•เคฒเฅเคช', + burmese: 'แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€…แ€›แ€ฌแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ•เธฑเธงเน€เธฅเธทเธญเธ', + mandarin: '้€‰้กน' }, membersOnlyCreate: { english: 'Only project members can create content', @@ -93,7 +134,11 @@ export const localizations = { brazilian_portuguese: 'Apenas membros do projeto podem criar conteรบdo', tok_pisin: 'Tasol ol memba bilong projek inap mekim nupela samting', indonesian: 'Hanya anggota proyek yang dapat membuat konten', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเฅ‡ เคฎเคพเคคเฅเคฐ เคธเคพเคฎเค—เฅเคฐเฅ€ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเฅ‡ เคฎเคพเคคเฅเคฐ เคธเคพเคฎเค—เฅเคฐเฅ€ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ', + hindi: 'เค•เฅ‡เคตเคฒ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเคฆเคธเฅเคฏ เคนเฅ€ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฌเคจเคพ เคธเค•เคคเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€žแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เน€เธ‰เธžเธฒเธฐเธชเธกเธฒเธŠเธดเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™เธ—เธตเนˆเธชเธฒเธกเธฒเธฃเธ–เธชเธฃเน‰เธฒเธ‡เน€เธ™เธทเน‰เธญเธซเธฒเน„เธ”เน‰', + mandarin: 'ๅชๆœ‰้กน็›ฎๆˆๅ‘˜ๅฏไปฅๅˆ›ๅปบๅ†…ๅฎน' }, membersOnlyPublish: { english: 'Only project members can save to the cloud', @@ -101,7 +146,11 @@ export const localizations = { brazilian_portuguese: 'Apenas membros do projeto podem salvar na nuvem', tok_pisin: 'Tasol ol memba bilong projek inap save long cloud', indonesian: 'Hanya anggota proyek yang dapat menyimpan ke cloud', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเฅ‡ เคฎเคพเคคเฅเคฐ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅ‡เคญ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเฅ‡ เคฎเคพเคคเฅเคฐ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅ‡เคญ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ', + hindi: 'เค•เฅ‡เคตเคฒ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเคฆเคธเฅเคฏ เคนเฅ€ เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคธเคนเฅ‡เคœ เคธเค•เคคเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€žแ€ฌ cloud แ€žแ€ญแ€ฏแ€ท แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เน€เธ‰เธžเธฒเธฐเธชเธกเธฒเธŠเธดเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™เธ—เธตเนˆเธชเธฒเธกเธฒเธฃเธ–เธšเธฑเธ™เธ—เธถเธเธฅเธ‡เธ„เธฅเธฒเธงเธ”เนŒเน„เธ”เน‰', + mandarin: 'ๅชๆœ‰้กน็›ฎๆˆๅ‘˜ๅฏไปฅไฟๅญ˜ๅˆฐไบ‘็ซฏ' }, apply: { english: 'Apply', @@ -109,7 +158,11 @@ export const localizations = { brazilian_portuguese: 'Aplicar', tok_pisin: 'Putim', indonesian: 'Terapkan', - nepali: 'เคฒเคพเค—เฅ‚ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฒเคพเค—เฅ‚ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฒเคพเค—เฅ‚ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เนƒเธŠเน‰', + mandarin: 'ๅบ”็”จ' }, avatar: { english: 'Avatar', @@ -117,7 +170,11 @@ export const localizations = { brazilian_portuguese: 'Avatar', tok_pisin: 'Avatar', indonesian: 'Avatar', - nepali: 'เค…เคตเคคเคพเคฐ' + nepali: 'เค…เคตเคคเคพเคฐ', + hindi: 'เค…เคตเคคเคพเคฐ', + burmese: 'แ€•แ€ฏแ€ถแ€›แ€ญแ€•แ€บ', + thai: 'เธญเธงเธ•เธฒเธฃ', + mandarin: 'ๅคดๅƒ' }, backToLogin: { english: 'Back to Login', @@ -125,7 +182,11 @@ export const localizations = { brazilian_portuguese: 'Voltar para o Login', tok_pisin: 'Go bek long Login', indonesian: 'Kembali ke Login', - nepali: 'เคฒเค—เค‡เคจเคฎเคพ เคซเคฐเฅเค•เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฒเค—เค‡เคจเคฎเคพ เคซเคฐเฅเค•เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฒเฅ‰เค—เคฟเคจ เคชเคฐ เคตเคพเคชเคธ เคœเคพเคเค‚', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€žแ€ญแ€ฏแ€ท แ€•แ€ผแ€”แ€บแ€žแ€ฝแ€ฌแ€ธแ€•แ€ซ', + thai: 'เธเธฅเธฑเธšเน„เธ›เธ—เธตเนˆเธเธฒเธฃเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš', + mandarin: '่ฟ”ๅ›ž็™ปๅฝ•' }, checkEmail: { english: 'Please check your email', @@ -133,7 +194,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, verifique seu e-mail', tok_pisin: 'Plis checkum email bilong yu', indonesian: 'Silakan periksa email Anda', - nepali: 'เค•เฅƒเคชเคฏเคพ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคœเคพเคเคš เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคœเคพเคเคš เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เค…เคชเคจเคพ เคˆเคฎเฅ‡เคฒ เคœเคพเค‚เคšเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแแ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€†แ€ฑแ€ธแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเธ•เธฃเธงเธˆเธชเธญเธšเธญเธตเน€เธกเธฅเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: '่ฏทๆฃ€ๆŸฅๆ‚จ็š„็”ตๅญ้‚ฎไปถ' }, checkEmailForResetLink: { english: 'Please check your email for the password reset link', @@ -143,7 +208,11 @@ export const localizations = { 'Por favor, verifique seu e-mail para o link de redefiniรงรฃo de senha', tok_pisin: 'Plis checkum email bilong yu long password reset link', indonesian: 'Silakan periksa email Anda untuk tautan reset kata sandi', - nepali: 'เค•เฅƒเคชเคฏเคพ เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เคฒเคฟเค‚เค•เค•เฅ‹ เคฒเคพเค—เคฟ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคœเคพเคเคš เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เคฒเคฟเค‚เค•เค•เฅ‹ เคฒเคพเค—เคฟ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคœเคพเคเคš เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เคฒเคฟเค‚เค• เค•เฅ‡ เคฒเคฟเค เค…เคชเคจเคพ เคˆเคฎเฅ‡เคฒ เคœเคพเค‚เคšเฅ‡เค‚', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บแ€œแ€„แ€ทแ€บแ€แ€บแ€กแ€แ€ฝแ€€แ€บ แ€žแ€„แ€บแแ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€†แ€ฑแ€ธแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเธ•เธฃเธงเธˆเธชเธญเธšเธญเธตเน€เธกเธฅเธ‚เธญเธ‡เธ„เธธเธ“เน€เธžเธทเนˆเธญเธฅเธดเธ‡เธเนŒเธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: '่ฏทๆฃ€ๆŸฅๆ‚จ็š„็”ตๅญ้‚ฎไปถไปฅ่Žทๅ–ๅฏ†็ ้‡็ฝฎ้“พๆŽฅ' }, confirmNewPassword: { english: 'Confirm New Password', @@ -151,7 +220,11 @@ export const localizations = { brazilian_portuguese: 'Confirmar Nova Senha', tok_pisin: 'Confirm nupela password', indonesian: 'Konfirmasi Kata Sandi Baru', - nepali: 'เคจเคฏเคพเค เคชเคพเคธเคตเคฐเฅเคก เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคจเคฏเคพเค เคชเคพเคธเคตเคฐเฅเคก เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคจเคฏเคพ เคชเคพเคธเคตเคฐเฅเคก เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€กแ€žแ€…แ€บแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธขเธทเธ™เธขเธฑเธ™เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เนƒเธซเธกเนˆ', + mandarin: '็กฎ่ฎคๆ–ฐๅฏ†็ ' }, confirmPassword: { english: 'Confirm Password', @@ -159,7 +232,11 @@ export const localizations = { brazilian_portuguese: 'Confirmar Senha', tok_pisin: 'Confirm password', indonesian: 'Konfirmasi Kata Sandi', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธขเธทเธ™เธขเธฑเธ™เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: '็กฎ่ฎคๅฏ†็ ' }, createObject: { english: 'Create', @@ -167,7 +244,11 @@ export const localizations = { brazilian_portuguese: 'Criar', tok_pisin: 'Create', indonesian: 'Buat', - nepali: 'เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเคจเคพเคเค‚', + burmese: 'แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡', + mandarin: 'ๅˆ›ๅปบ' }, projectName: { english: 'Project Name', @@ -175,7 +256,11 @@ export const localizations = { brazilian_portuguese: 'Nome do Projeto', tok_pisin: 'Project Name', indonesian: 'Nama Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเค•เฅ‹ เคจเคพเคฎ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเค•เฅ‹ เคจเคพเคฎ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เคพ เคจเคพเคฎ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€กแ€™แ€Šแ€บ', + thai: 'เธŠเธทเนˆเธญเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้กน็›ฎๅ็งฐ' }, newProject: { english: 'New Project', @@ -183,15 +268,27 @@ export const localizations = { brazilian_portuguese: 'Novo Projeto', tok_pisin: 'Nupela Project', indonesian: 'Proyek Baru', - nepali: 'เคจเคฏเคพเค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ' + nepali: 'เคจเคฏเคพเค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ', + hindi: 'เคจเคˆ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€กแ€žแ€…แ€บ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเนƒเธซเธกเนˆ', + mandarin: 'ๆ–ฐ้กน็›ฎ' }, newQuest: { english: 'New Quest', - nepali: 'เคจเคฏเคพเค เค•เฅเคตเฅ‡เคธเฅเคŸ' + nepali: 'เคจเคฏเคพเค เค•เฅเคตเฅ‡เคธเฅเคŸ', + hindi: 'เคจเคฏเคพ เค•เฅเคตเฅ‡เคธเฅเคŸ', + burmese: 'Quest แ€กแ€žแ€…แ€บ', + thai: 'เน€เธ„เธงเธชเธ•เนŒเนƒเธซเธกเนˆ', + mandarin: 'ๆ–ฐไปปๅŠก' }, questName: { english: 'Quest Name', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคจเคพเคฎ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคจเคพเคฎ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เคพ เคจเคพเคฎ', + burmese: 'Quest แ€กแ€™แ€Šแ€บ', + thai: 'เธŠเธทเนˆเธญเน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ไปปๅŠกๅ็งฐ' }, description: { english: 'Description', @@ -199,7 +296,11 @@ export const localizations = { brazilian_portuguese: 'Descriรงรฃo', tok_pisin: 'Description', indonesian: 'Deskripsi', - nepali: 'เคตเคฟเคตเคฐเคฃ' + nepali: 'เคตเคฟเคตเคฐเคฃ', + hindi: 'เคตเคฟเคตเคฐเคฃ', + burmese: 'แ€–แ€ฑแ€ฌแ€บแ€•แ€ผแ€แ€ปแ€€แ€บ', + thai: 'เธ„เธณเธญเธ˜เธดเธšเธฒเธข', + mandarin: 'ๆ่ฟฐ' }, visible: { english: 'Visible', @@ -207,7 +308,11 @@ export const localizations = { brazilian_portuguese: 'Visible', tok_pisin: 'Visible', indonesian: 'Visible', - nepali: 'เคฆเฅ‡เค–เคฟเคจเฅ‡' + nepali: 'เคฆเฅ‡เค–เคฟเคจเฅ‡', + hindi: 'เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ', + burmese: 'แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰', + mandarin: 'ๅฏ่ง' }, private: { english: 'Private', @@ -215,7 +320,11 @@ export const localizations = { brazilian_portuguese: 'Privado', tok_pisin: 'Private', indonesian: 'Private', - nepali: 'เคจเคฟเคœเฅ€' + nepali: 'เคจเคฟเคœเฅ€', + hindi: 'เคจเคฟเคœเฅ€', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ', + thai: 'เธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: '็งๆœ‰' }, date: { english: 'Date', @@ -223,7 +332,11 @@ export const localizations = { brazilian_portuguese: 'Data', tok_pisin: 'De', indonesian: 'Tanggal', - nepali: 'เคฎเคฟเคคเคฟ' + nepali: 'เคฎเคฟเคคเคฟ', + hindi: 'เคคเคพเคฐเฅ€เค–', + burmese: 'แ€›แ€€แ€บแ€…แ€ฝแ€ฒ', + thai: 'เธงเธฑเธ™เธ—เธตเนˆ', + mandarin: 'ๆ—ฅๆœŸ' }, decline: { english: 'Decline', @@ -231,7 +344,11 @@ export const localizations = { brazilian_portuguese: 'Rejeitar', tok_pisin: 'No', indonesian: 'Tolak', - nepali: 'เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเฅ‡เค‚', + burmese: 'แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซ', + thai: 'เธ›เธเธดเน€เธชเธ˜', + mandarin: 'ๆ‹’็ป' }, downloadAnyway: { english: 'Download Anyway', @@ -239,7 +356,11 @@ export const localizations = { brazilian_portuguese: 'Descarregar de qualquer forma', tok_pisin: 'Download tasol', indonesian: 'Unduh Saja', - nepali: 'เคœเฅ‡ เคญเค เคชเคจเคฟ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคœเฅ‡ เคญเค เคชเคจเคฟ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคตเฅˆเคธเฅ‡ เคญเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€˜แ€ฌแ€•แ€ฒแ€–แ€ผแ€…แ€บแ€–แ€ผแ€…แ€บ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ•เนˆเธญเน„เธ›', + mandarin: 'ไป็„ถไธ‹่ฝฝ' }, downloadProject: { english: 'Download Project', @@ -247,7 +368,11 @@ export const localizations = { brazilian_portuguese: 'Descarregar Projeto', tok_pisin: 'Download project', indonesian: 'Unduh Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: 'ไธ‹่ฝฝ้กน็›ฎ' }, downloadQuest: { english: 'Download Quest', @@ -255,7 +380,11 @@ export const localizations = { brazilian_portuguese: 'Descarregar Quest', nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', tok_pisin: 'Download quest', - indonesian: 'Unduh Quest' + indonesian: 'Unduh Quest', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'Quest แ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ไธ‹่ฝฝไปปๅŠก' }, downloadProjectOfflineWarning: { english: @@ -269,7 +398,14 @@ export const localizations = { indonesian: 'Jika Anda tidak mengunduh proyek, Anda tidak akan dapat berkontribusi secara offline. Anda dapat mengunduhnya nanti dengan menekan tombol unduh di kartu proyek.', nepali: - 'เคฏเคฆเคฟ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคญเคเคจ เคญเคจเฅ‡, เคคเคชเคพเคˆเค‚ เค…เคซเคฒเคพเค‡เคจ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเค•เฅเคทเคฎ เคนเฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคคเคชเคพเคˆเค‚ เคชเค›เคฟ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค•เคพเคฐเฅเคกเค•เฅ‹ เคกเคพเค‰เคจเคฒเฅ‹เคก เคฌเคŸเคจ เคฅเคฟเคšเฅ‡เคฐ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคฏเคฆเคฟ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคญเคเคจ เคญเคจเฅ‡, เคคเคชเคพเคˆเค‚ เค…เคซเคฒเคพเค‡เคจ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเค•เฅเคทเคฎ เคนเฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคคเคชเคพเคˆเค‚ เคชเค›เคฟ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค•เคพเคฐเฅเคกเค•เฅ‹ เคกเคพเค‰เคจเคฒเฅ‹เคก เคฌเคŸเคจ เคฅเคฟเคšเฅ‡เคฐ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เคฏเคฆเคฟ เค†เคช เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคจเคนเฅ€เค‚ เค•เคฐเคคเฅ‡ เคนเฅˆเค‚, เคคเฅ‹ เค†เคช เค‘เคซเคฒเคพเค‡เคจ เคฏเฅ‹เค—เคฆเคพเคจ เคจเคนเฅ€เค‚ เคฆเฅ‡ เคธเค•เฅ‡เค‚เค—เฅ‡เฅค เค†เคช เคฌเคพเคฆ เคฎเฅ‡เค‚ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เคพเคฐเฅเคก เค•เฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เคฌเคŸเคจ เคฆเคฌเคพเค•เคฐ เค‡เคธเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€™แ€œแ€ฏแ€•แ€บแ€•แ€ซแ€€แŠ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌแ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บ แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€™แ€•แ€ฑแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€”แ€ฑแ€ฌแ€€แ€บแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€แ€บแ€แ€ฝแ€„แ€บ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€แ€œแ€ฏแ€แ€บแ€€แ€ญแ€ฏ แ€”แ€พแ€ญแ€•แ€บแ€แ€ผแ€„แ€บแ€ธแ€–แ€ผแ€„แ€ทแ€บ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธซเธฒเธเธ„เธธเธ“เน„เธกเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃ เธ„เธธเธ“เธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนเธšเธšเธญเธญเธŸเน„เธฅเธ™เนŒเน„เธ”เน‰ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธ”เน‰เนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡เน‚เธ”เธขเธเธ”เธ›เธธเนˆเธกเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธšเธ™เธเธฒเธฃเนŒเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: + 'ๅฆ‚ๆžœๆ‚จไธไธ‹่ฝฝ้กน็›ฎ๏ผŒๆ‚จๅฐ†ๆ— ๆณ•็ฆป็บฟ่ดก็Œฎใ€‚ๆ‚จๅฏไปฅ็จๅŽ้€š่ฟ‡ๆŒ‰้กน็›ฎๅกไธŠ็š„ไธ‹่ฝฝๆŒ‰้’ฎๆฅไธ‹่ฝฝๅฎƒใ€‚' }, downloadProjectWhenRequestSent: { english: 'Download project when request is sent', @@ -277,7 +413,11 @@ export const localizations = { brazilian_portuguese: 'Baixar projeto quando a solicitaรงรฃo for enviada', tok_pisin: 'Download project taim request i go', indonesian: 'Unduh proyek saat permintaan dikirim', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคชเค เคพเค‡เคเคฆเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคชเค เคพเค‡เคเคฆเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคญเฅ‡เคœเฅ‡ เคœเคพเคจเฅ‡ เคชเคฐ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€•แ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃเน€เธกเธทเนˆเธญเธชเนˆเธ‡เธ„เธณเธ‚เธญ', + mandarin: 'ๅ‘้€่ฏทๆฑ‚ๆ—ถไธ‹่ฝฝ้กน็›ฎ' }, discoveringQuestData: { english: 'Discovering Quest Data', @@ -285,7 +425,11 @@ export const localizations = { brazilian_portuguese: 'Descobrindo Dados da Missรฃo', tok_pisin: 'Painimaut long Quest Data', indonesian: 'Menemukan Data Quest', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคกเคพเคŸเคพ เค–เฅ‹เคœเฅเคฆเฅˆ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคกเคพเคŸเคพ เค–เฅ‹เคœเฅเคฆเฅˆ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคกเฅ‡เคŸเคพ เค–เฅ‹เคœ เคฐเคนเฅ‡ เคนเฅˆเค‚', + burmese: 'Quest แ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ„เน‰เธ™เธซเธฒเธ‚เน‰เธญเธกเธนเธฅเน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ๆญฃๅœจๅ‘็ŽฐไปปๅŠกๆ•ฐๆฎ' }, offloadQuest: { english: 'Offload Quest', @@ -293,7 +437,11 @@ export const localizations = { brazilian_portuguese: 'Descarregar Quest', tok_pisin: 'Rausim Quest', indonesian: 'Lepas Quest', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคนเคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคนเคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค…เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'Quest แ€€แ€ญแ€ฏ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€•แ€ซ', + thai: 'เธ–เธญเธ”เน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ๅธ่ฝฝไปปๅŠก' }, offloadQuestDescription: { english: 'Remove local data to free up storage', @@ -301,7 +449,11 @@ export const localizations = { brazilian_portuguese: 'Remover dados locais para liberar armazenamento', tok_pisin: 'Rausim data long freeup storage', indonesian: 'Hapus data lokal untuk membebaskan penyimpanan', - nepali: 'เคญเคฃเฅเคกเคพเคฐเคฃ เค–เคพเคฒเฅ€ เค—เคฐเฅเคจ เคธเฅเคฅเคพเคจเฅ€เคฏ เคกเคพเคŸเคพ เคนเคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคญเคฃเฅเคกเคพเคฐเคฃ เค–เคพเคฒเฅ€ เค—เคฐเฅเคจ เคธเฅเคฅเคพเคจเฅ€เคฏ เคกเคพเคŸเคพ เคนเคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคญเค‚เคกเคพเคฐเคฃ เค–เคพเคฒเฅ€ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเฅเคฅเคพเคจเฅ€เคฏ เคกเฅ‡เคŸเคพ เคนเคŸเคพเคเค‚', + burmese: 'แ€žแ€ญแ€ฏแ€œแ€พแ€ฑแ€ฌแ€„แ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€œแ€ฝแ€แ€บแ€œแ€•แ€บแ€…แ€ฑแ€›แ€”แ€บ แ€’แ€ฑแ€žแ€แ€ฝแ€„แ€บแ€ธแ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€•แ€ซ', + thai: 'เธฅเธšเธ‚เน‰เธญเธกเธนเธฅเธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™เน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅ', + mandarin: 'ๅˆ ้™คๆœฌๅœฐๆ•ฐๆฎไปฅ้‡Šๆ”พๅญ˜ๅ‚จ็ฉบ้—ด' }, verifyingCloudData: { english: 'Verifying data in cloud...', @@ -309,7 +461,11 @@ export const localizations = { brazilian_portuguese: 'Verificando dados na nuvem...', tok_pisin: 'Checkim data long klaud...', indonesian: 'Memverifikasi data di cloud...', - nepali: 'เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคกเคพเคŸเคพ เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคกเคพเคŸเคพ เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคกเฅ‡เคŸเคพ เคธเคคเฅเคฏเคพเคชเคฟเคค เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'cloud แ€แ€ฝแ€„แ€บ แ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ•เธฃเธงเธˆเธชเธญเธšเธ‚เน‰เธญเธกเธนเธฅเนƒเธ™เธ„เธฅเธฒเธงเธ”เนŒ...', + mandarin: 'ๆญฃๅœจ้ชŒ่ฏไบ‘็ซฏๆ•ฐๆฎ...' }, pendingUploadsDetected: { english: 'Pending uploads detected', @@ -317,7 +473,11 @@ export const localizations = { brazilian_portuguese: 'Uploads pendentes detectados', tok_pisin: 'Painimaut sampela hap i no go yet', indonesian: 'Mendeteksi upload tertunda', - nepali: 'เคฌเคพเคเค•เฅ€ เค…เคชเคฒเฅ‹เคกเคนเคฐเฅ‚ เคชเคคเฅเคคเคพ เคฒเคพเค—เฅเคฏเฅ‹' + nepali: 'เคฌเคพเคเค•เฅ€ เค…เคชเคฒเฅ‹เคกเคนเคฐเฅ‚ เคชเคคเฅเคคเคพ เคฒเคพเค—เฅเคฏเฅ‹', + hindi: 'เคฒเค‚เคฌเคฟเคค เค…เคชเคฒเฅ‹เคก เค•เคพ เคชเคคเคพ เคšเคฒเคพ', + burmese: 'แ€†แ€ญแ€ฏแ€„แ€บแ€ธแ€„แ€ถแ€ทแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€กแ€•แ€บแ€œแ€ฏแ€’แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€žแ€Šแ€บ', + thai: 'เธ•เธฃเธงเธˆเธžเธšเธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”เธ—เธตเนˆเธฃเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ', + mandarin: 'ๆฃ€ๆต‹ๅˆฐๅพ…ไธŠไผ ' }, pendingUploadsMessage: { english: @@ -331,7 +491,13 @@ export const localizations = { indonesian: 'Harap tunggu semua perubahan terupload ke cloud sebelum melepas. Sambungkan ke internet dan tunggu sinkronisasi selesai.', nepali: - 'เค•เฅƒเคชเคฏเคพ เคนเคŸเคพเค‰เคจเฅ เค…เค˜เคฟ เคธเคฌเฅˆ เคชเคฐเคฟเคตเคฐเฅเคคเคจเคนเคฐเฅ‚ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เค…เคชเคฒเฅ‹เคก เคนเฅเคจเค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคจเฅเคนเฅ‹เคธเฅเฅค เค‡เคจเฅเคŸเคฐเคจเฅ‡เคŸเคฎเคพ เคœเคกเคพเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคธเคฟเค™เฅเค• เคชเฅ‚เคฐเคพ เคนเฅเคจเค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคจเฅเคนเฅ‹เคธเฅเฅค' + 'เค•เฅƒเคชเคฏเคพ เคนเคŸเคพเค‰เคจเฅ เค…เค˜เคฟ เคธเคฌเฅˆ เคชเคฐเคฟเคตเคฐเฅเคคเคจเคนเคฐเฅ‚ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เค…เคชเคฒเฅ‹เคก เคนเฅเคจเค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคจเฅเคนเฅ‹เคธเฅเฅค เค‡เคจเฅเคŸเคฐเคจเฅ‡เคŸเคฎเคพ เคœเคกเคพเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคธเคฟเค™เฅเค• เคชเฅ‚เคฐเคพ เคนเฅเคจเค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค•เฅƒเคชเคฏเคพ เค…เคจเคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคธเฅ‡ เคชเคนเคฒเฅ‡ เคธเคญเฅ€ เคชเคฐเคฟเคตเคฐเฅเคคเคจเฅ‹เค‚ เค•เฅ‡ เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เค…เคชเคฒเฅ‹เคก เคนเฅ‹เคจเฅ‡ เค•เฅ€ เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เค•เคฐเฅ‡เค‚เฅค เค‡เค‚เคŸเคฐเคจเฅ‡เคŸ เคธเฅ‡ เค•เคจเฅ‡เค•เฅเคŸ เค•เคฐเฅ‡เค‚ เค”เคฐ เคธเคฟเค‚เค• เคชเฅ‚เคฐเคพ เคนเฅ‹เคจเฅ‡ เค•เฅ€ เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€™แ€ฎ cloud แ€žแ€ญแ€ฏแ€ท แ€กแ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€œแ€ฒแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€กแ€•แ€บแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€•แ€ซแ‹ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€žแ€ญแ€ฏแ€ท แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€•แ€ผแ€ฎแ€ธ sync แ€•แ€ผแ€ฎแ€ธแ€™แ€ผแ€ฑแ€ฌแ€€แ€บแ€žแ€Šแ€บแ€กแ€‘แ€ญ แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€•แ€ซแ‹', + thai: 'เธเธฃเธธเธ“เธฒเธฃเธญเนƒเธซเน‰เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธฑเน‰เธ‡เธซเธกเธ”เธญเธฑเธ›เน‚เธซเธฅเธ”เน„เธ›เธขเธฑเธ‡เธ„เธฅเธฒเธงเธ”เนŒเธเนˆเธญเธ™เธ–เธญเธ”เธญเธญเธ เน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•เนเธฅเธฐเธฃเธญเนƒเธซเน‰เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเน€เธชเธฃเน‡เธˆเธชเธกเธšเธนเธฃเธ“เนŒ', + mandarin: '่ฏทๅœจๅธ่ฝฝๅ‰็ญ‰ๅพ…ๆ‰€ๆœ‰ๆ›ดๆ”นไธŠไผ ๅˆฐไบ‘็ซฏใ€‚่ฟžๆŽฅๅˆฐไบ’่”็ฝ‘ๅนถ็ญ‰ๅพ…ๅŒๆญฅๅฎŒๆˆใ€‚' }, readyToOffload: { english: 'Ready to offload', @@ -339,7 +505,11 @@ export const localizations = { brazilian_portuguese: 'Pronto para descarregar', tok_pisin: 'Redi long rausim', indonesian: 'Siap untuk melepas', - nepali: 'เคนเคŸเคพเค‰เคจ เคคเคฏเคพเคฐ' + nepali: 'เคนเคŸเคพเค‰เคจ เคคเคฏเคพเคฐ', + hindi: 'เค…เคจเคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคคเฅˆเคฏเคพเคฐ', + burmese: 'แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€›แ€”แ€บ แ€กแ€†แ€„แ€บแ€žแ€„แ€ทแ€บ', + thai: 'เธžเธฃเน‰เธญเธกเธ–เธญเธ”เธญเธญเธ', + mandarin: 'ๅ‡†ๅค‡ๅธ่ฝฝ' }, offloadWarning: { english: @@ -353,7 +523,13 @@ export const localizations = { indonesian: 'Ini akan menghapus salinan lokal. Data akan tetap aman di cloud dan dapat diunduh kembali nanti.', nepali: - 'เคฏเคธเคฒเฅ‡ เคธเฅเคฅเคพเคจเฅ€เคฏ เคชเฅเคฐเคคเคฟเคฒเคฟเคชเคฟเคนเคฐเฅ‚ เคฎเฅ‡เคŸเฅเคจเฅ‡เค›เฅค เคกเคพเคŸเคพ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเคจเฅ‡เค› เคฐ เคชเค›เคฟ เคชเฅเคจ: เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค' + 'เคฏเคธเคฒเฅ‡ เคธเฅเคฅเคพเคจเฅ€เคฏ เคชเฅเคฐเคคเคฟเคฒเคฟเคชเคฟเคนเคฐเฅ‚ เคฎเฅ‡เคŸเฅเคจเฅ‡เค›เฅค เคกเคพเคŸเคพ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเคจเฅ‡เค› เคฐ เคชเค›เคฟ เคชเฅเคจ: เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค', + hindi: + 'เคฏเคน เคธเฅเคฅเคพเคจเฅ€เคฏ เคชเฅเคฐเคคเคฟเคฏเคพเค‚ เคนเคŸเคพ เคฆเฅ‡เค—เคพเฅค เคกเฅ‡เคŸเคพ เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเฅ‡เค—เคพ เค”เคฐ เคฌเคพเคฆ เคฎเฅ‡เค‚ เคซเคฟเคฐ เคธเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพ เคนเฅˆเฅค', + burmese: + 'แŽแ€„แ€บแ€ธแ€žแ€Šแ€บ แ€’แ€ฑแ€žแ€แ€ฝแ€„แ€บแ€ธแ€™แ€ญแ€แ€นแ€แ€ฐแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ซแ€™แ€Šแ€บแ‹ แ€’แ€ฑแ€แ€ฌแ€žแ€Šแ€บ cloud แ€แ€ฝแ€„แ€บ แ€˜แ€ฑแ€ธแ€€แ€„แ€บแ€ธแ€…แ€ฝแ€ฌ แ€›แ€พแ€ญแ€”แ€ฑแ€•แ€ผแ€ฎแ€ธ แ€”แ€ฑแ€ฌแ€€แ€บแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ™เธตเน‰เธˆเธฐเธฅเธšเธชเธณเน€เธ™เธฒเธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™ เธ‚เน‰เธญเธกเธนเธฅเธˆเธฐเธขเธฑเธ‡เธ„เธ‡เธ›เธฅเธญเธ”เธ เธฑเธขเนƒเธ™เธ„เธฅเธฒเธงเธ”เนŒเนเธฅเธฐเธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนƒเธซเธกเนˆเน„เธ”เน‰เนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡', + mandarin: '่ฟ™ๅฐ†ๅˆ ้™คๆœฌๅœฐๅ‰ฏๆœฌใ€‚ๆ•ฐๆฎๅฐ†ๅฎ‰ๅ…จๅœฐไฟ็•™ๅœจไบ‘็ซฏ๏ผŒ็จๅŽๅฏไปฅ้‡ๆ–ฐไธ‹่ฝฝใ€‚' }, storageToFree: { english: 'Storage to Free', @@ -361,7 +537,11 @@ export const localizations = { brazilian_portuguese: 'Armazenamento a Liberar', tok_pisin: 'Storage Long Freeup', indonesian: 'Penyimpanan yang Dibebaskan', - nepali: 'เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅ‡ เคญเคฃเฅเคกเคพเคฐเคฃ' + nepali: 'เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅ‡ เคญเคฃเฅเคกเคพเคฐเคฃ', + hindi: 'เคฎเฅเค•เฅเคค เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคญเค‚เคกเคพเคฐเคฃ', + burmese: 'แ€œแ€ฝแ€แ€บแ€œแ€•แ€บแ€…แ€ฑแ€›แ€”แ€บ แ€žแ€ญแ€ฏแ€œแ€พแ€ฑแ€ฌแ€„แ€บแ€™แ€พแ€ฏ', + thai: 'เธžเธทเน‰เธ™เธ—เธตเนˆเน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅเธ—เธตเนˆเธˆเธฐเธ›เธฅเนˆเธญเธข', + mandarin: '่ฆ้‡Šๆ”พ็š„ๅญ˜ๅ‚จ็ฉบ้—ด' }, continue: { english: 'Continue', @@ -369,7 +549,11 @@ export const localizations = { brazilian_portuguese: 'Continuar', tok_pisin: 'Go Het', indonesian: 'Lanjutkan', - nepali: 'เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคœเคพเคฐเฅ€ เคฐเค–เฅ‡เค‚', + burmese: 'แ€†แ€€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญ', + mandarin: '็ปง็ปญ' }, continueToOffload: { english: 'Offload from Device', @@ -377,7 +561,11 @@ export const localizations = { brazilian_portuguese: 'Descarregar do Dispositivo', tok_pisin: 'Rausim long Mashin', indonesian: 'Lepas dari Perangkat', - nepali: 'เค‰เคชเค•เคฐเคฃเคฌเคพเคŸ เคนเคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค‰เคชเค•เคฐเคฃเคฌเคพเคŸ เคนเคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคกเคฟเคตเคพเค‡เคธ เคธเฅ‡ เค…เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€€แ€บแ€•แ€…แ€นแ€…แ€Šแ€บแ€ธแ€™แ€พ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€•แ€ซ', + thai: 'เธ–เธญเธ”เธญเธญเธเธˆเธฒเธเธญเธธเธ›เธเธฃเธ“เนŒ', + mandarin: 'ไปŽ่ฎพๅค‡ๅธ่ฝฝ' }, offloadingQuest: { english: 'Offloading quest...', @@ -385,7 +573,11 @@ export const localizations = { brazilian_portuguese: 'Descarregando quest...', tok_pisin: 'Rausim quest...', indonesian: 'Melepas quest...', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคนเคŸเคพเค‰เคเคฆเฅˆ...' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคนเคŸเคพเค‰เคเคฆเฅˆ...', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค…เคจเคฒเฅ‹เคก เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'Quest แ€€แ€ญแ€ฏ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ–เธญเธ”เน€เธ„เธงเธชเธ•เนŒ...', + mandarin: 'ๆญฃๅœจๅธ่ฝฝไปปๅŠก...' }, offloadComplete: { english: 'Quest offloaded successfully', @@ -393,7 +585,11 @@ export const localizations = { brazilian_portuguese: 'Quest descarregada com sucesso', tok_pisin: 'Quest i rausim orait', indonesian: 'Quest berhasil dilepas', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคนเคŸเคพเค‡เคฏเฅ‹' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคนเคŸเคพเค‡เคฏเฅ‹', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เค…เคจเคฒเฅ‹เคก เคนเฅ‹ เค—เคฏเคพ', + burmese: 'Quest แ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ–เธญเธ”เน€เธ„เธงเธชเธ•เนŒเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ไปปๅŠกๅธ่ฝฝๆˆๅŠŸ' }, offloadError: { english: 'Failed to offload quest', @@ -401,7 +597,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao descarregar quest', tok_pisin: 'Pasin long rausim quest i no inap', indonesian: 'Gagal melepas quest', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคนเคŸเคพเค‰เคจ เค…เคธเคซเคฒ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคนเคŸเคพเค‰เคจ เค…เคธเคซเคฒ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค…เคจเคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'Quest แ€€แ€ญแ€ฏ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธ–เธญเธ”เน€เธ„เธงเธชเธ•เนŒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅธ่ฝฝไปปๅŠกๅคฑ่ดฅ' }, cannotOffloadErrors: { english: 'Cannot offload - errors detected', @@ -409,7 +609,11 @@ export const localizations = { brazilian_portuguese: 'Nรฃo รฉ possรญvel descarregar - erros detectados', tok_pisin: 'No inap rausim - painimaut sampela rong', indonesian: 'Tidak dapat melepas - kesalahan terdeteksi', - nepali: 'เคนเคŸเคพเค‰เคจ เคธเค•เคฟเคเคฆเฅˆเคจ - เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคชเคคเฅเคคเคพ เคฒเคพเค—เฅเคฏเฅ‹' + nepali: 'เคนเคŸเคพเค‰เคจ เคธเค•เคฟเคเคฆเฅˆเคจ - เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคชเคคเฅเคคเคพ เคฒเคพเค—เฅเคฏเฅ‹', + hindi: 'เค…เคจเคฒเฅ‹เคก เคจเคนเฅ€เค‚ เค•เคฐ เคธเค•เคคเฅ‡ - เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคชเคพเคˆ เค—เคˆเค‚', + burmese: 'แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแแ€™แ€›แ€•แ€ซ - แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€žแ€Šแ€บ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธ–เธญเธ”เธญเธญเธเน„เธ”เน‰ - เธ•เธฃเธงเธˆเธžเธšเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”', + mandarin: 'ๆ— ๆณ•ๅธ่ฝฝ - ๆฃ€ๆต‹ๅˆฐ้”™่ฏฏ' }, allDataVerifiedInCloud: { english: 'All data verified in cloud', @@ -417,7 +621,11 @@ export const localizations = { brazilian_portuguese: 'Todos os dados verificados na nuvem', tok_pisin: 'Olgeta data i stret long klaud', indonesian: 'Semua data terverifikasi di cloud', - nepali: 'เคธเคฌเฅˆ เคกเคพเคŸเคพ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคชเฅเคฐเคฎเคพเคฃเคฟเคค' + nepali: 'เคธเคฌเฅˆ เคกเคพเคŸเคพ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคชเฅเคฐเคฎเคพเคฃเคฟเคค', + hindi: 'เคธเคญเฅ€ เคกเฅ‡เคŸเคพ เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคธเคคเฅเคฏเคพเคชเคฟเคค', + burmese: 'cloud แ€แ€ฝแ€„แ€บ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เน„เธ”เน‰เธฃเธฑเธšเธเธฒเธฃเธขเธทเธ™เธขเธฑเธ™เนƒเธ™เธ„เธฅเธฒเธงเธ”เนŒ', + mandarin: 'ๆ‰€ๆœ‰ๆ•ฐๆฎๅทฒๅœจไบ‘็ซฏ้ชŒ่ฏ' }, checkingPendingChanges: { english: 'Checking for pending changes...', @@ -425,7 +633,11 @@ export const localizations = { brazilian_portuguese: 'Verificando alteraรงรตes pendentes...', tok_pisin: 'Checkim sampela senis i no go yet...', indonesian: 'Memeriksa perubahan tertunda...', - nepali: 'เคฌเคพเคเค•เฅ€ เคชเคฐเคฟเคตเคฐเฅเคคเคจเคนเคฐเฅ‚ เคœเคพเคเคš เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคฌเคพเคเค•เฅ€ เคชเคฐเคฟเคตเคฐเฅเคคเคจเคนเคฐเฅ‚ เคœเคพเคเคš เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคฒเค‚เคฌเคฟเคค เคชเคฐเคฟเคตเคฐเฅเคคเคจเฅ‹เค‚ เค•เฅ€ เคœเคพเค‚เคš เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€†แ€ญแ€ฏแ€„แ€บแ€ธแ€„แ€ถแ€ทแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€กแ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€œแ€ฒแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€†แ€ฑแ€ธแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ•เธฃเธงเธˆเธชเธญเธšเธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เธ—เธตเนˆเธฃเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ...', + mandarin: 'ๆญฃๅœจๆฃ€ๆŸฅๅพ…ๅค„็†็š„ๆ›ดๆ”น...' }, verifyingDatabaseRecords: { english: 'Verifying database records', @@ -433,7 +645,11 @@ export const localizations = { brazilian_portuguese: 'Verificando registros do banco de dados', tok_pisin: 'Checkim ol rekod long database', indonesian: 'Memverifikasi catatan database', - nepali: 'เคกเคพเคŸเคพเคฌเฅ‡เคธ เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคกเคพเคŸเคพเคฌเฅ‡เคธ เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคฐเคฟเค•เฅ‰เคฐเฅเคก เคธเคคเฅเคฏเคพเคชเคฟเคค เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ•เธฃเธงเธˆเธชเธญเธšเธšเธฑเธ™เธ—เธถเธเธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ', + mandarin: 'ๆญฃๅœจ้ชŒ่ฏๆ•ฐๆฎๅบ“่ฎฐๅฝ•' }, verifyingAttachments: { english: 'Verifying attachments', @@ -441,7 +657,11 @@ export const localizations = { brazilian_portuguese: 'Verificando anexos', tok_pisin: 'Checkim ol fail i pas long', indonesian: 'Memverifikasi lampiran', - nepali: 'เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคคเฅเคฏเคพเคชเคฟเคค เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ•เธฃเธงเธˆเธชเธญเธšเน„เธŸเธฅเนŒเนเธ™เธš', + mandarin: 'ๆญฃๅœจ้ชŒ่ฏ้™„ไปถ' }, waitingForUploads: { english: 'Waiting for Uploads', @@ -449,7 +669,11 @@ export const localizations = { brazilian_portuguese: 'Aguardando Uploads', tok_pisin: 'Wetim Upload', indonesian: 'Menunggu Upload', - nepali: 'เค…เคชเคฒเฅ‹เคกเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคเคฆเฅˆ' + nepali: 'เค…เคชเคฒเฅ‹เคกเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคเคฆเฅˆ', + hindi: 'เค…เคชเคฒเฅ‹เคก เค•เฅ€ เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€กแ€•แ€บแ€œแ€ฏแ€’แ€บแ€™แ€ปแ€ฌแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€†แ€ญแ€ฏแ€„แ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธฃเธญเธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”', + mandarin: '็ญ‰ๅพ…ไธŠไผ ' }, cannotOffload: { english: 'Cannot Offload', @@ -457,7 +681,11 @@ export const localizations = { brazilian_portuguese: 'Nรฃo รฉ possรญvel Descarregar', tok_pisin: 'No Inap Rausim', indonesian: 'Tidak dapat Melepas', - nepali: 'เคนเคŸเคพเค‰เคจ เคธเค•เคฟเคเคฆเฅˆเคจ' + nepali: 'เคนเคŸเคพเค‰เคจ เคธเค•เคฟเคเคฆเฅˆเคจ', + hindi: 'เค…เคจเคฒเฅ‹เคก เคจเคนเฅ€เค‚ เค•เคฐ เคธเค•เคคเฅ‡', + burmese: 'แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแแ€™แ€›แ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธ–เธญเธ”เธญเธญเธเน„เธ”เน‰', + mandarin: 'ๆ— ๆณ•ๅธ่ฝฝ' }, analyzingRelatedRecords: { english: 'Analyzing related records...', @@ -465,7 +693,11 @@ export const localizations = { brazilian_portuguese: 'Analisando registros relacionados...', tok_pisin: 'Lukautim ol related records...', indonesian: 'Menganalisis catatan terkait...', - nepali: 'เคธเคฎเฅเคฌเคจเฅเคงเคฟเคค เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคธเคฎเฅเคฌเคจเฅเคงเคฟเคค เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคธเค‚เคฌเค‚เคงเคฟเคค เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคพ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€†แ€€แ€บแ€…แ€•แ€บแ€žแ€ฑแ€ฌ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€ฝแ€ฒแ€แ€ผแ€™แ€บแ€ธแ€…แ€ญแ€แ€บแ€–แ€ผแ€ฌแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธงเธดเน€เธ„เธฃเธฒเธฐเธซเนŒเธšเธฑเธ™เธ—เธถเธเธ—เธตเนˆเน€เธเธตเนˆเธขเธงเธ‚เน‰เธญเธ‡...', + mandarin: 'ๆญฃๅœจๅˆ†ๆž็›ธๅ…ณ่ฎฐๅฝ•...' }, discoveryComplete: { english: 'Discovery complete', @@ -473,7 +705,11 @@ export const localizations = { brazilian_portuguese: 'Descoberta completa', tok_pisin: 'Discovery i pinis', indonesian: 'Penemuan selesai', - nepali: 'เค–เฅ‹เคœ เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹' + nepali: 'เค–เฅ‹เคœ เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹', + hindi: 'เค–เฅ‹เคœ เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€™แ€พแ€ฏ แ€•แ€ผแ€ฎแ€ธแ€™แ€ผแ€ฑแ€ฌแ€€แ€บแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธเธฒเธฃเธ„เน‰เธ™เธžเธšเน€เธชเธฃเน‡เธˆเธชเธกเธšเธนเธฃเธ“เนŒ', + mandarin: 'ๅ‘็ŽฐๅฎŒๆˆ' }, totalRecords: { english: 'Total Records', @@ -481,7 +717,11 @@ export const localizations = { brazilian_portuguese: 'Registros Totais', tok_pisin: 'Total Records', indonesian: 'Total Catatan', - nepali: 'เค•เฅเคฒ เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚' + nepali: 'เค•เฅเคฒ เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚', + hindi: 'เค•เฅเคฒ เคฐเคฟเค•เฅ‰เคฐเฅเคก', + burmese: 'แ€…แ€ฏแ€…แ€ฏแ€•แ€ฑแ€ซแ€„แ€บแ€ธ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธšเธฑเธ™เธ—เธถเธเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: 'ๆ€ป่ฎฐๅฝ•ๆ•ฐ' }, discoveryErrorsOccurred: { english: @@ -495,7 +735,13 @@ export const localizations = { indonesian: 'Beberapa kesalahan terjadi selama penemuan. Anda masih dapat mengunduh catatan yang ditemukan.', nepali: - 'เค–เฅ‹เคœเค•เฅ‹ เค•เฅเคฐเคฎเคฎเคพ เค•เฅ‡เคนเฅ€ เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคญเคเฅค เคคเคชเคพเคˆเค‚ เค…เคเฅˆ เคชเคจเคฟ เค–เฅ‹เคœเคฟเคเค•เคพ เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เค–เฅ‹เคœเค•เฅ‹ เค•เฅเคฐเคฎเคฎเคพ เค•เฅ‡เคนเฅ€ เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคญเคเฅค เคคเคชเคพเคˆเค‚ เค…เคเฅˆ เคชเคจเคฟ เค–เฅ‹เคœเคฟเคเค•เคพ เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค–เฅ‹เคœ เค•เฅ‡ เคฆเฅŒเคฐเคพเคจ เค•เฅเค› เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคนเฅเคˆเค‚เฅค เค†เคช เค…เคญเฅ€ เคญเฅ€ เค–เฅ‹เคœเฅ‡ เค—เค เคฐเคฟเค•เฅ‰เคฐเฅเคก เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€™แ€พแ€ฏแ€กแ€แ€ฝแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธแ€กแ€แ€ปแ€ญแ€ฏแ€ท แ€–แ€ผแ€…แ€บแ€•แ€ฝแ€ฌแ€ธแ€แ€ฒแ€ทแ€žแ€Šแ€บแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€†แ€€แ€บแ€œแ€€แ€บ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธšเธฒเธ‡เธญเธขเนˆเธฒเธ‡เธฃเธฐเธซเธงเนˆเธฒเธ‡เธเธฒเธฃเธ„เน‰เธ™เธžเธš เธ„เธธเธ“เธขเธฑเธ‡เธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธšเธฑเธ™เธ—เธถเธเธ—เธตเนˆเธ„เน‰เธ™เธžเธšเน„เธ”เน‰', + mandarin: 'ๅ‘็Žฐ่ฟ‡็จ‹ไธญๅ‘็”Ÿไบ†ไธ€ไบ›้”™่ฏฏใ€‚ๆ‚จไป็„ถๅฏไปฅไธ‹่ฝฝๅทฒๅ‘็Žฐ็š„่ฎฐๅฝ•ใ€‚' }, questNotFoundInCloud: { english: @@ -509,7 +755,14 @@ export const localizations = { indonesian: 'Quest tidak ditemukan di basis data cloud. Mungkin hanya ada secara lokal atau Anda tidak memiliki izin untuk mengaksesnya. Silakan muat ulang halaman atau hubungi dukungan jika masalah ini tetap terjadi.', nepali: - 'เค•เฅเคฒเคพเค‰เคก เคกเคพเคŸเคพเคฌเฅ‡เคธเคฎเคพ เค•เฅเคตเฅ‡เคธเฅเคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจเฅค เคฏเฅ‹ เคธเฅเคฅเคพเคจเฅ€เคฏ เคฐเฅ‚เคชเคฎเคพ เคฎเคพเคคเฅเคฐ เค…เคตเคธเฅเคฅเคฟเคค เคนเฅเคจ เคธเค•เฅเค› เคตเคพ เคคเคชเคพเคˆเค‚เคธเคเค— เคฏเคธเคฎเคพ เคชเคนเฅเคเคš เค—เคฐเฅเคจเฅ‡ เค…เคจเฅเคฎเคคเคฟ เคจเคนเฅเคจ เคธเค•เฅเค›เฅค เคชเฅƒเคทเฅเค  เคฐเคฟเคซเฅเคฐเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคตเคพ เคฏเฅ‹ เคธเคฎเคธเฅเคฏเคพ เคœเคพเคฐเฅ€ เคฐเคนเฅ‡เคฎเคพ เคธเคฎเคฐเฅเคฅเคจเคฒเคพเคˆ เคธเคฎเฅเคชเคฐเฅเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เค•เฅเคฒเคพเค‰เคก เคกเคพเคŸเคพเคฌเฅ‡เคธเคฎเคพ เค•เฅเคตเฅ‡เคธเฅเคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจเฅค เคฏเฅ‹ เคธเฅเคฅเคพเคจเฅ€เคฏ เคฐเฅ‚เคชเคฎเคพ เคฎเคพเคคเฅเคฐ เค…เคตเคธเฅเคฅเคฟเคค เคนเฅเคจ เคธเค•เฅเค› เคตเคพ เคคเคชเคพเคˆเค‚เคธเคเค— เคฏเคธเคฎเคพ เคชเคนเฅเคเคš เค—เคฐเฅเคจเฅ‡ เค…เคจเฅเคฎเคคเคฟ เคจเคนเฅเคจ เคธเค•เฅเค›เฅค เคชเฅƒเคทเฅเค  เคฐเคฟเคซเฅเคฐเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคตเคพ เคฏเฅ‹ เคธเคฎเคธเฅเคฏเคพ เคœเคพเคฐเฅ€ เคฐเคนเฅ‡เคฎเคพ เคธเคฎเคฐเฅเคฅเคจเคฒเคพเคˆ เคธเคฎเฅเคชเคฐเฅเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค•เฅเคฒเคพเค‰เคก เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคฎเฅ‡เค‚ เค•เฅเคตเฅ‡เคธเฅเคŸ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเคพเฅค เคฏเคน เค•เฅ‡เคตเคฒ เคธเฅเคฅเคพเคจเฅ€เคฏ เคฐเฅ‚เคช เคธเฅ‡ เคฎเฅŒเคœเฅ‚เคฆ เคนเฅ‹ เคธเค•เคคเคพ เคนเฅˆ เคฏเคพ เค†เคชเค•เฅ‡ เคชเคพเคธ เค‡เคธเฅ‡ เคเค•เฅเคธเฅ‡เคธ เค•เคฐเคจเฅ‡ เค•เฅ€ เค…เคจเฅเคฎเคคเคฟ เคจเคนเฅ€เค‚ เคนเฅ‹ เคธเค•เคคเฅ€ เคนเฅˆเฅค เคชเฅƒเคทเฅเค  เค•เฅ‹ เคฐเฅ€เคซเฅเคฐเฅ‡เคถ เค•เคฐเคจเฅ‡ เค•เคพ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚ เคฏเคพ เคฏเคฆเคฟ เคฏเคน เคธเคฎเคธเฅเคฏเคพ เคฌเคจเฅ€ เคฐเคนเคคเฅ€ เคนเฅˆ เคคเฅ‹ เคธเคชเฅ‹เคฐเฅเคŸ เคธเฅ‡ เคธเค‚เคชเคฐเฅเค• เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'cloud แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€แ€ฝแ€„แ€บ Quest แ€€แ€ญแ€ฏ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซแ‹ แŽแ€„แ€บแ€ธแ€žแ€Šแ€บ แ€’แ€ฑแ€žแ€แ€ฝแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บแ€žแ€ฌ แ€แ€Šแ€บแ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ผแ€ฎแ€ธ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€žแ€„แ€บแ€แ€ฝแ€„แ€บ แŽแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€™แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹ แ€…แ€ฌแ€™แ€ปแ€€แ€บแ€”แ€พแ€ฌแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€…แ€แ€„แ€บแ€›แ€”แ€บ แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€คแ€•แ€ผแ€ฟแ€”แ€ฌ แ€†แ€€แ€บแ€›แ€พแ€ญแ€”แ€ฑแ€•แ€ซแ€€ แ€กแ€€แ€ฐแ€กแ€Šแ€ฎแ€€แ€ญแ€ฏ แ€†แ€€แ€บแ€žแ€ฝแ€šแ€บแ€•แ€ซแ‹', + thai: 'เน„เธกเนˆเธžเธšเน€เธ„เธงเธชเธ•เนŒเนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅเธ„เธฅเธฒเธงเธ”เนŒ เธญเธฒเธˆเธกเธตเธญเธขเธนเนˆเน€เธ‰เธžเธฒเธฐเนƒเธ™เน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธฃเธทเธญเธ„เธธเธ“เธญเธฒเธˆเน„เธกเนˆเธกเธตเธชเธดเธ—เธ˜เธดเนŒเน€เธ‚เน‰เธฒเธ–เธถเธ‡ เธฅเธญเธ‡เธฃเธตเน€เธŸเธฃเธŠเธซเธ™เน‰เธฒเน€เธงเน‡เธšเธซเธฃเธทเธญเธ•เธดเธ”เธ•เนˆเธญเธเนˆเธฒเธขเธชเธ™เธฑเธšเธชเธ™เธธเธ™เธซเธฒเธเธ›เธฑเธเธซเธฒเธ™เธตเน‰เธขเธฑเธ‡เธ„เธ‡เธญเธขเธนเนˆ', + mandarin: + 'ๅœจไบ‘็ซฏๆ•ฐๆฎๅบ“ไธญๆœชๆ‰พๅˆฐไปปๅŠกใ€‚ๅฎƒๅฏ่ƒฝไป…ๅญ˜ๅœจไบŽๆœฌๅœฐ๏ผŒๆˆ–่€…ๆ‚จๅฏ่ƒฝๆฒกๆœ‰่ฎฟ้—ฎๆƒ้™ใ€‚่ฏทๅฐ่ฏ•ๅˆทๆ–ฐ้กต้ข๏ผŒๅฆ‚ๆžœ้—ฎ้ข˜ๆŒ็ปญๅญ˜ๅœจ๏ผŒ่ฏท่”็ณปๆ”ฏๆŒใ€‚' }, discovering: { english: 'Discovering...', @@ -517,7 +770,11 @@ export const localizations = { brazilian_portuguese: 'Descobrindo...', tok_pisin: 'Painimaut...', indonesian: 'Menemukan...', - nepali: 'เค–เฅ‹เคœเฅเคฆเฅˆ...' + nepali: 'เค–เฅ‹เคœเฅเคฆเฅˆ...', + hindi: 'เค–เฅ‹เคœ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ„เน‰เธ™เธซเธฒ...', + mandarin: 'ๆญฃๅœจๅ‘็Žฐ...' }, continueToDownload: { english: 'Continue to Download', @@ -525,7 +782,11 @@ export const localizations = { brazilian_portuguese: 'Continuar para Download', tok_pisin: 'Go het long Download', indonesian: 'Lanjutkan ke Unduhan', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคกเคฎเคพ เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคกเคฎเคพ เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคœเคพเคฐเฅ€ เคฐเค–เฅ‡เค‚', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€†แ€€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ•เนˆเธญ', + mandarin: '็ปง็ปญไธ‹่ฝฝ' }, email: { english: 'Email', @@ -533,7 +794,11 @@ export const localizations = { brazilian_portuguese: 'E-mail', tok_pisin: 'Email', indonesian: 'Email', - nepali: 'เค‡เคฎเฅ‡เคฒ' + nepali: 'เค‡เคฎเฅ‡เคฒ', + hindi: 'เคˆเคฎเฅ‡เคฒ', + burmese: 'แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บ', + thai: 'เธญเธตเน€เธกเธฅ', + mandarin: '็”ตๅญ้‚ฎไปถ' }, emailAlreadyMemberMessage: { english: 'This email address is already a {role} of this project.', @@ -542,7 +807,11 @@ export const localizations = { brazilian_portuguese: 'Este endereรงo de e-mail jรก รฉ {role} deste projeto.', tok_pisin: 'Dispela email adres i {role} pinis long dispela project.', indonesian: 'Alamat email ini sudah menjadi {role} dari proyek ini.', - nepali: 'เคฏเฅ‹ เค‡เคฎเฅ‡เคฒ เค เฅ‡เค—เคพเคจเคพ เคชเคนเคฟเคฒเฅ‡ เคจเฅˆ เคฏเคธ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเค•เฅ‹ {role} เคนเฅ‹เฅค' + nepali: 'เคฏเฅ‹ เค‡เคฎเฅ‡เคฒ เค เฅ‡เค—เคพเคจเคพ เคชเคนเคฟเคฒเฅ‡ เคจเฅˆ เคฏเคธ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเค•เฅ‹ {role} เคนเฅ‹เฅค', + hindi: 'เคฏเคน เคˆเคฎเฅ‡เคฒ เคชเคคเคพ เคชเคนเคฒเฅ‡ เคธเฅ‡ เคนเฅ€ เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เคพ {role} เคนเฅˆเฅค', + burmese: 'แ€คแ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€œแ€ญแ€•แ€บแ€…แ€ฌแ€žแ€Šแ€บ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ {role} แ€–แ€ผแ€…แ€บแ€•แ€ผแ€ฎแ€ธแ€žแ€ฌแ€ธแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธ—เธตเนˆเธญเธขเธนเนˆเธญเธตเน€เธกเธฅเธ™เธตเน‰เน€เธ›เน‡เธ™ {role} เธ‚เธญเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เธญเธขเธนเนˆเนเธฅเน‰เธง', + mandarin: 'ๆญค็”ตๅญ้‚ฎไปถๅœฐๅ€ๅทฒ็ปๆ˜ฏๆญค้กน็›ฎ็š„ {role}ใ€‚' }, emailRequired: { english: 'Email is required', @@ -550,7 +819,11 @@ export const localizations = { brazilian_portuguese: 'E-mail รฉ obrigatรณrio', tok_pisin: 'Email i mas', indonesian: 'Email diperlukan', - nepali: 'เค‡เคฎเฅ‡เคฒ เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เค‡เคฎเฅ‡เคฒ เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เคˆเคฎเฅ‡เคฒ เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เธญเธตเน€เธกเธฅ', + mandarin: '้œ€่ฆ็”ตๅญ้‚ฎไปถ' }, nameRequired: { english: 'Name is required', @@ -558,7 +831,11 @@ export const localizations = { brazilian_portuguese: 'Nome รฉ obrigatรณrio', tok_pisin: 'Name i mas', indonesian: 'Nama diperlukan', - nepali: 'เคจเคพเคฎ เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคจเคพเคฎ เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เคจเคพเคฎ เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€กแ€™แ€Šแ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เธŠเธทเนˆเธญ', + mandarin: '้œ€่ฆๅง“ๅ' }, descriptionTooLong: { english: 'Description must be less than {max} characters', @@ -566,7 +843,11 @@ export const localizations = { brazilian_portuguese: 'A descriรงรฃo deve ter menos de {max} caracteres', tok_pisin: 'Description i no sem long {max} character', indonesian: 'Deskripsi harus kurang dari {max} karakter', - nepali: 'เคตเคฟเคตเคฐเคฃ {max} เค…เค•เฅเคทเคฐเคญเคจเฅเคฆเคพ เค•เคฎ เคนเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เคตเคฟเคตเคฐเคฃ {max} เค…เค•เฅเคทเคฐเคญเคจเฅเคฆเคพ เค•เคฎ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เคตเคฟเคตเคฐเคฃ {max} เค…เค•เฅเคทเคฐเฅ‹เค‚ เคธเฅ‡ เค•เคฎ เคนเฅ‹เคจเคพ เคšเคพเคนเคฟเค', + burmese: 'แ€–แ€ฑแ€ฌแ€บแ€•แ€ผแ€แ€ปแ€€แ€บแ€žแ€Šแ€บ {max} แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€‘แ€€แ€บ แ€”แ€Šแ€บแ€ธแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธณเธญเธ˜เธดเธšเธฒเธขเธ•เน‰เธญเธ‡เธ™เน‰เธญเธขเธเธงเนˆเธฒ {max} เธ•เธฑเธงเธญเธฑเธเธฉเธฃ', + mandarin: 'ๆ่ฟฐๅฟ…้กปๅฐ‘ไบŽ {max} ไธชๅญ—็ฌฆ' }, enterTranslation: { english: 'Enter your translation here', @@ -574,7 +855,11 @@ export const localizations = { brazilian_portuguese: 'Digite sua traduรงรฃo aqui', tok_pisin: 'Putim translation bilong yu long hia', indonesian: 'Masukkan terjemahan Anda di sini', - nepali: 'เคฏเคนเคพเค เค†เคซเฅเคจเฅ‹ เค…เคจเฅเคตเคพเคฆ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฏเคนเคพเค เค†เคซเฅเคจเฅ‹ เค…เคจเฅเคตเคพเคฆ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฏเคนเคพเค เค…เคชเคจเคพ เค…เคจเฅเคตเคพเคฆ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€คแ€”แ€ฑแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ›เน‰เธญเธ™เธ„เธณเนเธ›เธฅเธ‚เธญเธ‡เธ„เธธเธ“เธ—เธตเนˆเธ™เธตเนˆ', + mandarin: 'ๅœจๆญค่พ“ๅ…ฅๆ‚จ็š„็ฟป่ฏ‘' }, enterTranscription: { english: 'Enter your transcription here', @@ -582,7 +867,11 @@ export const localizations = { brazilian_portuguese: 'Digite sua transcriรงรฃo aqui', tok_pisin: 'Putim transcription bilong yu long hia', indonesian: 'Masukkan transkripsi Anda di sini', - nepali: 'เคฏเคนเคพเค เค†เคซเฅเคจเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฏเคนเคพเค เค†เคซเฅเคจเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฏเคนเคพเค เค…เคชเคจเคพ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€คแ€”แ€ฑแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ›เน‰เธญเธ™เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเธ‚เธญเธ‡เธ„เธธเธ“เธ—เธตเนˆเธ™เธตเนˆ', + mandarin: 'ๅœจๆญค่พ“ๅ…ฅๆ‚จ็š„่ฝฌๅฝ•' }, enterYourTranscriptionIn: { english: 'Enter your transcription in {language}', @@ -590,7 +879,11 @@ export const localizations = { brazilian_portuguese: 'Digite sua transcriรงรฃo em {language}', tok_pisin: 'Putim transcription bilong yu long {language}', indonesian: 'Masukkan transkripsi Anda dalam {language}', - nepali: '{language} เคฎเคพ เค†เคซเฅเคจเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: '{language} เคฎเคพ เค†เคซเฅเคจเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: '{language} เคฎเฅ‡เค‚ เค…เคชเคจเคพ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: '{language} แ€แ€ฝแ€„แ€บ แ€žแ€„แ€บแ แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ›เน‰เธญเธ™เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเธ‚เธญเธ‡เธ„เธธเธ“เนƒเธ™ {language}', + mandarin: '็”จ {language} ่พ“ๅ…ฅๆ‚จ็š„่ฝฌๅฝ•' }, enterValidEmail: { english: 'Please enter a valid email', @@ -598,7 +891,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, digite um e-mail vรกlido', tok_pisin: 'Plis putim wanpela gutpela email', indonesian: 'Silakan masukkan email yang valid', - nepali: 'เค•เฅƒเคชเคฏเคพ เคฎเคพเคจเฅเคฏ เค‡เคฎเฅ‡เคฒ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคฎเคพเคจเฅเคฏ เค‡เคฎเฅ‡เคฒ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคเค• เคตเฅˆเคง เคˆเคฎเฅ‡เคฒ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€แ€›แ€ฌแ€ธแ€แ€„แ€บ แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเธ›เน‰เธญเธ™เธญเธตเน€เธกเธฅเธ—เธตเนˆเธ–เธนเธเธ•เน‰เธญเธ‡', + mandarin: '่ฏท่พ“ๅ…ฅๆœ‰ๆ•ˆ็š„็”ตๅญ้‚ฎไปถ' }, enterYourEmail: { english: 'Enter your email', @@ -606,7 +903,11 @@ export const localizations = { brazilian_portuguese: 'Digite seu e-mail', tok_pisin: 'Putim email bilong yu', indonesian: 'Masukkan email Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเคพ เคˆเคฎเฅ‡เคฒ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€€แ€ญแ€ฏ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ›เน‰เธญเธ™เธญเธตเน€เธกเธฅเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: '่พ“ๅ…ฅๆ‚จ็š„็”ตๅญ้‚ฎไปถ' }, enterYourPassword: { english: 'Enter your password', @@ -614,7 +915,11 @@ export const localizations = { brazilian_portuguese: 'Digite sua senha', tok_pisin: 'Putim password bilong yu', indonesian: 'Masukkan kata sandi Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เคชเคพเคธเคตเคฐเฅเคก เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เคชเคพเคธเคตเคฐเฅเคก เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเคพ เคชเคพเคธเคตเคฐเฅเคก เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ›เน‰เธญเธ™เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: '่พ“ๅ…ฅๆ‚จ็š„ๅฏ†็ ' }, error: { english: 'Error', @@ -622,7 +927,11 @@ export const localizations = { brazilian_portuguese: 'Erro', tok_pisin: 'Rong', indonesian: 'Kesalahan', - nepali: 'เคคเฅเคฐเฅเคŸเคฟ' + nepali: 'เคคเฅเคฐเฅเคŸเคฟ', + hindi: 'เคคเฅเคฐเฅเคŸเคฟ', + burmese: 'แ€กแ€™แ€พแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”', + mandarin: '้”™่ฏฏ' }, failedCreateTranslation: { english: 'Failed to create translation', @@ -630,7 +939,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao criar traduรงรฃo', tok_pisin: 'I no inap mekim translation', indonesian: 'Gagal membuat terjemahan', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคฌเคจเคพเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแแ€™แ€›แ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เธ„เธณเนเธ›เธฅเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅˆ›ๅปบ็ฟป่ฏ‘ๅคฑ่ดฅ' }, failedCreateTranscription: { english: 'Failed to create transcription', @@ -638,7 +951,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao criar transcriรงรฃo', tok_pisin: 'I no inap mekim transcription', indonesian: 'Gagal membuat transkripsi', - nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคฌเคจเคพเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแแ€™แ€›แ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅˆ›ๅปบ่ฝฌๅฝ•ๅคฑ่ดฅ' }, failedLoadProjects: { english: 'Failed to load projects', @@ -646,7 +963,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao carregar projetos', tok_pisin: 'I no inap loadim ol project', indonesian: 'Gagal memuat proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚ เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅŠ ่ฝฝ้กน็›ฎๅคฑ่ดฅ' }, failedLoadQuests: { english: 'Failed to load quests', @@ -654,7 +975,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao carregar missรตes', tok_pisin: 'I no inap loadim ol quest', indonesian: 'Gagal memuat misi', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'Quest แ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เน‚เธซเธฅเธ”เน€เธ„เธงเธชเธ•เนŒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅŠ ่ฝฝไปปๅŠกๅคฑ่ดฅ' }, failedResetPassword: { english: 'Failed to reset password', @@ -662,7 +987,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao redefinir senha', tok_pisin: 'I no inap resetim password', indonesian: 'Gagal mereset kata sandi', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '้‡็ฝฎๅฏ†็ ๅคฑ่ดฅ' }, failedSendResetEmail: { english: 'Failed to send reset email', @@ -670,7 +999,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao enviar e-mail de redefiniรงรฃo', tok_pisin: 'I no inap salim reset email', indonesian: 'Gagal mengirim email reset', - nepali: 'เคฐเคฟเคธเฅ‡เคŸ เค‡เคฎเฅ‡เคฒ เคชเค เคพเค‰เคจ เค…เคธเคซเคฒ' + nepali: 'เคฐเคฟเคธเฅ‡เคŸ เค‡เคฎเฅ‡เคฒ เคชเค เคพเค‰เคจ เค…เคธเคซเคฒ', + hindi: 'เคฐเฅ€เคธเฅ‡เคŸ เคˆเคฎเฅ‡เคฒ เคญเฅ‡เคœเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€•แ€ญแ€ฏแ€ทแแ€™แ€›แ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธญเธตเน€เธกเธฅเธฃเธตเน€เธ‹เน‡เธ•เน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅ‘้€้‡็ฝฎ็”ตๅญ้‚ฎไปถๅคฑ่ดฅ' }, failedToAcceptInvitation: { english: 'Failed to accept invitation. Please try again.', @@ -679,7 +1012,11 @@ export const localizations = { 'Falha ao aceitar o convite. Por favor, tente novamente.', tok_pisin: 'I no inap akseptim invitation. Plis traim gen.', indonesian: 'Gagal menerima undangan. Silakan coba lagi.', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคซเฅ‡เคฐเคฟ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคซเฅ‡เคฐเคฟ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€œแ€€แ€บแ€แ€ถแแ€™แ€›แ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เธขเธญเธกเธฃเธฑเธšเธ„เธณเน€เธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๆŽฅๅ—้‚€่ฏทๅคฑ่ดฅใ€‚่ฏท้‡่ฏ•ใ€‚' }, failedToDeclineInvitation: { english: 'Failed to decline invitation. Please try again.', @@ -688,7 +1025,11 @@ export const localizations = { 'Falha ao recusar o convite. Por favor, tente novamente.', tok_pisin: 'I no inap refusim invitation. Plis traim gen.', indonesian: 'Gagal menolak undangan. Silakan coba lagi.', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคซเฅ‡เคฐเคฟ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคซเฅ‡เคฐเคฟ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแแ€™แ€›แ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเน€เธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๆ‹’็ป้‚€่ฏทๅคฑ่ดฅใ€‚่ฏท้‡่ฏ•ใ€‚' }, failedToVote: { english: 'Failed to submit vote', @@ -696,7 +1037,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao enviar voto', tok_pisin: 'I no inap salim vote', indonesian: 'Gagal mengirim suara', - nepali: 'เคฎเคค เคชเฅ‡เคถ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคฎเคค เคชเฅ‡เคถ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคฎเคค เคœเคฎเคพ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€™แ€ฒแ€•แ€ฑแ€ธแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธ„เธฐเนเธ™เธ™เน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆไบคๆŠ•็ฅจๅคฑ่ดฅ' }, fillFields: { english: 'Please fill in all required fields', @@ -704,7 +1049,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, preencha todos os campos obrigatรณrios', tok_pisin: 'Plis fulupim olgeta field i mas', indonesian: 'Silakan isi semua bidang yang diperlukan', - nepali: 'เค•เฅƒเคชเคฏเคพ เคธเคฌเฅˆ เค†เคตเคถเฅเคฏเค• เคซเคฟเคฒเฅเคกเคนเคฐเฅ‚ เคญเคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคธเคฌเฅˆ เค†เคตเคถเฅเคฏเค• เคซเคฟเคฒเฅเคกเคนเคฐเฅ‚ เคญเคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคธเคญเฅ€ เค†เคตเคถเฅเคฏเค• เคซเคผเฅ€เคฒเฅเคก เคญเคฐเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€ฑแ€ฌ แ€กแ€€แ€ฝแ€€แ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€–แ€ผแ€Šแ€ทแ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเธเธฃเธญเธเธ‚เน‰เธญเธกเธนเธฅเนƒเธ™เธŠเนˆเธญเธ‡เธ—เธตเนˆเธˆเธณเน€เธ›เน‡เธ™เธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: '่ฏทๅกซๅ†™ๆ‰€ๆœ‰ๅฟ…ๅกซๅญ—ๆฎต' }, forgotPassword: { english: 'I forgot my password', @@ -712,7 +1061,11 @@ export const localizations = { brazilian_portuguese: 'Esqueci minha senha', tok_pisin: 'Mi lusim password bilong mi', indonesian: 'Saya lupa kata sandi saya', - nepali: 'เคฎเฅˆเคฒเฅ‡ เคชเคพเคธเคตเคฐเฅเคก เคฌเคฟเคฐเฅเคธเฅ‡เค' + nepali: 'เคฎเฅˆเคฒเฅ‡ เคชเคพเคธเคตเคฐเฅเคก เคฌเคฟเคฐเฅเคธเฅ‡เค', + hindi: 'เคฎเฅˆเค‚เคจเฅ‡ เค…เคชเคจเคพ เคชเคพเคธเคตเคฐเฅเคก เคญเฅ‚เคฒ เค—เคฏเคพ', + burmese: 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€™แ€ฑแ€ทแ€žแ€ฝแ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ‰เธฑเธ™เธฅเธทเธกเธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: 'ๆˆ‘ๅฟ˜่ฎฐไบ†ๅฏ†็ ' }, invalidResetLink: { english: 'Invalid or expired reset link', @@ -720,7 +1073,12 @@ export const localizations = { brazilian_portuguese: 'Link de redefiniรงรฃo invรกlido ou expirado', tok_pisin: 'Reset link i no gutpela o i pinis', indonesian: 'Tautan reset tidak valid atau kedaluwarsa', - nepali: 'เค…เคฎเคพเคจเฅเคฏ เคตเคพ เคธเคฎเคพเคชเฅเคค เคฐเคฟเคธเฅ‡เคŸ เคฒเคฟเค‚เค•' + nepali: 'เค…เคฎเคพเคจเฅเคฏ เคตเคพ เคธเคฎเคพเคชเฅเคค เคฐเคฟเคธเฅ‡เคŸ เคฒเคฟเค‚เค•', + hindi: 'เค…เคฎเคพเคจเฅเคฏ เคฏเคพ เคธเคฎเคพเคชเฅเคค เคฐเฅ€เคธเฅ‡เคŸ เคฒเคฟเค‚เค•', + burmese: + 'แ€™แ€™แ€พแ€”แ€บแ€€แ€”แ€บแ€žแ€ฑแ€ฌ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€œแ€„แ€ทแ€บแ€แ€บ', + thai: 'เธฅเธดเธ‡เธเนŒเธฃเธตเน€เธ‹เน‡เธ•เน„เธกเนˆเธ–เธนเธเธ•เน‰เธญเธ‡เธซเธฃเธทเธญเธซเธกเธ”เธญเธฒเธขเธธ', + mandarin: 'ๆ— ๆ•ˆๆˆ–ๅทฒ่ฟ‡ๆœŸ็š„้‡็ฝฎ้“พๆŽฅ' }, logInToTranslate: { english: 'You must be logged in to submit translations', @@ -728,7 +1086,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช precisa estar logado para enviar traduรงรตes', tok_pisin: 'Yu mas login pastaim long salim ol translation', indonesian: 'Anda harus masuk untuk mengirim terjemahan', - nepali: 'เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚ เคชเฅ‡เคถ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚ เคชเฅ‡เคถ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคœเคฎเคพ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคฒเฅ‰เค— เค‡เคจ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ แ€แ€„แ€บแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธชเนˆเธ‡เธ„เธณเนเธ›เธฅ', + mandarin: 'ๆ‚จๅฟ…้กป็™ปๅฝ•ๆ‰่ƒฝๆไบค็ฟป่ฏ‘' }, logInToVote: { english: 'You must be logged in to vote', @@ -736,7 +1098,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช precisa estar logado para votar', tok_pisin: 'Yu mas login pastaim long vote', indonesian: 'Anda harus masuk untuk memberikan suara', - nepali: 'เคฎเคค เคฆเคฟเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เคฎเคค เคฆเคฟเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เคฎเคค เคฆเฅ‡เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคฒเฅ‰เค— เค‡เคจ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพ', + burmese: 'แ€™แ€ฒแ€•แ€ฑแ€ธแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธฅเธ‡เธ„เธฐเนเธ™เธ™', + mandarin: 'ๆ‚จๅฟ…้กป็™ปๅฝ•ๆ‰่ƒฝๆŠ•็ฅจ' }, menu: { english: 'Menu', @@ -744,7 +1110,11 @@ export const localizations = { brazilian_portuguese: 'Menu', tok_pisin: 'Menu', indonesian: 'Menu', - nepali: 'เคฎเฅ‡เคจเฅ' + nepali: 'เคฎเฅ‡เคจเฅ', + hindi: 'เคฎเฅ‡เคจเฅ‚', + burmese: 'แ€™แ€ฎแ€”แ€ฐแ€ธ', + thai: 'เน€เธกเธ™เธน', + mandarin: '่œๅ•' }, newTranslation: { english: 'New Translation', @@ -752,7 +1122,11 @@ export const localizations = { brazilian_portuguese: 'Nova Traduรงรฃo', tok_pisin: 'Nupela Translation', indonesian: 'Terjemahan Baru', - nepali: 'เคจเคฏเคพเค เค…เคจเฅเคตเคพเคฆ' + nepali: 'เคจเคฏเคพเค เค…เคจเฅเคตเคพเคฆ', + hindi: 'เคจเคฏเคพ เค…เคจเฅเคตเคพเคฆ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ แ€กแ€žแ€…แ€บ', + thai: 'เธ„เธณเนเธ›เธฅเนƒเธซเธกเนˆ', + mandarin: 'ๆ–ฐ็ฟป่ฏ‘' }, newTranscription: { english: 'New Transcription', @@ -760,7 +1134,11 @@ export const localizations = { brazilian_portuguese: 'Nova Transcriรงรฃo', tok_pisin: 'Nupela Transcription', indonesian: 'Transkripsi Baru', - nepali: 'เคจเคฏเคพเค เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ' + nepali: 'เคจเคฏเคพเค เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ', + hindi: 'เคจเคฏเคพ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ', + burmese: 'แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธ แ€กแ€žแ€…แ€บ', + thai: 'เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเนƒเธซเธกเนˆ', + mandarin: 'ๆ–ฐ่ฝฌๅฝ•' }, newUser: { english: 'New user?', @@ -768,7 +1146,11 @@ export const localizations = { brazilian_portuguese: 'Novo usuรกrio?', tok_pisin: 'Nupela user?', indonesian: 'Pengguna baru?', - nepali: 'เคจเคฏเคพเค เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ?' + nepali: 'เคจเคฏเคพเค เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ?', + hindi: 'เคจเคฏเคพ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ?', + burmese: 'แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐ แ€กแ€žแ€…แ€บแ€œแ€ฌแ€ธ?', + thai: 'เธœเธนเน‰เนƒเธŠเน‰เนƒเธซเธกเนˆ?', + mandarin: 'ๆ–ฐ็”จๆˆท๏ผŸ' }, newUserRegistration: { english: 'New User Registration', @@ -776,7 +1158,11 @@ export const localizations = { brazilian_portuguese: 'Registro de Novo Usuรกrio', tok_pisin: 'Nupela User Registration', indonesian: 'Pendaftaran Pengguna Baru', - nepali: 'เคจเคฏเคพเค เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคฆเคฐเฅเคคเคพ' + nepali: 'เคจเคฏเคพเค เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคฆเคฐเฅเคคเคพ', + hindi: 'เคจเคฏเคพ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคชเค‚เคœเฅ€เค•เคฐเคฃ', + burmese: 'แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐ แ€กแ€žแ€…แ€บ แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธเธฒเธฃเธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™เธœเธนเน‰เนƒเธŠเน‰เนƒเธซเธกเนˆ', + mandarin: 'ๆ–ฐ็”จๆˆทๆณจๅ†Œ' }, noComment: { english: 'No Comment', @@ -784,7 +1170,11 @@ export const localizations = { brazilian_portuguese: 'Sem Comentรกrios', tok_pisin: 'No gat comment', indonesian: 'Tidak Ada Komentar', - nepali: 'เค•เฅเคจเฅˆ เคŸเคฟเคชเฅเคชเคฃเฅ€ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคŸเคฟเคชเฅเคชเคฃเฅ€ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคŸเคฟเคชเฅเคชเคฃเฅ€ เคจเคนเฅ€เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€ปแ€€แ€บแ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเธ„เธงเธฒเธกเธ„เธดเธ”เน€เธซเน‡เธ™', + mandarin: 'ๆ— ่ฏ„่ฎบ' }, noProject: { english: 'No active project found', @@ -792,7 +1182,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum projeto ativo encontrado', tok_pisin: 'No gat active project', indonesian: 'Tidak ada proyek aktif yang ditemukan', - nepali: 'เค•เฅเคจเฅˆ เคธเค•เฅเคฐเคฟเคฏ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ' + nepali: 'เค•เฅเคจเฅˆ เคธเค•เฅเคฐเคฟเคฏ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ', + hindi: 'เค•เฅ‹เคˆ เคธเค•เฅเคฐเคฟเคฏ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเฅ€', + burmese: 'แ€กแ€žแ€€แ€บแ€แ€„แ€บแ€žแ€ฑแ€ฌ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธžเธšเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ', + mandarin: 'ๆœชๆ‰พๅˆฐๆดปๅŠจ้กน็›ฎ' }, ok: { english: 'OK', @@ -800,7 +1194,11 @@ export const localizations = { brazilian_portuguese: 'OK', tok_pisin: 'Orait', indonesian: 'OK', - nepali: 'เค เฅ€เค• เค›' + nepali: 'เค เฅ€เค• เค›', + hindi: 'เค เฅ€เค• เคนเฅˆ', + burmese: 'แ€กแ€ญแ€ฏแ€€แ€ฑ', + thai: 'เธ•เธเธฅเธ‡', + mandarin: '็กฎๅฎš' }, offline: { english: 'Offline', @@ -808,7 +1206,11 @@ export const localizations = { brazilian_portuguese: 'Offline', tok_pisin: 'No gat internet', indonesian: 'Offline', - nepali: 'เค…เคซเคฒเคพเค‡เคจ' + nepali: 'เค…เคซเคฒเคพเค‡เคจ', + hindi: 'เค‘เคซเคฒเคพเค‡เคจ', + burmese: 'แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€™แ€›แ€พแ€ญ', + thai: 'เธญเธญเธŸเน„เธฅเธ™เนŒ', + mandarin: '็ฆป็บฟ' }, password: { english: 'Password', @@ -816,7 +1218,11 @@ export const localizations = { brazilian_portuguese: 'Senha', tok_pisin: 'Password', indonesian: 'Kata Sandi', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ', + thai: 'เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: 'ๅฏ†็ ' }, passwordRequired: { english: 'Password is required', @@ -824,7 +1230,11 @@ export const localizations = { brazilian_portuguese: 'Senha รฉ obrigatรณria', tok_pisin: 'Password i mas', indonesian: 'Kata sandi diperlukan', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: '้œ€่ฆๅฏ†็ ' }, passwordMinLength: { english: 'Password must be at least 6 characters', @@ -832,7 +1242,11 @@ export const localizations = { brazilian_portuguese: 'A senha deve ter pelo menos 6 caracteres', tok_pisin: 'Password i mas gat 6 character', indonesian: 'Kata sandi harus minimal 6 karakter', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค•เคฎเฅเคคเคฟเคฎเคพ เฅฌ เค…เค•เฅเคทเคฐ เคนเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค•เคฎเฅเคคเคฟเคฎเคพ เฅฌ เค…เค•เฅเคทเคฐ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เค•เคฎ เคธเฅ‡ เค•เคฎ 6 เค…เค•เฅเคทเคฐ เค•เคพ เคนเฅ‹เคจเคพ เคšเคพเคนเคฟเค', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€žแ€Šแ€บ แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธ แ† แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธ แ€›แ€พแ€ญแ€›แ€™แ€Šแ€บ', + thai: 'เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธ•เน‰เธญเธ‡เธกเธตเธญเธขเนˆเธฒเธ‡เธ™เน‰เธญเธข 6 เธ•เธฑเธงเธญเธฑเธเธฉเธฃ', + mandarin: 'ๅฏ†็ ๅฟ…้กป่‡ณๅฐ‘ 6 ไธชๅญ—็ฌฆ' }, passwordsNoMatch: { english: 'Passwords do not match', @@ -840,7 +1254,11 @@ export const localizations = { brazilian_portuguese: 'As senhas nรฃo coincidem', tok_pisin: 'Ol password i no sem', indonesian: 'Kata sandi tidak cocok', - nepali: 'เคชเคพเคธเคตเคฐเฅเคกเคนเคฐเฅ‚ เคฎเฅ‡เคฒ เค–เคพเคเคฆเฅˆเคจเคจเฅ' + nepali: 'เคชเคพเคธเคตเคฐเฅเคกเคนเคฐเฅ‚ เคฎเฅ‡เคฒ เค–เคพเคเคฆเฅˆเคจเคจเฅ', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เคฎเฅ‡เคฒ เคจเคนเฅ€เค‚ เค–เคพเคคเฅ‡', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€™แ€ปแ€ฌแ€ธ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€™แ€พแ€ฏแ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เน„เธกเนˆเธ•เธฃเธ‡เธเธฑเธ™', + mandarin: 'ๅฏ†็ ไธๅŒน้…' }, passwordResetSuccess: { english: 'Password has been reset successfully', @@ -848,7 +1266,11 @@ export const localizations = { brazilian_portuguese: 'A senha foi redefinida com sucesso', tok_pisin: 'Password i reset gut pinis', indonesian: 'Kata sandi berhasil direset', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเคฟเคฏเฅ‹' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเคฟเคฏเฅ‹', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฐเฅ€เคธเฅ‡เคŸ เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅฏ†็ ๅทฒๆˆๅŠŸ้‡็ฝฎ' }, projectDownloadFailed: { english: @@ -862,7 +1284,13 @@ export const localizations = { indonesian: 'Undangan diterima, tetapi unduhan proyek gagal. Anda dapat mengunduhnya nanti dari halaman proyek.', nepali: - 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹, เคคเคฐ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคชเค›เคฟ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเฅƒเคทเฅเค เคฌเคพเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹, เคคเคฐ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคชเค›เคฟ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเฅƒเคทเฅเค เคฌเคพเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฒเคฟเคฏเคพ เค—เคฏเคพ, เคฒเฅ‡เค•เคฟเคจ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคตเคฟเคซเคฒ เคฐเคนเคพเฅค เค†เคช เคฌเคพเคฆ เคฎเฅ‡เค‚ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚ เคชเฅƒเคทเฅเค  เคธเฅ‡ เค‡เคธเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€œแ€€แ€บแ€แ€ถแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€”แ€ฑแ€ฌแ€€แ€บแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ แ€…แ€ฌแ€™แ€ปแ€€แ€บแ€”แ€พแ€ฌแ€™แ€พ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธขเธญเธกเธฃเธฑเธšเธ„เธณเน€เธŠเธดเธเนเธฅเน‰เธง เนเธ•เนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธ”เน‰เนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡เธˆเธฒเธเธซเธ™เน‰เธฒเธ„เธงเธฒเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้‚€่ฏทๅทฒๆŽฅๅ—๏ผŒไฝ†้กน็›ฎไธ‹่ฝฝๅคฑ่ดฅใ€‚ๆ‚จๅฏไปฅ็จๅŽไปŽ้กน็›ฎ้กต้ขไธ‹่ฝฝๅฎƒใ€‚' }, projects: { english: 'Projects', @@ -870,7 +1298,11 @@ export const localizations = { brazilian_portuguese: 'Projetos', tok_pisin: 'Ol Project', indonesian: 'Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้กน็›ฎ' }, quests: { english: 'Quests', @@ -878,13 +1310,21 @@ export const localizations = { brazilian_portuguese: 'Missรตes', tok_pisin: 'Ol Quest', indonesian: 'Misi', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ', + burmese: 'Quest แ€™แ€ปแ€ฌแ€ธ', + thai: 'เน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ไปปๅŠก' }, project: { english: 'Project', spanish: 'Proyecto', brazilian_portuguese: 'Projeto', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้กน็›ฎ' }, noProjectsFound: { english: 'No projects found', @@ -892,7 +1332,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum projeto encontrado', tok_pisin: 'Nogat projek i painim', indonesian: 'Tidak ada proyek yang ditemukan', - nepali: 'เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ' + nepali: 'เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ', + hindi: 'เค•เฅ‹เคˆ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเฅ€', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธžเธšเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: 'ๆœชๆ‰พๅˆฐ้กน็›ฎ' }, noProjectsYet: { english: 'No projects yet', @@ -900,7 +1344,11 @@ export const localizations = { brazilian_portuguese: 'Ainda nรฃo hรก projetos', tok_pisin: 'I no gat projek yet', indonesian: 'Belum ada proyek', - nepali: 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅˆเคจ' + nepali: 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅˆเคจ', + hindi: 'เค…เคญเฅ€ เคคเค• เค•เฅ‹เคˆ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคนเฅ€เค‚', + burmese: 'แ€กแ€แ€ฏแ€‘แ€ญ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ธแ€•แ€ซ', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเธกเธตเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '่ฟ˜ๆฒกๆœ‰้กน็›ฎ' }, noProjectsAvailable: { english: 'No projects available', @@ -908,7 +1356,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum projeto disponรญvel', tok_pisin: 'Nogat projek i stap', indonesian: 'Tidak ada proyek yang tersedia', - nepali: 'เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค‰เคชเคฒเคฌเฅเคง เคจเคนเฅ€เค‚', + burmese: 'แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ—เธตเนˆเธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™', + mandarin: 'ๆฒกๆœ‰ๅฏ็”จ็š„้กน็›ฎ' }, createProject: { english: 'Create Project', @@ -916,7 +1368,11 @@ export const localizations = { brazilian_portuguese: 'Criar projeto', tok_pisin: 'Wokim Nupela Projek', indonesian: 'Buat Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฌเคจเคพเคเค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: 'ๅˆ›ๅปบ้กน็›ฎ' }, published: { english: 'Published', @@ -924,7 +1380,11 @@ export const localizations = { brazilian_portuguese: 'Publicado', tok_pisin: 'Publisim pinis', indonesian: 'Diterbitkan', - nepali: 'เคชเฅเคฐเค•เคพเคถเคฟเคค' + nepali: 'เคชเฅเคฐเค•เคพเคถเคฟเคค', + hindi: 'เคชเฅเคฐเค•เคพเคถเคฟเคค', + burmese: 'แ€‘แ€ฏแ€แ€บแ€แ€ฑแ€•แ€ผแ€ฎแ€ธ', + thai: 'เน€เธœเธขเนเธžเธฃเนˆเนเธฅเน‰เธง', + mandarin: 'ๅทฒๅ‘ๅธƒ' }, cannotPublishWhileOffline: { english: 'Cannot save to cloud while offline', @@ -933,7 +1393,11 @@ export const localizations = { 'Nรฃo รฉ possรญvel salvar na nuvem enquanto estรก desconectado', tok_pisin: 'I no inap save long cloud long no gat internet', indonesian: 'Tidak dapat menyimpan ke cloud saat offline', - nepali: 'เค…เคซเคฒเคพเค‡เคจ เคนเฅเคเคฆเคพ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅ‡เคญ เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจ' + nepali: 'เค…เคซเคฒเคพเค‡เคจ เคนเฅเคเคฆเคพ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅ‡เคญ เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจ', + hindi: 'เค‘เคซเคฒเคพเค‡เคจ เคนเฅ‹เคจเฅ‡ เคชเคฐ เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคธเคนเฅ‡เคœ เคจเคนเฅ€เค‚ เคธเค•เคคเฅ‡', + burmese: 'แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌแ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บ cloud แ€žแ€ญแ€ฏแ€ท แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแแ€™แ€›แ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธšเธฑเธ™เธ—เธถเธเธฅเธ‡เธ„เธฅเธฒเธงเธ”เนŒเน„เธ”เน‰เธ‚เธ“เธฐเธญเธญเธŸเน„เธฅเธ™เนŒ', + mandarin: '็ฆป็บฟๆ—ถๆ— ๆณ•ไฟๅญ˜ๅˆฐไบ‘็ซฏ' }, chapters: { english: 'Chapters', @@ -941,7 +1405,11 @@ export const localizations = { brazilian_portuguese: 'Capรญtulos', tok_pisin: 'Chapter', indonesian: 'Bab', - nepali: 'เค…เคงเฅเคฏเคพเคฏเคนเคฐเฅ‚' + nepali: 'เค…เคงเฅเคฏเคพเคฏเคนเคฐเฅ‚', + hindi: 'เค…เคงเฅเคฏเคพเคฏ', + burmese: 'แ€กแ€แ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธšเธ—', + mandarin: '็ซ ่Š‚' }, chapter: { english: 'Chapter', @@ -949,7 +1417,11 @@ export const localizations = { brazilian_portuguese: 'Capรญtulo', tok_pisin: 'Chapter', indonesian: 'Bab', - nepali: 'เค…เคงเฅเคฏเคพเคฏ' + nepali: 'เค…เคงเฅเคฏเคพเคฏ', + hindi: 'เค…เคงเฅเคฏเคพเคฏ', + burmese: 'แ€กแ€แ€”แ€บแ€ธ', + thai: 'เธšเธ—', + mandarin: '็ซ ่Š‚' }, publishChapter: { english: 'Save to Cloud', @@ -957,7 +1429,11 @@ export const localizations = { brazilian_portuguese: 'Salvar na Nuvem', tok_pisin: 'Save long Cloud', indonesian: 'Simpan ke Cloud', - nepali: 'เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅ‡เคญ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅ‡เคญ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคธเคนเฅ‡เคœเฅ‡เค‚', + burmese: 'Cloud แ€žแ€ญแ€ฏแ€ท แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซ', + thai: 'เธšเธฑเธ™เธ—เธถเธเธฅเธ‡เธ„เธฅเธฒเธงเธ”เนŒ', + mandarin: 'ไฟๅญ˜ๅˆฐไบ‘็ซฏ' }, publish: { english: 'Save', @@ -965,7 +1441,11 @@ export const localizations = { nepali: 'เคธเฅ‡เคญ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', brazilian_portuguese: 'Salvar', tok_pisin: 'Save', - indonesian: 'Simpan' + indonesian: 'Simpan', + hindi: 'เคธเคนเฅ‡เคœเฅ‡เค‚', + burmese: 'แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซ', + thai: 'เธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ไฟๅญ˜' }, publishChapterMessage: { english: @@ -979,13 +1459,24 @@ export const localizations = { indonesian: 'Ini akan membuat salinan permanen dari {questName} di cloud.\n\nSemua rekaman akan disimpan sebagai snapshot yang tidak dapat diubah. Setelah disimpan, versi ini tidak dapat diubah, tetapi Anda dapat membuat versi baru nanti jika diperlukan.\n\nJika buku atau proyek induk belum disimpan ke cloud, mereka akan disimpan secara otomatis.', nepali: - 'เคฏเคธเคฒเฅ‡ {questName} เค•เฅ‹ เคธเฅเคฅเคพเคฏเฅ€ เคชเฅเคฐเคคเคฟเคฒเคฟเคชเคฟ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค\n\nเคธเคฌเฅˆ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคนเคฐเฅ‚ เค…เคชเคฐเคฟเคตเคฐเฅเคคเคจเฅ€เคฏ เคธเฅเคจเฅเคฏเคพเคชเคถเคŸเค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเฅ‡เคญ เคนเฅเคจเฅ‡เค›เคจเฅเฅค เคเค• เคชเคŸเค• เคธเฅ‡เคญ เค—เคฐเฅ‡เคชเค›เคฟ, เคฏเฅ‹ เคธเค‚เคธเฅเค•เคฐเคฃ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจ, เคคเคฐ เค†เคตเคถเฅเคฏเค• เคญเคเคฎเคพ เคคเคชเคพเคˆเค‚ เคชเค›เคฟ เคจเคฏเคพเค เคธเค‚เคธเฅเค•เคฐเคฃเคนเคฐเฅ‚ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค\n\nเคฏเคฆเคฟ เค…เคญเคฟเคญเคพเคตเค• เคชเฅเคธเฅเคคเค• เคตเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค…เคเฅˆ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅ‡เคญ เค—เคฐเคฟเคเค•เฅ‹ เค›เฅˆเคจ เคญเคจเฅ‡, เคคเคฟเคจเฅ€เคนเคฐเฅ‚ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคธเฅ‡เคญ เคนเฅเคจเฅ‡เค›เคจเฅเฅค' + 'เคฏเคธเคฒเฅ‡ {questName} เค•เฅ‹ เคธเฅเคฅเคพเคฏเฅ€ เคชเฅเคฐเคคเคฟเคฒเคฟเคชเคฟ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค\n\nเคธเคฌเฅˆ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคนเคฐเฅ‚ เค…เคชเคฐเคฟเคตเคฐเฅเคคเคจเฅ€เคฏ เคธเฅเคจเฅเคฏเคพเคชเคถเคŸเค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเฅ‡เคญ เคนเฅเคจเฅ‡เค›เคจเฅเฅค เคเค• เคชเคŸเค• เคธเฅ‡เคญ เค—เคฐเฅ‡เคชเค›เคฟ, เคฏเฅ‹ เคธเค‚เคธเฅเค•เคฐเคฃ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจ, เคคเคฐ เค†เคตเคถเฅเคฏเค• เคญเคเคฎเคพ เคคเคชเคพเคˆเค‚ เคชเค›เคฟ เคจเคฏเคพเค เคธเค‚เคธเฅเค•เคฐเคฃเคนเคฐเฅ‚ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค\n\nเคฏเคฆเคฟ เค…เคญเคฟเคญเคพเคตเค• เคชเฅเคธเฅเคคเค• เคตเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค…เคเฅˆ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเฅ‡เคญ เค—เคฐเคฟเคเค•เฅ‹ เค›เฅˆเคจ เคญเคจเฅ‡, เคคเคฟเคจเฅ€เคนเคฐเฅ‚ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคธเฅ‡เคญ เคนเฅเคจเฅ‡เค›เคจเฅเฅค', + hindi: + 'เคฏเคน เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ {questName} เค•เฅ€ เคเค• เคธเฅเคฅเคพเคฏเฅ€ เคชเฅเคฐเคคเคฟเคฒเคฟเคชเคฟ เคฌเคจเคพเคเค—เคพเฅค\n\nเคธเคญเฅ€ เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคเค• เค…เคชเคฐเคฟเคตเคฐเฅเคคเคจเฅ€เคฏ เคธเฅเคจเฅˆเคชเคถเฅ‰เคŸ เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคธเคนเฅ‡เคœเฅ€ เคœเคพเคเค‚เค—เฅ€เฅค เคเค• เคฌเคพเคฐ เคธเคนเฅ‡เคœเคจเฅ‡ เค•เฅ‡ เคฌเคพเคฆ, เค‡เคธ เคธเค‚เคธเฅเค•เคฐเคฃ เค•เฅ‹ เคฌเคฆเคฒเคพ เคจเคนเฅ€เค‚ เคœเคพ เคธเค•เคคเคพ, เคฒเฅ‡เค•เคฟเคจ เค†เคตเคถเฅเคฏเค•เคคเคพ เคนเฅ‹เคจเฅ‡ เคชเคฐ เค†เคช เคฌเคพเคฆ เคฎเฅ‡เค‚ เคจเค เคธเค‚เคธเฅเค•เคฐเคฃ เคฌเคจเคพ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค\n\nเคฏเคฆเคฟ เคฎเฅ‚เคฒ เคชเฅเคธเฅเคคเค• เคฏเคพ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค…เคญเฅ€ เคคเค• เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคธเคนเฅ‡เคœเฅ€ เคจเคนเฅ€เค‚ เค—เคˆ เคนเฅˆ, เคคเฅ‹ เคตเฅ‡ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคธเคนเฅ‡เคœเฅ€ เคœเคพเคเค‚เค—เฅ€เฅค', + burmese: + 'แŽแ€„แ€บแ€ธแ€žแ€Šแ€บ cloud แ€แ€ฝแ€„แ€บ {questName} แ แ€กแ€™แ€ผแ€ฒแ€แ€™แ€บแ€ธ แ€™แ€ญแ€แ€นแ€แ€ฐแ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซแ€™แ€Šแ€บแ‹\n\nแ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแแ€™แ€›แ€žแ€ฑแ€ฌ snapshot แ€กแ€–แ€ผแ€…แ€บ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซแ€™แ€Šแ€บแ‹ แ€แ€…แ€บแ€€แ€ผแ€ญแ€™แ€บ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€€แŠ แ€คแ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแแ€™แ€›แ€•แ€ซแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€•แ€ซแ€€ แ€”แ€ฑแ€ฌแ€€แ€บแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธแ€กแ€žแ€…แ€บแ€™แ€ปแ€ฌแ€ธ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹\n\nแ€™แ€ญแ€˜แ€…แ€ฌแ€กแ€ฏแ€•แ€บ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ cloud แ€แ€ฝแ€„แ€บ แ€™แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€›แ€žแ€ฑแ€ธแ€•แ€ซแ€€แŠ แŽแ€„แ€บแ€ธแ€แ€ญแ€ฏแ€ทแ€€แ€ญแ€ฏ แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ™เธตเน‰เธˆเธฐเธชเธฃเน‰เธฒเธ‡เธชเธณเน€เธ™เธฒเธ–เธฒเธงเธฃเธ‚เธญเธ‡ {questName} เนƒเธ™เธ„เธฅเธฒเธงเธ”เนŒ\n\nเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเธ–เธนเธเธšเธฑเธ™เธ—เธถเธเน€เธ›เน‡เธ™เธ เธฒเธžเธ–เนˆเธฒเธขเธ—เธตเนˆเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เน„เธ”เน‰ เน€เธกเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเนเธฅเน‰เธง เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เน„เธ”เน‰ เนเธ•เนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธชเธฃเน‰เธฒเธ‡เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เนƒเธซเธกเนˆเนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡เธซเธฒเธเธˆเธณเน€เธ›เน‡เธ™\n\nเธซเธฒเธเธซเธ™เธฑเธ‡เธชเธทเธญเธซเธฃเธทเธญเน‚เธ„เธฃเธ‡เธเธฒเธฃเธซเธฅเธฑเธเธขเธฑเธ‡เน„เธกเนˆเน„เธ”เน‰เธšเธฑเธ™เธ—เธถเธเธฅเธ‡เธ„เธฅเธฒเธงเธ”เนŒ เธˆเธฐเธ–เธนเธเธšเธฑเธ™เธ—เธถเธเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด', + mandarin: + '่ฟ™ๅฐ†ๅœจไบ‘็ซฏๅˆ›ๅปบ {questName} ็š„ๆฐธไน…ๅ‰ฏๆœฌใ€‚\n\nๆ‰€ๆœ‰ๅฝ•้Ÿณๅฐ†ไฟๅญ˜ไธบไธๅฏๅ˜็š„ๅฟซ็…งใ€‚ไฟๅญ˜ๅŽ๏ผŒๆญค็‰ˆๆœฌๆ— ๆณ•ๆ›ดๆ”น๏ผŒไฝ†ๅฆ‚ๆžœ้œ€่ฆ๏ผŒๆ‚จๅฏไปฅ็จๅŽๅˆ›ๅปบๆ–ฐ็‰ˆๆœฌใ€‚\n\nๅฆ‚ๆžœ็ˆถไนฆ็ฑๆˆ–้กน็›ฎๅฐšๆœชไฟๅญ˜ๅˆฐไบ‘็ซฏ๏ผŒๅฎƒไปฌๅฐ†่‡ชๅŠจไฟๅญ˜ใ€‚' }, quest: { english: 'Quest', spanish: 'Misiรณn', brazilian_portuguese: 'Missรฃo', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ', + burmese: 'Quest', + thai: 'เน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ไปปๅŠก' }, questOptions: { english: 'Quest Options', @@ -993,7 +1484,11 @@ export const localizations = { brazilian_portuguese: 'Opรงรตes de Missรฃo', tok_pisin: 'Quest Options', indonesian: 'Opsi Misi', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคตเคฟเค•เคฒเฅเคชเคนเคฐเฅ‚' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคตเคฟเค•เคฒเฅเคชเคนเคฐเฅ‚', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคตเคฟเค•เคฒเฅเคช', + burmese: 'Quest แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€…แ€›แ€ฌแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ•เธฑเธงเน€เธฅเธทเธญเธเน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ไปปๅŠก้€‰้กน' }, recording: { english: 'Recording', @@ -1001,7 +1496,11 @@ export const localizations = { brazilian_portuguese: 'Gravando', tok_pisin: 'Recording', indonesian: 'Merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค—', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๆญฃๅœจๅฝ•ๅˆถ' }, register: { english: 'Register', @@ -1009,7 +1508,11 @@ export const localizations = { brazilian_portuguese: 'Registrar', tok_pisin: 'Register', indonesian: 'Daftar', - nepali: 'เคฆเคฐเฅเคคเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฆเคฐเฅเคคเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเค‚เคœเฅ€เค•เคฐเคฃ เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€•แ€ซ', + thai: 'เธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™', + mandarin: 'ๆณจๅ†Œ' }, createAccount: { english: 'Create Account', @@ -1017,7 +1520,11 @@ export const localizations = { brazilian_portuguese: 'Criar Conta', tok_pisin: 'Mekim Account', indonesian: 'Buat Akun', - nepali: 'เค–เคพเคคเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค–เคพเคคเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค–เคพเคคเคพ เคฌเคจเคพเคเค‚', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เธšเธฑเธเธŠเธต', + mandarin: 'ๅˆ›ๅปบ่ดฆๆˆท' }, registrationFail: { english: 'Registration failed', @@ -1025,7 +1532,11 @@ export const localizations = { brazilian_portuguese: 'Falha no registro', tok_pisin: 'Registration i no inap', indonesian: 'Pendaftaran gagal', - nepali: 'เคฆเคฐเฅเคคเคพ เค…เคธเคซเคฒ' + nepali: 'เคฆเคฐเฅเคคเคพ เค…เคธเคซเคฒ', + hindi: 'เคชเค‚เคœเฅ€เค•เคฐเคฃ เคตเคฟเคซเคฒ', + burmese: 'แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธเธฒเธฃเธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™เธฅเน‰เธกเน€เธซเธฅเธง', + mandarin: 'ๆณจๅ†Œๅคฑ่ดฅ' }, registrationSuccess: { english: 'Registration successful', @@ -1033,7 +1544,11 @@ export const localizations = { brazilian_portuguese: 'Registro bem-sucedido', tok_pisin: 'Registration i orait', indonesian: 'Pendaftaran berhasil', - nepali: 'เคฆเคฐเฅเคคเคพ เคธเคซเคฒ' + nepali: 'เคฆเคฐเฅเคคเคพ เคธเคซเคฒ', + hindi: 'เคชเค‚เคœเฅ€เค•เคฐเคฃ เคธเคซเคฒ', + burmese: 'แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธเธฒเธฃเธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™เธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆณจๅ†ŒๆˆๅŠŸ' }, resetPassword: { english: 'Reset Password', @@ -1041,7 +1556,11 @@ export const localizations = { brazilian_portuguese: 'Redefinir Senha', tok_pisin: 'Reset Password', indonesian: 'Reset Kata Sandi', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€•แ€ซ', + thai: 'เธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: '้‡็ฝฎๅฏ†็ ' }, returningHero: { english: 'Returning hero? Sign In', @@ -1049,7 +1568,11 @@ export const localizations = { brazilian_portuguese: 'Herรณi retornando? Faรงa Login', tok_pisin: 'Hero i kam bek? Sign In', indonesian: 'Pahlawan kembali? Masuk', - nepali: 'เคซเคฐเฅเค•เคฟเคจเฅ‡ เคจเคพเคฏเค•? เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคซเคฐเฅเค•เคฟเคจเฅ‡ เคจเคพเคฏเค•? เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคตเคพเคชเคธ เค† เคฐเคนเฅ‡ เคนเฅˆเค‚? เคธเคพเค‡เคจ เค‡เคจ เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€ฌแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€žแ€ฐแ€›แ€ฒแ€€แ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฌแ€ธ? แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€•แ€ซ', + thai: 'เธเธฅเธฑเธšเธกเธฒเนเธฅเน‰เธง? เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš', + mandarin: '่ฟ”ๅ›ž็š„่‹ฑ้›„๏ผŸ็™ปๅฝ•' }, search: { english: 'Search...', @@ -1057,7 +1580,11 @@ export const localizations = { brazilian_portuguese: 'Buscar...', tok_pisin: 'Painim...', indonesian: 'Cari...', - nepali: 'เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...' + nepali: 'เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...', + hindi: 'เค–เฅ‹เคœเฅ‡เค‚...', + burmese: 'แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€•แ€ซ...', + thai: 'เธ„เน‰เธ™เธซเธฒ...', + mandarin: 'ๆœ็ดข...' }, searchAssets: { english: 'Search assets...', @@ -1065,7 +1592,11 @@ export const localizations = { brazilian_portuguese: 'Buscar recursos...', tok_pisin: 'Painim ol asset...', indonesian: 'Cari aset...', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...', + hindi: 'เคเคธเฅ‡เคŸ เค–เฅ‹เคœเฅ‡เค‚...', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€•แ€ซ...', + thai: 'เธ„เน‰เธ™เธซเธฒเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ...', + mandarin: 'ๆœ็ดข่ต„ไบง...' }, noAssetsFound: { english: 'No assets found', @@ -1073,7 +1604,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum recurso encontrado', tok_pisin: 'No gat asset', indonesian: 'Tidak ada aset ditemukan', - nepali: 'เค•เฅเคจเฅˆ เคเคธเฅ‡เคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ' + nepali: 'เค•เฅเคจเฅˆ เคเคธเฅ‡เคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ', + hindi: 'เค•เฅ‹เคˆ เคเคธเฅ‡เคŸ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเคพ', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธžเธšเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ', + mandarin: 'ๆœชๆ‰พๅˆฐ่ต„ไบง' }, nothingHereYet: { english: 'Nothing here yet!', @@ -1081,7 +1616,11 @@ export const localizations = { brazilian_portuguese: 'ยกNada aqui ainda!', tok_pisin: 'I no gat here yet!', indonesian: 'Belum ada di sini!', - nepali: 'เคฏเคนเคพเค เค…เคเฅˆ เค•เฅ‡เคนเฅ€ เค›เฅˆเคจ!' + nepali: 'เคฏเคนเคพเค เค…เคเฅˆ เค•เฅ‡เคนเฅ€ เค›เฅˆเคจ!', + hindi: 'เคฏเคนเคพเค เค…เคญเฅ€ เคคเค• เค•เฅเค› เคจเคนเฅ€เค‚!', + burmese: 'แ€คแ€”แ€ฑแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€›แ€ฌแ€™แ€ปแ€พ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ธแ€•แ€ซ!', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเธกเธตเธญเธฐเน„เธฃเธ—เธตเนˆเธ™เธตเนˆ!', + mandarin: '่ฟ™้‡Œ่ฟ˜ๆฒกๆœ‰ไปปไฝ•ๅ†…ๅฎน๏ผ' }, searchQuests: { english: 'Search quests...', @@ -1089,7 +1628,11 @@ export const localizations = { brazilian_portuguese: 'Buscar missรตes...', tok_pisin: 'Painim ol quest...', indonesian: 'Cari misi...', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค–เฅ‹เคœเฅ‡เค‚...', + burmese: 'Quest แ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€•แ€ซ...', + thai: 'เธ„เน‰เธ™เธซเธฒเน€เธ„เธงเธชเธ•เนŒ...', + mandarin: 'ๆœ็ดขไปปๅŠก...' }, selectItem: { english: 'Select item', @@ -1097,7 +1640,11 @@ export const localizations = { brazilian_portuguese: 'Selecionar item', tok_pisin: 'Makim item', indonesian: 'Pilih item', - nepali: 'เคตเคธเฅเคคเฅ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคตเคธเฅเคคเฅ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค†เค‡เคŸเคฎ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธฃเธฒเธขเธเธฒเธฃ', + mandarin: '้€‰ๆ‹ฉ้กน็›ฎ' }, selectLanguage: { english: 'Please select a language', @@ -1105,7 +1652,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, selecione um idioma', tok_pisin: 'Plis makim wanpela tokples', indonesian: 'Silakan pilih bahasa', - nepali: 'เค•เฅƒเคชเคฏเคพ เคเค‰เคŸเคพ เคญเคพเคทเคพ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคเค‰เคŸเคพ เคญเคพเคทเคพ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคเค• เคญเคพเคทเคพ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเน€เธฅเธทเธญเธเธ เธฒเธฉเธฒ', + mandarin: '่ฏท้€‰ๆ‹ฉไธ€็ง่ฏญ่จ€' }, selectRegion: { english: 'Select Region', @@ -1113,7 +1664,11 @@ export const localizations = { brazilian_portuguese: 'Selecionar Regiรฃo', tok_pisin: 'Makim Region', indonesian: 'Pilih Wilayah', - nepali: 'เค•เฅเคทเฅ‡เคคเฅเคฐ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅเคทเฅ‡เคคเฅเคฐ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅเคทเฅ‡เคคเฅเคฐ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€’แ€ฑแ€žแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธ เธนเธกเธดเธ เธฒเธ„', + mandarin: '้€‰ๆ‹ฉๅœฐๅŒบ' }, selectRegionToFilterLanguages: { english: 'Select a region to see languages from that area', @@ -1121,7 +1676,11 @@ export const localizations = { brazilian_portuguese: 'Selecionar uma regiรฃo para ver idiomas dessa รกrea', tok_pisin: 'Makim wanpela region long lukim ol tokples bilong ples ya', indonesian: 'Pilih wilayah untuk melihat bahasa dari area tersebut', - nepali: 'เคคเฅเคฏเคธ เค•เฅเคทเฅ‡เคคเฅเคฐเค•เคพ เคญเคพเคทเคพเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจ เคเค‰เคŸเคพ เค•เฅเคทเฅ‡เคคเฅเคฐ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคคเฅเคฏเคธ เค•เฅเคทเฅ‡เคคเฅเคฐเค•เคพ เคญเคพเคทเคพเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจ เคเค‰เคŸเคพ เค•เฅเคทเฅ‡เคคเฅเคฐ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‰เคธ เค•เฅเคทเฅ‡เคคเฅเคฐ เค•เฅ€ เคญเคพเคทเคพเคเค‚ เคฆเฅ‡เค–เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคเค• เค•เฅเคทเฅ‡เคคเฅเคฐ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€‘แ€ญแ€ฏแ€’แ€ฑแ€žแ€™แ€พ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€›แ€”แ€บ แ€’แ€ฑแ€žแ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธ เธนเธกเธดเธ เธฒเธ„เน€เธžเธทเนˆเธญเธ”เธนเธ เธฒเธฉเธฒเธˆเธฒเธเธžเธทเน‰เธ™เธ—เธตเนˆเธ™เธฑเน‰เธ™', + mandarin: '้€‰ๆ‹ฉไธ€ไธชๅœฐๅŒบไปฅๆŸฅ็œ‹่ฏฅๅœฐๅŒบ็š„่ฏญ่จ€' }, selectYourLanguage: { english: 'Select Your Language', @@ -1129,7 +1688,11 @@ export const localizations = { brazilian_portuguese: 'Selecionar Seu Idioma', tok_pisin: 'Makim Tokples Bilong Yu', indonesian: 'Pilih Bahasa Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เคญเคพเคทเคพ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เคญเคพเคทเคพ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเฅ€ เคญเคพเคทเคพ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธ เธฒเธฉเธฒเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: '้€‰ๆ‹ฉๆ‚จ็š„่ฏญ่จ€' }, createLanguage: { english: 'Create Language', @@ -1137,7 +1700,11 @@ export const localizations = { brazilian_portuguese: 'Criar Idioma', tok_pisin: 'Mekim Tokples', indonesian: 'Buat Bahasa', - nepali: 'เคญเคพเคทเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคญเคพเคทเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคญเคพเคทเคพ เคฌเคจเคพเคเค‚', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เธ เธฒเธฉเธฒ', + mandarin: 'ๅˆ›ๅปบ่ฏญ่จ€' }, createNewLanguage: { english: 'Create New Language', @@ -1145,7 +1712,11 @@ export const localizations = { brazilian_portuguese: 'Criar Novo Idioma', tok_pisin: 'Mekim Nupela Tokples', indonesian: 'Buat Bahasa Baru', - nepali: 'เคจเคฏเคพเค เคญเคพเคทเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคจเคฏเคพเค เคญเคพเคทเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคจเคˆ เคญเคพเคทเคพ เคฌเคจเคพเคเค‚', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€กแ€žแ€…แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เธ เธฒเธฉเธฒเนƒเธซเธกเนˆ', + mandarin: 'ๅˆ›ๅปบๆ–ฐ่ฏญ่จ€' }, languageNotInList: { english: 'My language is not in the list', @@ -1153,7 +1724,11 @@ export const localizations = { brazilian_portuguese: 'Meu idioma nรฃo estรก na lista', tok_pisin: 'Tokples bilong mi i no stap long list', indonesian: 'Bahasa saya tidak ada dalam daftar', - nepali: 'เคฎเฅ‡เคฐเฅ‹ เคญเคพเคทเคพ เคธเฅ‚เคšเฅ€เคฎเคพ เค›เฅˆเคจ' + nepali: 'เคฎเฅ‡เคฐเฅ‹ เคญเคพเคทเคพ เคธเฅ‚เคšเฅ€เคฎเคพ เค›เฅˆเคจ', + hindi: 'เคฎเฅ‡เคฐเฅ€ เคญเคพเคทเคพ เคธเฅ‚เคšเฅ€ เคฎเฅ‡เค‚ เคจเคนเฅ€เค‚ เคนเฅˆ', + burmese: 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€žแ€Šแ€บ แ€…แ€ฌแ€›แ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€™แ€•แ€ซแ€แ€„แ€บแ€•แ€ซ', + thai: 'เธ เธฒเธฉเธฒเธ‚เธญเธ‡เธ‰เธฑเธ™เน„เธกเนˆเธญเธขเธนเนˆเนƒเธ™เธฃเธฒเธขเธเธฒเธฃ', + mandarin: 'ๆˆ‘็š„่ฏญ่จ€ไธๅœจๅˆ—่กจไธญ' }, willCreateLanguage: { english: 'Will create language', @@ -1161,7 +1736,11 @@ export const localizations = { brazilian_portuguese: 'Criarรก idioma', tok_pisin: 'Bai mekim tokples', indonesian: 'Akan membuat bahasa', - nepali: 'เคญเคพเคทเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเคฟเคจเฅ‡เค›' + nepali: 'เคญเคพเคทเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเคฟเคจเฅ‡เค›', + hindi: 'เคญเคพเคทเคพ เคฌเคจเคพเคˆ เคœเคพเคเค—เฅ€', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซแ€™แ€Šแ€บ', + thai: 'เธˆเธฐเธชเธฃเน‰เธฒเธ‡เธ เธฒเธฉเธฒ', + mandarin: 'ๅฐ†ๅˆ›ๅปบ่ฏญ่จ€' }, nativeName: { english: 'Native Name', @@ -1169,7 +1748,11 @@ export const localizations = { brazilian_portuguese: 'Nome Nativo', tok_pisin: 'Nem Bilong Tokples', indonesian: 'Nama Asli', - nepali: 'เคธเฅเคฅเคพเคจเฅ€เคฏ เคจเคพเคฎ' + nepali: 'เคธเฅเคฅเคพเคจเฅ€เคฏ เคจเคพเคฎ', + hindi: 'เคฎเฅ‚เคฒ เคจเคพเคฎ', + burmese: 'แ€™แ€ฐแ€›แ€„แ€บแ€ธแ€กแ€™แ€Šแ€บ', + thai: 'เธŠเธทเนˆเธญเธžเธทเน‰เธ™เน€เธกเธทเธญเธ‡', + mandarin: 'ๆœฌๆ—่ฏญๅ็งฐ' }, englishName: { english: 'English Name', @@ -1177,7 +1760,11 @@ export const localizations = { brazilian_portuguese: 'Nome em Inglรชs', tok_pisin: 'Nem Long English', indonesian: 'Nama dalam Bahasa Inggris', - nepali: 'เค…เค‚เค—เฅเคฐเฅ‡เคœเฅ€ เคจเคพเคฎ' + nepali: 'เค…เค‚เค—เฅเคฐเฅ‡เคœเฅ€ เคจเคพเคฎ', + hindi: 'เค…เค‚เค—เฅเคฐเฅ‡เคœเฅ€ เคจเคพเคฎ', + burmese: 'แ€กแ€„แ€บแ€นแ€‚แ€œแ€ญแ€•แ€บแ€กแ€™แ€Šแ€บ', + thai: 'เธŠเธทเนˆเธญเธ เธฒเธฉเธฒเธญเธฑเธ‡เธเธคเธฉ', + mandarin: '่‹ฑๆ–‡ๅ็งฐ' }, iso6393Code: { english: 'ISO 639-3 Code', @@ -1185,7 +1772,11 @@ export const localizations = { brazilian_portuguese: 'Cรณdigo ISO 639-3', tok_pisin: 'ISO 639-3 Code', indonesian: 'Kode ISO 639-3', - nepali: 'ISO 639-3 เค•เฅ‹เคก' + nepali: 'ISO 639-3 เค•เฅ‹เคก', + hindi: 'ISO 639-3 เค•เฅ‹เคก', + burmese: 'ISO 639-3 แ€€แ€ฏแ€’แ€บ', + thai: 'เธฃเธซเธฑเธช ISO 639-3', + mandarin: 'ISO 639-3 ไปฃ็ ' }, locale: { english: 'Locale', @@ -1193,7 +1784,11 @@ export const localizations = { brazilian_portuguese: 'Idioma', tok_pisin: 'Locale', indonesian: 'Lokalisasi', - nepali: 'เคฒเฅ‹เค•เฅ‡เคฒ' + nepali: 'เคฒเฅ‹เค•เฅ‡เคฒ', + hindi: 'เคฒเฅ‹เค•เฅ‡เคฒ', + burmese: 'แ€’แ€ฑแ€ž', + thai: 'เน‚เธฅเนเธ„เธฅ', + mandarin: 'ๅŒบๅŸŸ่ฎพ็ฝฎ' }, createAndContinue: { english: 'Create and Continue', @@ -1201,7 +1796,11 @@ export const localizations = { brazilian_portuguese: 'Criar e Continuar', tok_pisin: 'Mekim na Go Long', indonesian: 'Buat dan Lanjutkan', - nepali: 'เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเคจเคพเคเค‚ เค”เคฐ เคœเคพเคฐเฅ€ เคฐเค–เฅ‡เค‚', + burmese: 'แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ผแ€ฎแ€ธ แ€†แ€€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญ', + mandarin: 'ๅˆ›ๅปบๅนถ็ปง็ปญ' }, whatWouldYouLikeToCreate: { english: 'What would you like to create?', @@ -1209,7 +1808,11 @@ export const localizations = { brazilian_portuguese: 'O que vocรช gostaria de criar?', tok_pisin: 'Wanem samting yu laik mekim?', indonesian: 'Apa yang ingin Anda buat?', - nepali: 'เคคเคชเคพเคˆเค‚ เค•เฅ‡ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›?' + nepali: 'เคคเคชเคพเคˆเค‚ เค•เฅ‡ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›?', + hindi: 'เค†เคช เค•เฅเคฏเคพ เคฌเคจเคพเคจเคพ เคšเคพเคนเฅ‡เค‚เค—เฅ‡?', + burmese: 'แ€žแ€„แ€บแ€˜แ€ฌแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€œแ€ญแ€ฏแ€•แ€ซแ€žแ€œแ€ฒ?', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเธชเธฃเน‰เธฒเธ‡เธญเธฐเน„เธฃ?', + mandarin: 'ๆ‚จๆƒณๅˆ›ๅปบไป€ไนˆ๏ผŸ' }, createBibleProject: { english: 'Bible', @@ -1217,7 +1820,11 @@ export const localizations = { brazilian_portuguese: 'Bรญblia', tok_pisin: 'Baibel', indonesian: 'Alkitab', - nepali: 'เคฌเคพเค‡เคฌเคฒ' + nepali: 'เคฌเคพเค‡เคฌเคฒ', + hindi: 'เคฌเคพเค‡เคฌเคฒ', + burmese: 'แ€žแ€™แ€นแ€™แ€ฌแ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ', + thai: 'เธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒ', + mandarin: 'ๅœฃ็ป' }, translateBibleIntoYourLanguage: { english: 'Translate the Bible into your language', @@ -1225,7 +1832,11 @@ export const localizations = { brazilian_portuguese: 'Traduza a Bรญblia para o seu idioma', tok_pisin: 'Translate Baibel long tokples bilong yu', indonesian: 'Terjemahkan Alkitab ke bahasa Anda', - nepali: 'เคฌเคพเค‡เคฌเคฒเคฒเคพเคˆ เค†เคซเฅเคจเฅ‹ เคญเคพเคทเคพเคฎเคพ เค…เคจเฅเคตเคพเคฆ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเคพเค‡เคฌเคฒเคฒเคพเคˆ เค†เคซเฅเคจเฅ‹ เคญเคพเคทเคพเคฎเคพ เค…เคจเฅเคตเคพเคฆ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเคพเค‡เคฌเคฒ เค•เฅ‹ เค…เคชเคจเฅ€ เคญเคพเคทเคพ เคฎเฅ‡เค‚ เค…เคจเฅเคตเคพเคฆ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€™แ€นแ€™แ€ฌแ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌแ€€แ€ญแ€ฏ แ€žแ€„แ€บแ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€žแ€ญแ€ฏแ€ท แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€•แ€ซ', + thai: 'เนเธ›เธฅเธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒเน€เธ›เน‡เธ™เธ เธฒเธฉเธฒเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: 'ๅฐ†ๅœฃ็ป็ฟป่ฏ‘ๆˆๆ‚จ็š„่ฏญ่จ€' }, createOtherProject: { english: 'Other Translation', @@ -1233,7 +1844,11 @@ export const localizations = { brazilian_portuguese: 'Outra Traduรงรฃo', tok_pisin: 'Narapela Translation', indonesian: 'Terjemahan Lain', - nepali: 'เค…เคจเฅเคฏ เค…เคจเฅเคตเคพเคฆ' + nepali: 'เค…เคจเฅเคฏ เค…เคจเฅเคตเคพเคฆ', + hindi: 'เค…เคจเฅเคฏ เค…เคจเฅเคตเคพเคฆ', + burmese: 'แ€กแ€แ€ผแ€ฌแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ', + thai: 'เธเธฒเธฃเนเธ›เธฅเธญเธทเนˆเธ™เน†', + mandarin: 'ๅ…ถไป–็ฟป่ฏ‘' }, createGeneralTranslationProject: { english: 'Create a general translation project', @@ -1241,7 +1856,11 @@ export const localizations = { brazilian_portuguese: 'Criar um projeto de traduรงรฃo geral', tok_pisin: 'Mekim wanpela project long translate ol samting', indonesian: 'Buat proyek terjemahan umum', - nepali: 'เคธเคพเคฎเคพเคจเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคพเคฎเคพเคจเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเค• เคธเคพเคฎเคพเคจเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฌเคจเคพเคเค‚', + burmese: 'แ€กแ€‘แ€ฝแ€ฑแ€‘แ€ฝแ€ฑ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเนเธ›เธฅเธ—เธฑเนˆเธงเน„เธ›', + mandarin: 'ๅˆ›ๅปบ้€š็”จ็ฟป่ฏ‘้กน็›ฎ' }, selectProject: { english: 'Select Project', @@ -1249,7 +1868,11 @@ export const localizations = { brazilian_portuguese: 'Selecionar Projeto', tok_pisin: 'Makim Project', indonesian: 'Pilih Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้€‰ๆ‹ฉ้กน็›ฎ' }, createFirstProject: { english: 'Create First Project', @@ -1257,7 +1880,11 @@ export const localizations = { brazilian_portuguese: 'Criar Primeiro Projeto', tok_pisin: 'Mekim Nambawan Project', indonesian: 'Buat Proyek Pertama', - nepali: 'เคชเคนเคฟเคฒเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเคนเคฟเคฒเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคนเคฒเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฌเคจเคพเคเค‚', + burmese: 'แ€•แ€‘แ€™แ€†แ€ฏแ€ถแ€ธ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเนเธฃเธ', + mandarin: 'ๅˆ›ๅปบ็ฌฌไธ€ไธช้กน็›ฎ' }, createNewProject: { english: 'Create New Project', @@ -1265,7 +1892,11 @@ export const localizations = { nepali: 'เคจเคฏเคพเค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', brazilian_portuguese: 'Criar Novo Projeto', tok_pisin: 'Mekim Nupela Project', - indonesian: 'Buat Proyek Baru' + indonesian: 'Buat Proyek Baru', + hindi: 'เคจเคˆ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฌเคจเคพเคเค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€กแ€žแ€…แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเนƒเธซเธกเนˆ', + mandarin: 'ๅˆ›ๅปบๆ–ฐ้กน็›ฎ' }, existingProjectsInLanguage: { english: 'Existing projects in {language}', @@ -1273,7 +1904,11 @@ export const localizations = { brazilian_portuguese: 'Projetos existentes em {language}', tok_pisin: 'Ol project i stap pinis long {language}', indonesian: 'Proyek yang ada dalam {language}', - nepali: '{language} เคฎเคพ เค…เคตเคธเฅเคฅเคฟเคค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚' + nepali: '{language} เคฎเคพ เค…เคตเคธเฅเคฅเคฟเคค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚', + hindi: '{language} เคฎเฅ‡เค‚ เคฎเฅŒเคœเฅ‚เคฆเคพ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚', + burmese: '{language} แ€แ€ฝแ€„แ€บ แ€›แ€พแ€ญแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเนƒเธ™ {language}', + mandarin: '{language} ไธญ็š„็Žฐๆœ‰้กน็›ฎ' }, noProjectsInLanguage: { english: 'No projects yet in {language}', @@ -1281,7 +1916,11 @@ export const localizations = { brazilian_portuguese: 'Ainda nรฃo hรก projetos em {language}', tok_pisin: 'I no gat project yet long {language}', indonesian: 'Belum ada proyek dalam {language}', - nepali: '{language} เคฎเคพ เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅˆเคจ' + nepali: '{language} เคฎเคพ เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅˆเคจ', + hindi: '{language} เคฎเฅ‡เค‚ เค…เคญเฅ€ เคคเค• เค•เฅ‹เคˆ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคนเฅ€เค‚', + burmese: '{language} แ€แ€ฝแ€„แ€บ แ€กแ€แ€ฏแ€‘แ€ญ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ธแ€•แ€ซ', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเธกเธตเน‚เธ„เธฃเธ‡เธเธฒเธฃเนƒเธ™ {language}', + mandarin: '{language} ไธญ่ฟ˜ๆฒกๆœ‰้กน็›ฎ' }, searchLanguages: { english: 'Search languages...', @@ -1289,7 +1928,11 @@ export const localizations = { brazilian_portuguese: 'Pesquisar idiomas...', tok_pisin: 'Painim ol tokples...', indonesian: 'Cari bahasa...', - nepali: 'เคญเคพเคทเคพเคนเคฐเฅ‚ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...' + nepali: 'เคญเคพเคทเคพเคนเคฐเฅ‚ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...', + hindi: 'เคญเคพเคทเคพเคเค‚ เค–เฅ‹เคœเฅ‡เค‚...', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€•แ€ซ...', + thai: 'เธ„เน‰เธ™เธซเธฒเธ เธฒเธฉเธฒ...', + mandarin: 'ๆœ็ดข่ฏญ่จ€...' }, noLanguagesFound: { english: 'No languages found', @@ -1297,7 +1940,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum idioma encontrado', tok_pisin: 'I no gat tokples', indonesian: 'Tidak ada bahasa ditemukan', - nepali: 'เค•เฅเคจเฅˆ เคญเคพเคทเคพ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ' + nepali: 'เค•เฅเคจเฅˆ เคญเคพเคทเคพ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ', + hindi: 'เค•เฅ‹เคˆ เคญเคพเคทเคพ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเฅ€', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธžเธšเธ เธฒเธฉเธฒ', + mandarin: 'ๆœชๆ‰พๅˆฐ่ฏญ่จ€' }, noLanguagesInRegion: { english: @@ -1311,7 +1958,13 @@ export const localizations = { indonesian: 'Tidak ada bahasa ditemukan di wilayah ini. Anda dapat membuat bahasa baru di bawah ini.', nepali: - 'เคฏเคธ เค•เฅเคทเฅ‡เคคเฅเคฐเคฎเคพ เค•เฅเคจเฅˆ เคญเคพเคทเคพ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจเฅค เคคเคชเคพเคˆเค‚ เคคเคฒ เคจเคฏเคพเค เคญเคพเคทเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคฏเคธ เค•เฅเคทเฅ‡เคคเฅเคฐเคฎเคพ เค•เฅเคจเฅˆ เคญเคพเคทเคพ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจเฅค เคคเคชเคพเคˆเค‚ เคคเคฒ เคจเคฏเคพเค เคญเคพเคทเคพ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค‡เคธ เค•เฅเคทเฅ‡เคคเฅเคฐ เคฎเฅ‡เค‚ เค•เฅ‹เคˆ เคญเคพเคทเคพ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเฅ€เฅค เค†เคช เคจเฅ€เคšเฅ‡ เคเค• เคจเคˆ เคญเคพเคทเคพ เคฌเคจเคพ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€คแ€’แ€ฑแ€žแ€แ€ฝแ€„แ€บ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€บ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€กแ€žแ€…แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เน„เธกเนˆเธžเธšเธ เธฒเธฉเธฒเนƒเธ™เธ เธนเธกเธดเธ เธฒเธ„เธ™เธตเน‰ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธชเธฃเน‰เธฒเธ‡เธ เธฒเธฉเธฒเนƒเธซเธกเนˆเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เน„เธ”เน‰', + mandarin: 'ๆญคๅœฐๅŒบๆœชๆ‰พๅˆฐ่ฏญ่จ€ใ€‚ๆ‚จๅฏไปฅๅœจไธ‹้ขๅˆ›ๅปบๆ–ฐ่ฏญ่จ€ใ€‚' }, typeToSearch: { english: 'Type at least {min} characters to search', @@ -1319,7 +1972,11 @@ export const localizations = { brazilian_portuguese: 'Digite pelo menos {min} caracteres para pesquisar', tok_pisin: 'Raitim {min} leta bipo painim', indonesian: 'Ketik setidaknya {min} karakter untuk mencari', - nepali: 'เค–เฅ‹เคœเฅเคจ เค•เคฎเฅเคคเคฟเคฎเคพ {min} เค…เค•เฅเคทเคฐ เคŸเคพเค‡เคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค–เฅ‹เคœเฅเคจ เค•เคฎเฅเคคเคฟเคฎเคพ {min} เค…เค•เฅเคทเคฐ เคŸเคพเค‡เคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค–เฅ‹เคœเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค•เคฎ เคธเฅ‡ เค•เคฎ {min} เค…เค•เฅเคทเคฐ เคŸเคพเค‡เคช เค•เคฐเฅ‡เค‚', + burmese: 'แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€›แ€”แ€บ แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธ {min} แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธ แ€›แ€ญแ€ฏแ€€แ€บแ€‘แ€Šแ€ทแ€บแ€•แ€ซ', + thai: 'เธžเธดเธกเธžเนŒเธญเธขเนˆเธฒเธ‡เธ™เน‰เธญเธข {min} เธ•เธฑเธงเธญเธฑเธเธฉเธฃเน€เธžเธทเนˆเธญเธ„เน‰เธ™เธซเธฒ', + mandarin: '่พ“ๅ…ฅ่‡ณๅฐ‘ {min} ไธชๅญ—็ฌฆ่ฟ›่กŒๆœ็ดข' }, selectTemplate: { english: 'Please select a template', @@ -1327,7 +1984,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, selecione uma planta', tok_pisin: 'Plis makim wanpela template', indonesian: 'Silakan pilih template', - nepali: 'เค•เฅƒเคชเคฏเคพ เคเค‰เคŸเคพ เคŸเฅ‡เคฎเฅเคชเฅเคฒเฅ‡เคŸ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคเค‰เคŸเคพ เคŸเฅ‡เคฎเฅเคชเฅเคฒเฅ‡เคŸ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคเค• เคŸเฅ‡เคฎเฅเคชเฅเคฒเฅ‡เคŸ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€•แ€ฏแ€ถแ€…แ€ถแ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเน€เธฅเธทเธญเธเน€เธ—เธกเน€เธžเธฅเธ•', + mandarin: '่ฏท้€‰ๆ‹ฉไธ€ไธชๆจกๆฟ' }, sendResetEmail: { english: 'Send Reset Email', @@ -1335,7 +1996,11 @@ export const localizations = { brazilian_portuguese: 'Enviar E-mail de Redefiniรงรฃo', tok_pisin: 'Salim Reset Email', indonesian: 'Kirim Email Reset', - nepali: 'เคฐเคฟเคธเฅ‡เคŸ เค‡เคฎเฅ‡เคฒ เคชเค เคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเคฟเคธเฅ‡เคŸ เค‡เคฎเฅ‡เคฒ เคชเค เคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเฅ€เคธเฅ‡เคŸ เคˆเคฎเฅ‡เคฒ เคญเฅ‡เคœเฅ‡เค‚', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธญเธตเน€เธกเธฅเธฃเธตเน€เธ‹เน‡เธ•', + mandarin: 'ๅ‘้€้‡็ฝฎ็”ตๅญ้‚ฎไปถ' }, signIn: { english: 'Sign In', @@ -1343,7 +2008,11 @@ export const localizations = { brazilian_portuguese: 'Entrar', tok_pisin: 'Sign In', indonesian: 'Masuk', - nepali: 'เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคพเค‡เคจ เค‡เคจ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€•แ€ซ', + thai: 'เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš', + mandarin: '็™ปๅฝ•' }, signInToSaveOrContribute: { english: 'Sign in to save or contribute to projects', @@ -1351,7 +2020,11 @@ export const localizations = { brazilian_portuguese: 'Entre para salvar ou contribuir com projetos', tok_pisin: 'Sign in long seivim o helpim ol project', indonesian: 'Masuk untuk menyimpan atau berkontribusi pada proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคธเฅ‡เคญ เค—เคฐเฅเคจ เคตเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคธเฅ‡เคญ เค—เคฐเฅเคจ เคตเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเค“เค‚ เค•เฅ‹ เคธเคนเฅ‡เคœเคจเฅ‡ เคฏเคพ เคฏเฅ‹เค—เคฆเคพเคจ เคฆเฅ‡เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเคพเค‡เคจ เค‡เคจ เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€›แ€”แ€บ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€›แ€”แ€บ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€•แ€ซ', + thai: 'เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเธซเธฃเธทเธญเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '็™ปๅฝ•ไปฅไฟๅญ˜ๆˆ–ไธบ้กน็›ฎๅšๅ‡บ่ดก็Œฎ' }, orBrowseAllProjects: { english: 'Or browse all public projects', @@ -1359,7 +2032,11 @@ export const localizations = { brazilian_portuguese: 'Ou navegue por todos os projetos pรบblicos', tok_pisin: 'O lukluk long olgeta public project', indonesian: 'Atau jelajahi semua proyek publik', - nepali: 'เคตเคพ เคธเคฌเฅˆ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคฌเฅเคฐเคพเค‰เคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคตเคพ เคธเคฌเฅˆ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคฌเฅเคฐเคพเค‰เคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฏเคพ เคธเคญเฅ€ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚ เคฌเฅเคฐเคพเค‰เคœเคผ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€œแ€ฐแ€‘แ€ฏแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€•แ€ซ', + thai: 'เธซเธฃเธทเธญเน€เธฃเธตเธขเธเธ”เธนเน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเธฒเธ˜เธฒเธฃเธ“เธฐเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: 'ๆˆ–ๆต่งˆๆ‰€ๆœ‰ๅ…ฌๅ…ฑ้กน็›ฎ' }, viewAllProjects: { english: 'View All Projects', @@ -1367,7 +2044,11 @@ export const localizations = { brazilian_portuguese: 'Ver Todos os Projetos', tok_pisin: 'Lukim Olgeta Project', indonesian: 'Lihat Semua Proyek', - nepali: 'เคธเคฌเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคฌเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคญเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚ เคฆเฅ‡เค–เฅ‡เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€•แ€ซ', + thai: 'เธ”เธนเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: 'ๆŸฅ็œ‹ๆ‰€ๆœ‰้กน็›ฎ' }, signInError: { english: 'Something went wrongโ€ฆ Please, check your email and password.', @@ -1377,7 +2058,12 @@ export const localizations = { tok_pisin: 'Samting i rong... Plis checkum email na password bilong yu.', indonesian: 'Terjadi kesalahan... Silakan periksa email dan kata sandi Anda.', - nepali: 'เค•เฅ‡เคนเฅ€ เค—เคฒเคค เคญเคฏเฅ‹โ€ฆ เค•เฅƒเคชเคฏเคพ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคฐ เคชเคพเคธเคตเคฐเฅเคก เคœเคพเคเคš เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เค•เฅ‡เคนเฅ€ เค—เคฒเคค เคญเคฏเฅ‹โ€ฆ เค•เฅƒเคชเคฏเคพ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคฐ เคชเคพเคธเคตเคฐเฅเคก เคœเคพเคเคš เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เค•เฅเค› เค—เคฒเคค เคนเฅ‹ เค—เคฏเคพโ€ฆ เค•เฅƒเคชเคฏเคพ เค…เคชเคจเคพ เคˆเคฎเฅ‡เคฒ เค”เคฐ เคชเคพเคธเคตเคฐเฅเคก เคœเคพเค‚เคšเฅ‡เค‚เฅค', + burmese: + 'แ€แ€…แ€บแ€แ€ฏแ€แ€ฏ แ€™แ€พแ€ฌแ€ธแ€šแ€ฝแ€„แ€บแ€ธแ€”แ€ฑแ€•แ€ซแ€žแ€Šแ€บโ€ฆ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€žแ€„แ€บแ แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€”แ€พแ€„แ€ทแ€บ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€†แ€ฑแ€ธแ€•แ€ซแ‹', + thai: 'เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”... เธเธฃเธธเธ“เธฒเธ•เธฃเธงเธˆเธชเธญเธšเธญเธตเน€เธกเธฅเนเธฅเธฐเธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: 'ๅ‡บไบ†็‚น้—ฎ้ข˜โ€ฆ่ฏทๆฃ€ๆŸฅๆ‚จ็š„็”ตๅญ้‚ฎไปถๅ’Œๅฏ†็ ใ€‚' }, logOut: { english: 'Log Out', @@ -1385,7 +2071,11 @@ export const localizations = { brazilian_portuguese: 'Sair', tok_pisin: 'Log Out', indonesian: 'Keluar', - nepali: 'เคฒเค— เค†เค‰เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฒเค— เค†เค‰เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฒเฅ‰เค— เค†เค‰เคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€‘แ€ฝแ€€แ€บแ€•แ€ซ', + thai: 'เธญเธญเธเธˆเธฒเธเธฃเธฐเธšเธš', + mandarin: '็™ปๅ‡บ' }, sortBy: { english: 'Sort by', @@ -1393,7 +2083,11 @@ export const localizations = { brazilian_portuguese: 'Ordenar por', tok_pisin: 'Sortim long', indonesian: 'Urutkan berdasarkan', - nepali: 'เค•เฅเคฐเคฎเคฌเคฆเฅเคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅเคฐเคฎเคฌเคฆเฅเคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅเคฐเคฎเคฌเคฆเฅเคง เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€œแ€ญแ€ฏแ€€แ€บแ€…แ€‰แ€บแ€•แ€ซ', + thai: 'เน€เธฃเธตเธขเธ‡เธ•เธฒเธก', + mandarin: 'ๆŽ’ๅบๆ–นๅผ' }, source: { english: 'Source', @@ -1401,7 +2095,11 @@ export const localizations = { brazilian_portuguese: 'Fonte', tok_pisin: 'Source', indonesian: 'Sumber', - nepali: 'เคธเฅเคฐเฅ‹เคค' + nepali: 'เคธเฅเคฐเฅ‹เคค', + hindi: 'เคธเฅเคฐเฅ‹เคค', + burmese: 'แ€›แ€„แ€บแ€ธแ€™แ€ผแ€…แ€บ', + thai: 'เนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒ', + mandarin: 'ๆฅๆบ' }, submit: { english: 'Submit', @@ -1409,7 +2107,11 @@ export const localizations = { brazilian_portuguese: 'Enviar', tok_pisin: 'Salim', indonesian: 'Kirim', - nepali: 'เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคœเคฎเคพ เค•เคฐเฅ‡เค‚', + burmese: 'แ€แ€„แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธชเนˆเธ‡', + mandarin: 'ๆไบค' }, success: { english: 'Success', @@ -1417,7 +2119,11 @@ export const localizations = { brazilian_portuguese: 'Sucesso', tok_pisin: 'Orait', indonesian: 'Berhasil', - nepali: 'เคธเคซเคฒ' + nepali: 'เคธเคซเคฒ', + hindi: 'เคธเคซเคฒเคคเคพ', + burmese: 'แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€™แ€พแ€ฏ', + thai: 'เธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆˆๅŠŸ' }, target: { english: 'Target', @@ -1425,7 +2131,11 @@ export const localizations = { brazilian_portuguese: 'Alvo', tok_pisin: 'Target', indonesian: 'Target', - nepali: 'เคฒเค•เฅเคทเฅเคฏ' + nepali: 'เคฒเค•เฅเคทเฅเคฏ', + hindi: 'เคฒเค•เฅเคทเฅเคฏ', + burmese: 'แ€•แ€…แ€บแ€™แ€พแ€แ€บ', + thai: 'เน€เธ›เน‰เธฒเธซเธกเธฒเธข', + mandarin: '็›ฎๆ ‡' }, username: { english: 'Username', @@ -1433,7 +2143,11 @@ export const localizations = { brazilian_portuguese: 'Nome de usuรกrio', tok_pisin: 'Username', indonesian: 'Nama pengguna', - nepali: 'เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคจเคพเคฎ' + nepali: 'เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคจเคพเคฎ', + hindi: 'เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคจเคพเคฎ', + burmese: 'แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€กแ€™แ€Šแ€บ', + thai: 'เธŠเธทเนˆเธญเธœเธนเน‰เนƒเธŠเน‰', + mandarin: '็”จๆˆทๅ' }, usernameRequired: { english: 'Username is required', @@ -1441,7 +2155,11 @@ export const localizations = { brazilian_portuguese: 'Nome de usuรกrio รฉ obrigatรณrio', tok_pisin: 'Username i mas', indonesian: 'Nama pengguna diperlukan', - nepali: 'เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคจเคพเคฎ เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคจเคพเคฎ เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคจเคพเคฎ เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€กแ€™แ€Šแ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เธŠเธทเนˆเธญเธœเธนเน‰เนƒเธŠเน‰', + mandarin: '้œ€่ฆ็”จๆˆทๅ' }, votes: { english: 'Votes', @@ -1449,13 +2167,21 @@ export const localizations = { brazilian_portuguese: 'Votos', tok_pisin: 'Ol Vote', indonesian: 'Suara', - nepali: 'เคฎเคคเคนเคฐเฅ‚' + nepali: 'เคฎเคคเคนเคฐเฅ‚', + hindi: 'เคตเฅ‹เคŸ', + burmese: 'แ€™แ€ฒแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ„เธฐเนเธ™เธ™', + mandarin: 'ๆŠ•็ฅจ' }, voting: { english: 'Voting', spanish: 'Votaciรณn', brazilian_portuguese: 'Votaรงรฃo', - nepali: 'เคฎเคคเคฆเคพเคจ' + nepali: 'เคฎเคคเคฆเคพเคจ', + hindi: 'เคฎเคคเคฆเคพเคจ', + burmese: 'แ€™แ€ฒแ€•แ€ฑแ€ธแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธเธฒเธฃเธฅเธ‡เธ„เธฐเนเธ™เธ™', + mandarin: 'ๆŠ•็ฅจ' }, warning: { english: 'Warning', @@ -1463,7 +2189,11 @@ export const localizations = { brazilian_portuguese: 'Aviso', tok_pisin: 'Warning', indonesian: 'Peringatan', - nepali: 'เคšเฅ‡เคคเคพเคตเคจเฅ€' + nepali: 'เคšเฅ‡เคคเคพเคตเคจเฅ€', + hindi: 'เคšเฅ‡เคคเคพเคตเคจเฅ€', + burmese: 'แ€žแ€แ€ญแ€•แ€ฑแ€ธแ€แ€ปแ€€แ€บ', + thai: 'เธ„เธณเน€เธ•เธทเธญเธ™', + mandarin: '่ญฆๅ‘Š' }, welcome: { english: 'Welcome back, hero!', @@ -1471,7 +2201,11 @@ export const localizations = { brazilian_portuguese: 'Bem-vindo de volta, herรณi!', tok_pisin: 'Welkam bek, hero!', indonesian: 'Selamat datang kembali, pahlawan!', - nepali: 'เคซเฅ‡เคฐเคฟ เคธเฅเคตเคพเค—เคค เค›, เคจเคพเคฏเค•!' + nepali: 'เคซเฅ‡เคฐเคฟ เคธเฅเคตเคพเค—เคค เค›, เคจเคพเคฏเค•!', + hindi: 'เคตเคพเคชเคธเฅ€ เคชเคฐ เคธเฅเคตเคพเค—เคค เคนเฅˆ, เคจเคพเคฏเค•!', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€ฌแ€›แ€”แ€บ แ€€แ€ผแ€ญแ€ฏแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ฐแ€›แ€ฒแ€€แ€ฑแ€ฌแ€„แ€บแ€ธ!', + thai: 'เธขเธดเธ™เธ”เธตเธ•เน‰เธญเธ™เธฃเธฑเธšเธเธฅเธฑเธšเธกเธฒ เธฎเธตเน‚เธฃเนˆ!', + mandarin: 'ๆฌข่ฟŽๅ›žๆฅ๏ผŒ่‹ฑ้›„๏ผ' }, welcomeToApp: { english: 'Welcome', @@ -1479,7 +2213,11 @@ export const localizations = { brazilian_portuguese: 'Bem-vindo', tok_pisin: 'Welkam', indonesian: 'Selamat datang', - nepali: 'เคธเฅเคตเคพเค—เคค เค›' + nepali: 'เคธเฅเคตเคพเค—เคค เค›', + hindi: 'เคธเฅเคตเคพเค—เคค เคนเฅˆ', + burmese: 'แ€€แ€ผแ€ญแ€ฏแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธขเธดเธ™เธ”เธตเธ•เน‰เธญเธ™เธฃเธฑเธš', + mandarin: 'ๆฌข่ฟŽ' }, recentlyVisited: { english: 'Recently Visited', @@ -1487,7 +2225,11 @@ export const localizations = { brazilian_portuguese: 'Visitados Recentemente', tok_pisin: 'Nupela taim visitim', indonesian: 'Baru Dikunjungi', - nepali: 'เคนเคพเคฒเคธเคพเคฒเฅˆ เคญเฅเคฐเคฎเคฃ เค—เคฐเคฟเคเค•เฅ‹' + nepali: 'เคนเคพเคฒเคธเคพเคฒเฅˆ เคญเฅเคฐเคฎเคฃ เค—เคฐเคฟเคเค•เฅ‹', + hindi: 'เคนเคพเคฒ เคนเฅ€ เคฎเฅ‡เค‚ เคฆเฅ‡เค–เคพ เค—เคฏเคพ', + burmese: 'แ€™แ€€แ€ผแ€ฌแ€žแ€ฑแ€ธแ€™แ€ฎ แ€œแ€Šแ€บแ€•แ€แ€บแ€แ€ฒแ€ทแ€žแ€Šแ€บ', + thai: 'เน€เธขเธตเนˆเธขเธกเธŠเธกเธฅเนˆเธฒเธชเธธเธ”', + mandarin: 'ๆœ€่ฟ‘่ฎฟ้—ฎ' }, assets: { english: 'Assets', @@ -1495,13 +2237,21 @@ export const localizations = { brazilian_portuguese: 'Recursos', tok_pisin: 'Ol Asset', indonesian: 'Aset', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚', + hindi: 'เคเคธเฅ‡เคŸ', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ', + mandarin: '่ต„ไบง' }, asset: { english: 'Asset', spanish: 'Recurso', brazilian_portuguese: 'Recurso', - nepali: 'เคเคธเฅ‡เคŸ' + nepali: 'เคเคธเฅ‡เคŸ', + hindi: 'เคเคธเฅ‡เคŸ', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ', + thai: 'เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ', + mandarin: '่ต„ไบง' }, deleteAssets: { english: 'Delete Assets', @@ -1509,7 +2259,11 @@ export const localizations = { brazilian_portuguese: 'Excluir recursos', tok_pisin: 'Rausim ol asset', indonesian: 'Hapus aset', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเฅ‡เคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเฅ‡เคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเคธเฅ‡เคŸ เคนเคŸเคพเคเค‚', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ซ', + thai: 'เธฅเธšเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ', + mandarin: 'ๅˆ ้™ค่ต„ไบง' }, deleteAssetsConfirmation: { english: @@ -1523,7 +2277,13 @@ export const localizations = { indonesian: 'Apakah Anda yakin ingin menghapus {count} aset? Tindakan ini tidak dapat dibatalkan.', nepali: - 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {count} เคเคธเฅ‡เคŸ(เคนเคฐเฅ‚) เคฎเฅ‡เคŸเคพเค‰เคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›? เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {count} เคเคธเฅ‡เคŸ(เคนเคฐเฅ‚) เคฎเฅ‡เคŸเคพเค‰เคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›? เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: + 'เค•เฅเคฏเคพ เค†เคช เคตเคพเค•เคˆ {count} เคเคธเฅ‡เคŸ เคนเคŸเคพเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚? เคฏเคน เค•เคพเคฐเฅเคฐเคตเคพเคˆ เคชเฅ‚เคฐเฅเคตเคตเคค เคจเคนเฅ€เค‚ เค•เฅ€ เคœเคพ เคธเค•เคคเฅ€เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ {count} แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€›แ€”แ€บ แ€žแ€ฑแ€แ€ปแ€ฌแ€•แ€ซแ€žแ€œแ€ฌแ€ธ? แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€„แ€บแ€™แ€›แ€•แ€ซแ‹', + thai: 'เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ {count} เธฃเธฒเธขเธเธฒเธฃ? เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', + mandarin: 'ๆ‚จ็กฎๅฎš่ฆๅˆ ้™ค {count} ไธช่ต„ไบงๅ—๏ผŸๆญคๆ“ไฝœๆ— ๆณ•ๆ’คๆถˆใ€‚' }, delete: { english: 'Delete', @@ -1531,7 +2291,11 @@ export const localizations = { brazilian_portuguese: 'Excluir', tok_pisin: 'Rausim', indonesian: 'Hapus', - nepali: 'เคฎเฅ‡เคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเฅ‡เคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคนเคŸเคพเคเค‚', + burmese: 'แ€–แ€ปแ€€แ€บแ€•แ€ซ', + thai: 'เธฅเธš', + mandarin: 'ๅˆ ้™ค' }, mergeAssets: { english: 'Merge Assets', @@ -1539,7 +2303,11 @@ export const localizations = { brazilian_portuguese: 'Mesclar recursos', tok_pisin: 'Joinim ol asset', indonesian: 'Gabungkan aset', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเคฐเฅเคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเคฐเฅเคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเคธเฅ‡เคŸ เคฎเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€…แ€•แ€บแ€•แ€ซ', + thai: 'เธฃเธงเธกเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ', + mandarin: 'ๅˆๅนถ่ต„ไบง' }, mergeAssetsConfirmation: { english: @@ -1553,7 +2321,14 @@ export const localizations = { indonesian: 'Apakah Anda yakin ingin menggabungkan {count} aset? Segmen audio akan digabungkan ke aset pertama yang dipilih, dan yang lainnya akan dihapus.', nepali: - 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {count} เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเคฐเฅเคœ เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›? เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคชเคนเคฟเคฒเฅ‹ เคšเคฏเคจ เค—เคฐเคฟเคเค•เฅ‹ เคเคธเฅ‡เคŸเคฎเคพ เคธเค‚เคฏเฅ‹เคœเคจ เคนเฅเคจเฅ‡เค›เคจเฅ, เคฐ เค…เคฐเฅ‚เคนเคฐเฅ‚ เคฎเฅ‡เคŸเคฟเคจเฅ‡เค›เคจเฅเฅค' + 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {count} เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเคฐเฅเคœ เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›? เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคชเคนเคฟเคฒเฅ‹ เคšเคฏเคจ เค—เคฐเคฟเคเค•เฅ‹ เคเคธเฅ‡เคŸเคฎเคพ เคธเค‚เคฏเฅ‹เคœเคจ เคนเฅเคจเฅ‡เค›เคจเฅ, เคฐ เค…เคฐเฅ‚เคนเคฐเฅ‚ เคฎเฅ‡เคŸเคฟเคจเฅ‡เค›เคจเฅเฅค', + hindi: + 'เค•เฅเคฏเคพ เค†เคช เคตเคพเค•เคˆ {count} เคเคธเฅ‡เคŸ เคฎเคฐเฅเคœ เค•เคฐเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚? เค‘เคกเคฟเคฏเฅ‹ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เคชเคนเคฒเฅ‡ เคšเคฏเคจเคฟเคค เคเคธเฅ‡เคŸ เคฎเฅ‡เค‚ เคธเค‚เคฏเฅ‹เคœเคฟเคค เคนเฅ‹ เคœเคพเคเค‚เค—เฅ‡, เค”เคฐ เค…เคจเฅเคฏ เคนเคŸเคพ เคฆเคฟเค เคœเคพเคเค‚เค—เฅ‡เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ {count} แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€…แ€•แ€บแ€›แ€”แ€บ แ€žแ€ฑแ€แ€ปแ€ฌแ€•แ€ซแ€žแ€œแ€ฌแ€ธ? แ€กแ€žแ€ถแ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€‘แ€™แ€†แ€ฏแ€ถแ€ธ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€žแ€ญแ€ฏแ€ท แ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€…แ€•แ€บแ€•แ€ซแ€™แ€Šแ€บแŠ แ€กแ€แ€ผแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฃเธงเธกเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ {count} เธฃเธฒเธขเธเธฒเธฃ? เธชเนˆเธงเธ™เน€เธชเธตเธขเธ‡เธˆเธฐเธ–เธนเธเธฃเธงเธกเน€เธ‚เน‰เธฒเธเธฑเธšเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเนเธฃเธเธ—เธตเนˆเน€เธฅเธทเธญเธ เนเธฅเธฐเธฃเธฒเธขเธเธฒเธฃเธญเธทเนˆเธ™เน† เธˆเธฐเธ–เธนเธเธฅเธš', + mandarin: + 'ๆ‚จ็กฎๅฎš่ฆๅˆๅนถ {count} ไธช่ต„ไบงๅ—๏ผŸ้Ÿณ้ข‘็‰‡ๆฎตๅฐ†ๅˆๅนถๅˆฐ็ฌฌไธ€ไธช้€‰ๅฎš็š„่ต„ไบงไธญ๏ผŒๅ…ถไป–่ต„ไบงๅฐ†่ขซๅˆ ้™คใ€‚' }, merge: { english: 'Merge', @@ -1561,7 +2336,11 @@ export const localizations = { brazilian_portuguese: 'Mesclar', tok_pisin: 'Joinim', indonesian: 'Gabungkan', - nepali: 'เคฎเคฐเฅเคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเคฐเฅเคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฎเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€…แ€•แ€บแ€•แ€ซ', + thai: 'เธฃเธงเธก', + mandarin: 'ๅˆๅนถ' }, failedToMergeAssets: { english: 'Failed to merge assets. Please try again.', @@ -1570,7 +2349,12 @@ export const localizations = { 'Falha ao mesclar recursos. Por favor, tente novamente.', tok_pisin: 'I no inap joinim ol asset. Plis traim gen.', indonesian: 'Gagal menggabungkan aset. Silakan coba lagi.', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเคฐเฅเคœ เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเคฐเฅเคœ เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เคเคธเฅ‡เคŸ เคฎเคฐเฅเคœ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€…แ€•แ€บแแ€™แ€›แ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เธฃเธงเธกเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๅˆๅนถ่ต„ไบงๅคฑ่ดฅใ€‚่ฏท้‡่ฏ•ใ€‚' }, failedToDeleteAssets: { english: 'Failed to delete assets. Please try again.', @@ -1579,7 +2363,11 @@ export const localizations = { 'Falha ao excluir recursos. Por favor, tente novamente.', tok_pisin: 'I no inap rausim ol asset. Plis traim gen.', indonesian: 'Gagal menghapus aset. Silakan coba lagi.', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเฅ‡เคŸเคพเค‰เคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฎเฅ‡เคŸเคพเค‰เคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เคเคธเฅ‡เคŸ เคนเคŸเคพเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแแ€™แ€›แ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เธฅเธšเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๅˆ ้™ค่ต„ไบงๅคฑ่ดฅใ€‚่ฏท้‡่ฏ•ใ€‚' }, errorLoadingAssets: { english: 'Error loading assets', @@ -1587,7 +2375,11 @@ export const localizations = { brazilian_portuguese: 'Erro ao carregar recursos', tok_pisin: 'Rong long loadim ol asset', indonesian: 'Kesalahan memuat aset', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เคคเฅเคฐเฅเคŸเคฟ' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เคคเฅเคฐเฅเคŸเคฟ', + hindi: 'เคเคธเฅ‡เคŸ เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคคเฅเคฐเฅเคŸเคฟ', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเน‚เธซเธฅเธ”เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ', + mandarin: 'ๅŠ ่ฝฝ่ต„ไบงๆ—ถๅ‡บ้”™' }, noAssetsYetStartRecording: { english: 'No assets yet. Start recording to create your first asset.', @@ -1600,7 +2392,13 @@ export const localizations = { indonesian: 'Belum ada aset. Mulai merekam untuk membuat aset pertama Anda.', nepali: - 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคเคธเฅ‡เคŸ เค›เฅˆเคจเฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคชเคนเคฟเคฒเฅ‹ เคเคธเฅ‡เคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคเคธเฅ‡เคŸ เค›เฅˆเคจเฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคชเคนเคฟเคฒเฅ‹ เคเคธเฅ‡เคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค…เคญเฅ€ เคคเค• เค•เฅ‹เคˆ เคเคธเฅ‡เคŸ เคจเคนเฅ€เค‚เฅค เค…เคชเคจเคพ เคชเคนเคฒเคพ เคเคธเฅ‡เคŸ เคฌเคจเคพเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€กแ€แ€ฏแ€‘แ€ญ แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ธแ€•แ€ซแ‹ แ€žแ€„แ€บแ แ€•แ€‘แ€™แ€†แ€ฏแ€ถแ€ธ แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€›แ€”แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€…แ€แ€„แ€บแ€•แ€ซแ‹', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเธกเธตเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ เน€เธฃเธดเนˆเธกเธšเธฑเธ™เธ—เธถเธเน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเนเธฃเธเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: '่ฟ˜ๆฒกๆœ‰่ต„ไบงใ€‚ๅผ€ๅง‹ๅฝ•ๅˆถไปฅๅˆ›ๅปบๆ‚จ็š„็ฌฌไธ€ไธช่ต„ไบงใ€‚' }, remaining: { english: 'remaining', @@ -1608,7 +2406,11 @@ export const localizations = { brazilian_portuguese: 'restante', tok_pisin: 'stap yet', indonesian: 'tersisa', - nepali: 'เคฌเคพเคเค•เฅ€' + nepali: 'เคฌเคพเคเค•เฅ€', + hindi: 'เคถเฅ‡เคท', + burmese: 'แ€€แ€ปแ€”แ€บแ€›แ€พแ€ญ', + thai: 'เน€เธซเธฅเธทเธญเธญเธขเธนเนˆ', + mandarin: 'ๅ‰ฉไฝ™' }, noNotifications: { english: 'No notifications', @@ -1616,7 +2418,11 @@ export const localizations = { brazilian_portuguese: 'Nenhuma notificaรงรฃo', tok_pisin: 'No gat notification', indonesian: 'Tidak ada notifikasi', - nepali: 'เค•เฅเคจเฅˆ เคธเฅ‚เคšเคจเคพ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคธเฅ‚เคšเคจเคพ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคธเฅ‚เคšเคจเคพ เคจเคนเฅ€เค‚', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€แ€ปแ€€แ€บ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™', + mandarin: 'ๆ— ้€š็Ÿฅ' }, noNotificationsSubtext: { english: "You'll see project invitations and join requests here", @@ -1627,7 +2433,12 @@ export const localizations = { indonesian: 'Anda akan melihat undangan proyek dan permintaan bergabung di sini', nepali: - 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฏเคนเคพเค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคฎเคจเฅเคคเฅเคฐเคฃเคพ เคฐ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅ‡ เค…เคจเฅเคฐเฅ‹เคงเคนเคฐเฅ‚ เคฆเฅ‡เค–เฅเคจเฅเคนเฅเคจเฅ‡เค›' + 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฏเคนเคพเค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคฎเคจเฅเคคเฅเคฐเคฃเคพ เคฐ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅ‡ เค…เคจเฅเคฐเฅ‹เคงเคนเคฐเฅ‚ เคฆเฅ‡เค–เฅเคจเฅเคนเฅเคจเฅ‡เค›', + hindi: 'เค†เคช เคฏเคนเคพเค เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคฎเค‚เคคเฅเคฐเคฃ เค”เคฐ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เค…เคจเฅเคฐเฅ‹เคง เคฆเฅ‡เค–เฅ‡เค‚เค—เฅ‡', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€คแ€”แ€ฑแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€™แ€ผแ€„แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธˆเธฐเน€เธซเน‡เธ™เธ„เธณเน€เธŠเธดเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเนเธฅเธฐเธ„เธณเธ‚เธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเธ—เธตเนˆเธ™เธตเนˆ', + mandarin: 'ๆ‚จๅฐ†ๅœจๆญคๅค„็œ‹ๅˆฐ้กน็›ฎ้‚€่ฏทๅ’ŒๅŠ ๅ…ฅ่ฏทๆฑ‚' }, notifications: { english: 'Notifications', @@ -1635,7 +2446,11 @@ export const localizations = { brazilian_portuguese: 'Notificaรงรตes', tok_pisin: 'Ol Notification', indonesian: 'Notifikasi', - nepali: 'เคธเฅ‚เคšเคจเคพเคนเคฐเฅ‚' + nepali: 'เคธเฅ‚เคšเคจเคพเคนเคฐเฅ‚', + hindi: 'เคธเฅ‚เคšเคจเคพเคเค‚', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™', + mandarin: '้€š็Ÿฅ' }, profile: { english: 'Profile', @@ -1643,7 +2458,11 @@ export const localizations = { brazilian_portuguese: 'Perfil', tok_pisin: 'Profile', indonesian: 'Profil', - nepali: 'เคชเฅเคฐเฅ‹เคซเคพเค‡เคฒ' + nepali: 'เคชเฅเคฐเฅ‹เคซเคพเค‡เคฒ', + hindi: 'เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€กแ€€แ€ปแ€‰แ€บแ€ธ', + thai: 'เน‚เธ›เธฃเน„เธŸเธฅเนŒ', + mandarin: 'ไธชไบบ่ต„ๆ–™' }, settings: { english: 'Settings', @@ -1651,7 +2470,11 @@ export const localizations = { brazilian_portuguese: 'Configuraรงรตes', tok_pisin: 'Settings', indonesian: 'Pengaturan', - nepali: 'เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚' + nepali: 'เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚', + hindi: 'เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ', + burmese: 'แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ', + mandarin: '่ฎพ็ฝฎ' }, changePassword: { english: 'Change Password', @@ -1659,7 +2482,11 @@ export const localizations = { brazilian_portuguese: 'Alterar Senha', tok_pisin: 'Senisim Password', indonesian: 'Ubah Kata Sandi', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เคฌเคฆเคฒเฅ‡เค‚', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแ€•แ€ซ', + thai: 'เน€เธ›เธฅเธตเนˆเธขเธ™เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: 'ๆ›ดๆ”นๅฏ†็ ' }, currentPassword: { english: 'Current Password', @@ -1667,7 +2494,11 @@ export const localizations = { brazilian_portuguese: 'Senha Atual', tok_pisin: 'Password bilong nau', indonesian: 'Kata Sandi Saat Ini', - nepali: 'เคนเคพเคฒเค•เฅ‹ เคชเคพเคธเคตเคฐเฅเคก' + nepali: 'เคนเคพเคฒเค•เฅ‹ เคชเคพเคธเคตเคฐเฅเคก', + hindi: 'เคตเคฐเฅเคคเคฎเคพเคจ เคชเคพเคธเคตเคฐเฅเคก', + burmese: 'แ€œแ€€แ€บแ€›แ€พแ€ญ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ', + thai: 'เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™', + mandarin: 'ๅฝ“ๅ‰ๅฏ†็ ' }, newPassword: { english: 'New Password', @@ -1675,7 +2506,11 @@ export const localizations = { brazilian_portuguese: 'Nova Senha', tok_pisin: 'Nupela Password', indonesian: 'Kata Sandi Baru', - nepali: 'เคจเคฏเคพเค เคชเคพเคธเคตเคฐเฅเคก' + nepali: 'เคจเคฏเคพเค เคชเคพเคธเคตเคฐเฅเคก', + hindi: 'เคจเคฏเคพ เคชเคพเคธเคตเคฐเฅเคก', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ แ€กแ€žแ€…แ€บ', + thai: 'เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เนƒเธซเธกเนˆ', + mandarin: 'ๆ–ฐๅฏ†็ ' }, onlineOnlyFeatures: { english: 'Password changes are only available when online', @@ -1685,7 +2520,12 @@ export const localizations = { 'Alteraรงรตes de senha sรณ estรฃo disponรญveis quando vocรช estรก online', tok_pisin: 'Password senisim i ken long taim yu gat internet tasol', indonesian: 'Perubahan kata sandi hanya tersedia saat online', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคเคฆเคพ เคฎเคพเคคเฅเคฐ เค‰เคชเคฒเคฌเฅเคง เค›' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคเคฆเคพ เคฎเคพเคคเฅเคฐ เค‰เคชเคฒเคฌเฅเคง เค›', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค•เฅ‡เคตเคฒ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เคจเฅ‡ เคชเคฐ เค‰เคชเคฒเคฌเฅเคง เคนเฅˆเค‚', + burmese: + 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€žแ€Šแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€›แ€พแ€ญแ€žแ€ฑแ€ฌแ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บแ€žแ€ฌ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธกเธตเนƒเธซเน‰เน€เธ‰เธžเธฒเธฐเน€เธกเธทเนˆเธญเธญเธญเธ™เน„เธฅเธ™เนŒ', + mandarin: 'ๅฏ†็ ๆ›ดๆ”นไป…ๅœจๅœจ็บฟๆ—ถๅฏ็”จ' }, accountDeletionRequiresOnline: { english: 'You must be online to delete your account', @@ -1693,7 +2533,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช deve estar online para excluir sua conta', tok_pisin: 'Yu mas gat internet long rausim account bilong yu', indonesian: 'Anda harus online untuk menghapus akun Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เค…เคชเคจเคพ เค–เคพเคคเคพ เคนเคŸเคพเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพ', + burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€›แ€พแ€ญแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเน€เธžเธทเนˆเธญเธฅเธšเธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: 'ๆ‚จๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๅˆ ้™คๆ‚จ็š„่ดฆๆˆท' }, termsAndPrivacyTitle: { english: 'Terms & Privacy', @@ -1701,7 +2545,11 @@ export const localizations = { brazilian_portuguese: 'Termos e Privacidade', tok_pisin: 'Terms na Privacy', indonesian: 'Syarat & Privasi', - nepali: 'เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ' + nepali: 'เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ', + hindi: 'เคจเคฟเคฏเคฎ เค”เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ', + burmese: 'แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€œแ€ฏแ€ถแ€แ€ผแ€ฏแ€ถแ€™แ€พแ€ฏ', + thai: 'เธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: 'ๆกๆฌพๅ’Œ้š็ง' }, verificationRequired: { english: 'Verification Required', @@ -1709,7 +2557,11 @@ export const localizations = { brazilian_portuguese: 'Verificaรงรฃo Necessรกria', tok_pisin: 'Verification i mas', indonesian: 'Verifikasi Diperlukan', - nepali: 'เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เคธเคคเฅเคฏเคพเคชเคจ เค†เคตเคถเฅเคฏเค•', + burmese: 'แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เธขเธทเธ™เธขเธฑเธ™', + mandarin: '้œ€่ฆ้ชŒ่ฏ' }, agreeToTerms: { english: 'I have read and agree to the Terms & Privacy', @@ -1717,7 +2569,12 @@ export const localizations = { brazilian_portuguese: 'Eu li e concordo com os Termos e Privacidade', tok_pisin: 'Mi ridim na agri long Terms na Privacy', indonesian: 'Saya telah membaca dan menyetujui Syarat & Privasi', - nepali: 'เคฎเฅˆเคฒเฅ‡ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคชเคขเฅ‡เค•เฅ‹ เค›เฅ เคฐ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเค›เฅ' + nepali: 'เคฎเฅˆเคฒเฅ‡ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคชเคขเฅ‡เค•เฅ‹ เค›เฅ เคฐ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเค›เฅ', + hindi: 'เคฎเฅˆเค‚เคจเฅ‡ เคจเคฟเคฏเคฎ เค”เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคชเคขเคผ เคฒเฅ€ เคนเฅˆ เค”เคฐ เคธเคนเคฎเคค เคนเฅ‚เค‚', + burmese: + 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€žแ€Šแ€บ แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€œแ€ฏแ€ถแ€แ€ผแ€ฏแ€ถแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€–แ€แ€บแ€›แ€พแ€ฏแ€•แ€ผแ€ฎแ€ธ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ‰เธฑเธ™เน„เธ”เน‰เธญเนˆเธฒเธ™เนเธฅเธฐเธขเธญเธกเธฃเธฑเธšเธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธงเนเธฅเน‰เธง', + mandarin: 'ๆˆ‘ๅทฒ้˜…่ฏปๅนถๅŒๆ„ๆกๆฌพๅ’Œ้š็ง' }, viewTerms: { english: 'View Terms and Privacy', @@ -1725,7 +2582,11 @@ export const localizations = { brazilian_portuguese: 'Ver Termos e Privacidade', tok_pisin: 'Lukim Terms na Privacy', indonesian: 'Lihat Syarat dan Privasi', - nepali: 'เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคจเคฟเคฏเคฎ เค”เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคฆเฅ‡เค–เฅ‡เค‚', + burmese: 'แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€œแ€ฏแ€ถแ€แ€ผแ€ฏแ€ถแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€•แ€ซ', + thai: 'เธ”เธนเธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: 'ๆŸฅ็œ‹ๆกๆฌพๅ’Œ้š็ง' }, termsRequired: { english: 'You must agree to the Terms and Privacy', @@ -1733,7 +2594,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช deve concordar com os Termos e Privacidade', tok_pisin: 'Yu mas agri long Terms na Privacy', indonesian: 'Anda harus menyetujui Syarat dan Privasi', - nepali: 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เค†เคชเค•เฅ‹ เคจเคฟเคฏเคฎ เค”เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคธเฅ‡ เคธเคนเคฎเคค เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพ', + burmese: 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€œแ€ฏแ€ถแ€แ€ผแ€ฏแ€ถแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เธขเธญเธกเธฃเธฑเธšเธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: 'ๆ‚จๅฟ…้กปๅŒๆ„ๆกๆฌพๅ’Œ้š็ง' }, processing: { english: 'Processing...', @@ -1741,7 +2606,11 @@ export const localizations = { brazilian_portuguese: 'Processando...', tok_pisin: 'Processing...', indonesian: 'Memproses...', - nepali: 'เคชเฅเคฐเคถเฅ‹เคงเคจ เคนเฅเคเคฆเฅˆเค›...' + nepali: 'เคชเฅเคฐเคถเฅ‹เคงเคจ เคนเฅเคเคฆเฅˆเค›...', + hindi: 'เคชเฅเคฐเคธเค‚เคธเฅเค•เคฐเคฃ เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ...', + burmese: 'แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ›เธฃเธฐเธกเธงเธฅเธœเธฅ...', + mandarin: 'ๆญฃๅœจๅค„็†...' }, termsContributionInfo: { english: @@ -1755,7 +2624,14 @@ export const localizations = { indonesian: 'Dengan menerima syarat ini, Anda setuju bahwa semua konten yang Anda kontribusikan ke LangQuest akan tersedia secara gratis di seluruh dunia di bawah CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.', nepali: - 'เคฏเฅ€ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅ‡เคฐ, เคคเคชเคพเคˆเค‚ เคธเคนเคฎเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚เคฒเฅ‡ LangQuest เคฎเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจเฅ‡ เคธเคฌเฅˆ เคธเคพเคฎเค—เฅเคฐเฅ€ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication เค…เคจเฅเคคเคฐเฅเค—เคค เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เคจเคฟ:เคถเฅเคฒเฅเค• เค‰เคชเคฒเคฌเฅเคง เคนเฅเคจเฅ‡เค›เฅค' + 'เคฏเฅ€ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅ‡เคฐ, เคคเคชเคพเคˆเค‚ เคธเคนเคฎเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚เคฒเฅ‡ LangQuest เคฎเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจเฅ‡ เคธเคฌเฅˆ เคธเคพเคฎเค—เฅเคฐเฅ€ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication เค…เคจเฅเคคเคฐเฅเค—เคค เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เคจเคฟ:เคถเฅเคฒเฅเค• เค‰เคชเคฒเคฌเฅเคง เคนเฅเคจเฅ‡เค›เฅค', + hindi: + 'เค‡เคจ เคจเคฟเคฏเคฎเฅ‹เค‚ เค•เฅ‹ เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเค•เฅ‡, เค†เคช เคธเคนเคฎเคค เคนเฅˆเค‚ เค•เคฟ LangQuest เคฎเฅ‡เค‚ เค†เคชเค•เฅ‡ เคฆเฅเคตเคพเคฐเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค•เฅ€ เค—เคˆ เคธเคญเฅ€ เคธเคพเคฎเค—เฅเคฐเฅ€ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication เค•เฅ‡ เคคเคนเคค เคฆเฅเคจเคฟเคฏเคพ เคญเคฐ เคฎเฅ‡เค‚ เคธเฅเคตเคคเค‚เคคเฅเคฐ เคฐเฅ‚เคช เคธเฅ‡ เค‰เคชเคฒเคฌเฅเคง เคนเฅ‹เค—เฅ€เฅค', + burmese: + 'แ€คแ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€€แ€บแ€แ€ถแ€แ€ผแ€„แ€บแ€ธแ€–แ€ผแ€„แ€ทแ€บแŠ แ€žแ€„แ€บแ€žแ€Šแ€บ LangQuest แ€žแ€ญแ€ฏแ€ท แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€žแ€ฑแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€žแ€Šแ€บ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication แ€กแ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€บ แ€€แ€™แ€นแ€˜แ€ฌแ€แ€…แ€บแ€แ€พแ€™แ€บแ€ธแ€œแ€ฏแ€ถแ€ธ แ€œแ€ฝแ€แ€บแ€œแ€•แ€บแ€…แ€ฝแ€ฌ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€Ÿแ€ฏ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เน‚เธ”เธขเธเธฒเธฃเธขเธญเธกเธฃเธฑเธšเธ‚เน‰เธญเธเธณเธซเธ™เธ”เน€เธซเธฅเนˆเธฒเธ™เธตเน‰ เธ„เธธเธ“เธขเธญเธกเธฃเธฑเธšเธงเนˆเธฒเธชเธทเนˆเธญเธชเธฒเธฃเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ—เธตเนˆเธ„เธธเธ“เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™ LangQuest เธˆเธฐเธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เน„เธ”เน‰เธŸเธฃเธตเธ—เธฑเนˆเธงเน‚เธฅเธเธ เธฒเธขเนƒเธ•เน‰ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication', + mandarin: + '้€š่ฟ‡ๆŽฅๅ—่ฟ™ไบ›ๆกๆฌพ๏ผŒๆ‚จๅŒๆ„ๆ‚จไธบ LangQuest ่ดก็Œฎ็š„ๆ‰€ๆœ‰ๅ†…ๅฎนๅฐ†ๅœจ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication ไธ‹ๅœจๅ…จ็ƒ่Œƒๅ›ดๅ†…ๅ…่ดนๆไพ›ใ€‚' }, termsDataInfo: { english: @@ -1769,7 +2645,14 @@ export const localizations = { indonesian: 'Ini berarti kontribusi Anda dapat digunakan oleh siapa saja untuk tujuan apa pun tanpa atribusi. Kami mengumpulkan data pengguna minimal: hanya email Anda (untuk pemulihan akun) dan langganan newsletter jika dipilih.', nepali: - 'เคฏเคธเค•เฅ‹ เคฎเคคเคฒเคฌ เคคเคชเคพเคˆเค‚เค•เฅ‹ เคฏเฅ‹เค—เคฆเคพเคจ เค•เฅเคจเฅˆ เคชเคจเคฟ เคตเฅเคฏเค•เฅเคคเคฟเคฒเฅ‡ เค•เฅเคจเฅˆ เคชเคจเคฟ เค‰เคฆเฅเคฆเฅ‡เคถเฅเคฏเค•เฅ‹ เคฒเคพเค—เคฟ เคถเฅเคฐเฅ‡เคฏ เคฌเคฟเคจเคพ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เฅเค›เฅค เคนเคพเคฎเฅ€ เคจเฅเคฏเฅ‚เคจเคคเคฎ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคกเคพเคŸเคพ เคธเค™เฅเค•เคฒเคจ เค—เคฐเฅเค›เฅŒเค‚: เคคเคชเคพเคˆเค‚เค•เฅ‹ เค‡เคฎเฅ‡เคฒ เคฎเคพเคคเฅเคฐ (เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคชเฅเคฐเคพเคชเฅเคคเคฟเค•เฅ‹ เคฒเคพเค—เคฟ) เคฐ เคจเฅเคฏเฅ‚เคœเคฒเฅ‡เคŸเคฐ เคธเคฆเคธเฅเคฏเคคเคพ เคฏเคฆเคฟ เคฐเฅ‹เคœเคฟเคเค•เฅ‹ เค› เคญเคจเฅ‡เฅค' + 'เคฏเคธเค•เฅ‹ เคฎเคคเคฒเคฌ เคคเคชเคพเคˆเค‚เค•เฅ‹ เคฏเฅ‹เค—เคฆเคพเคจ เค•เฅเคจเฅˆ เคชเคจเคฟ เคตเฅเคฏเค•เฅเคคเคฟเคฒเฅ‡ เค•เฅเคจเฅˆ เคชเคจเคฟ เค‰เคฆเฅเคฆเฅ‡เคถเฅเคฏเค•เฅ‹ เคฒเคพเค—เคฟ เคถเฅเคฐเฅ‡เคฏ เคฌเคฟเคจเคพ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เฅเค›เฅค เคนเคพเคฎเฅ€ เคจเฅเคฏเฅ‚เคจเคคเคฎ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคกเคพเคŸเคพ เคธเค™เฅเค•เคฒเคจ เค—เคฐเฅเค›เฅŒเค‚: เคคเคชเคพเคˆเค‚เค•เฅ‹ เค‡เคฎเฅ‡เคฒ เคฎเคพเคคเฅเคฐ (เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคชเฅเคฐเคพเคชเฅเคคเคฟเค•เฅ‹ เคฒเคพเค—เคฟ) เคฐ เคจเฅเคฏเฅ‚เคœเคฒเฅ‡เคŸเคฐ เคธเคฆเคธเฅเคฏเคคเคพ เคฏเคฆเคฟ เคฐเฅ‹เคœเคฟเคเค•เฅ‹ เค› เคญเคจเฅ‡เฅค', + hindi: + 'เค‡เคธเค•เคพ เคฎเคคเคฒเคฌ เคนเฅˆ เค•เคฟ เค†เคชเค•เฅ‡ เคฏเฅ‹เค—เคฆเคพเคจ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เฅ‹เคˆ เคญเฅ€ เค•เคฟเคธเฅ€ เคญเฅ€ เค‰เคฆเฅเคฆเฅ‡เคถเฅเคฏ เค•เฅ‡ เคฒเคฟเค เคถเฅเคฐเฅ‡เคฏ เค•เฅ‡ เคฌเคฟเคจเคพ เค•เคฐ เคธเค•เคคเคพ เคนเฅˆเฅค เคนเคฎ เคจเฅเคฏเฅ‚เคจเคคเคฎ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคกเฅ‡เคŸเคพ เคเค•เคคเฅเคฐ เค•เคฐเคคเฅ‡ เคนเฅˆเค‚: เค•เฅ‡เคตเคฒ เค†เคชเค•เคพ เคˆเคฎเฅ‡เคฒ (เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคชเฅเคฐเคพเคชเฅเคคเคฟ เค•เฅ‡ เคฒเคฟเค) เค”เคฐ เคจเฅเคฏเฅ‚เคœเคผเคฒเฅ‡เคŸเคฐ เคธเคฆเคธเฅเคฏเคคเคพ เคฏเคฆเคฟ เคšเฅเคจเฅ€ เค—เคˆ เคนเฅˆเฅค', + burmese: + 'แŽแ€„แ€บแ€ธแ€žแ€Šแ€บ แ€žแ€„แ€บแ แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€™แ€Šแ€บแ€žแ€ฐแ€™แ€†แ€ญแ€ฏ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€›แ€Šแ€บแ€›แ€ฝแ€šแ€บแ€แ€ปแ€€แ€บแ€กแ€แ€ฝแ€€แ€บแ€™แ€†แ€ญแ€ฏ แ€กแ€ฌแ€แ€บแ€‘แ€›แ€ฎแ€˜แ€ปแ€ฐแ€ธแ€›แ€พแ€„แ€บแ€ธแ€™แ€•แ€ซแ€˜แ€ฒ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ€Ÿแ€ฏ แ€†แ€ญแ€ฏแ€œแ€ญแ€ฏแ€žแ€Šแ€บแ‹ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ทแ€žแ€Šแ€บ แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€…แ€ฏแ€†แ€ฑแ€ฌแ€„แ€บแ€ธแ€•แ€ซแ€žแ€Šแ€บ: แ€žแ€„แ€บแ แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บ (แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€›แ€”แ€บ) แ€”แ€พแ€„แ€ทแ€บ แ€žแ€แ€„แ€บแ€ธแ€œแ€ฝแ€พแ€ฌแ€…แ€ฌแ€›แ€„แ€บแ€ธแ€žแ€ฝแ€„แ€บแ€ธแ€แ€ผแ€„แ€บแ€ธ (แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€‘แ€ฌแ€ธแ€•แ€ซแ€€)แ‹', + thai: 'เธ™เธตเนˆเธซเธกเธฒเธขเธ„เธงเธฒเธกเธงเนˆเธฒเธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเธ‚เธญเธ‡เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เน‚เธ”เธขเนƒเธ„เธฃเธเน‡เน„เธ”เน‰เน€เธžเธทเนˆเธญเธงเธฑเธ•เธ–เธธเธ›เธฃเธฐเธชเธ‡เธ„เนŒเนƒเธ”เน† เน‚เธ”เธขเน„เธกเนˆเธ•เน‰เธญเธ‡เธฃเธฐเธšเธธเนเธซเธฅเนˆเธ‡เธ—เธตเนˆเธกเธฒ เน€เธฃเธฒเธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเธœเธนเน‰เนƒเธŠเน‰เธ‚เธฑเน‰เธ™เธ•เนˆเธณ: เน€เธ‰เธžเธฒเธฐเธญเธตเน€เธกเธฅเธ‚เธญเธ‡เธ„เธธเธ“ (เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธต) เนเธฅเธฐเธเธฒเธฃเธชเธกเธฑเธ„เธฃเธฃเธฑเธšเธˆเธ”เธซเธกเธฒเธขเธ‚เนˆเธฒเธงเธซเธฒเธเน€เธฅเธทเธญเธ', + mandarin: + '่ฟ™ๆ„ๅ‘ณ็€ๆ‚จ็š„่ดก็Œฎๅฏไปฅ่ขซไปปไฝ•ไบบ็”จไบŽไปปไฝ•็›ฎ็š„๏ผŒๆ— ้œ€็ฝฒๅใ€‚ๆˆ‘ไปฌๆ”ถ้›†ๆœ€ๅฐ‘็š„็”จๆˆทๆ•ฐๆฎ๏ผšไป…ๆ‚จ็š„็”ตๅญ้‚ฎไปถ๏ผˆ็”จไบŽ่ดฆๆˆทๆขๅค๏ผ‰ๅ’Œๆ–ฐ้—ป่ฎข้˜…๏ผˆๅฆ‚ๆžœ้€‰ๆ‹ฉ๏ผ‰ใ€‚' }, analyticsInfo: { english: @@ -1783,7 +2666,14 @@ export const localizations = { indonesian: 'Kami mengumpulkan data analitik dan diagnostik untuk meningkatkan aplikasi dan pengalaman Anda. Anda dapat memilih keluar dari analitik kapan saja di pengaturan profil Anda. Data Anda diproses dan disimpan di Amerika Serikat.', nepali: - 'เคนเคพเคฎเฅ€ เคเคช เคฐ เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคญเคต เคธเฅเคงเคพเคฐ เค—เคฐเฅเคจ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคฐ เคจเคฟเคฆเคพเคจ เคกเคพเคŸเคพ เคธเค™เฅเค•เคฒเคจ เค—เคฐเฅเค›เฅŒเค‚เฅค เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เคชเฅเคฐเฅ‹เคซเคพเค‡เคฒ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚เคฎเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคธเคฎเคฏ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃเคฌเคพเคŸ เค…เคชเฅเคŸ เค†เค‰เคŸ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคกเคพเคŸเคพ เคธเค‚เคฏเฅเค•เฅเคค เคฐเคพเคœเฅเคฏ เค…เคฎเฅ‡เคฐเคฟเค•เคพเคฎเคพ เคชเฅเคฐเคถเฅ‹เคงเคจ เคฐ เคญเคฃเฅเคกเคพเคฐเคฃ เค—เคฐเคฟเคจเฅเค›เฅค' + 'เคนเคพเคฎเฅ€ เคเคช เคฐ เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคญเคต เคธเฅเคงเคพเคฐ เค—เคฐเฅเคจ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคฐ เคจเคฟเคฆเคพเคจ เคกเคพเคŸเคพ เคธเค™เฅเค•เคฒเคจ เค—เคฐเฅเค›เฅŒเค‚เฅค เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เคชเฅเคฐเฅ‹เคซเคพเค‡เคฒ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚เคฎเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคธเคฎเคฏ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃเคฌเคพเคŸ เค…เคชเฅเคŸ เค†เค‰เคŸ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคกเคพเคŸเคพ เคธเค‚เคฏเฅเค•เฅเคค เคฐเคพเคœเฅเคฏ เค…เคฎเฅ‡เคฐเคฟเค•เคพเคฎเคพ เคชเฅเคฐเคถเฅ‹เคงเคจ เคฐ เคญเคฃเฅเคกเคพเคฐเคฃ เค—เคฐเคฟเคจเฅเค›เฅค', + hindi: + 'เคนเคฎ เคเคช เค”เคฐ เค†เคชเค•เฅ‡ เค…เคจเฅเคญเคต เค•เฅ‹ เคฌเฅ‡เคนเคคเคฐ เคฌเคจเคพเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค”เคฐ เคจเฅˆเคฆเคพเคจเคฟเค• เคกเฅ‡เคŸเคพ เคเค•เคคเฅเคฐ เค•เคฐเคคเฅ‡ เคนเฅˆเค‚เฅค เค†เคช เค…เคชเคจเฅ€ เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ เคฎเฅ‡เค‚ เค•เคฟเคธเฅ€ เคญเฅ€ เคธเคฎเคฏ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคธเฅ‡ เคฌเคพเคนเคฐ เคจเคฟเค•เคฒ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค เค†เคชเค•เคพ เคกเฅ‡เคŸเคพ เคธเค‚เคฏเฅเค•เฅเคค เคฐเคพเคœเฅเคฏ เค…เคฎเฅ‡เคฐเคฟเค•เคพ เคฎเฅ‡เค‚ เคธเค‚เคธเคพเคงเคฟเคค เค”เคฐ เคธเค‚เค—เฅเคฐเคนเฅ€เคค เค•เคฟเคฏเคพ เคœเคพเคคเคพ เคนเฅˆเฅค', + burmese: + 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ทแ€žแ€Šแ€บ แ€กแ€•แ€บแ€€แ€ญแ€ฏ แ€”แ€พแ€„แ€ทแ€บ แ€žแ€„แ€บแ แ€กแ€แ€ฝแ€ฑแ€ทแ€กแ€€แ€ผแ€ฏแ€ถแ€€แ€ญแ€ฏ แ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€ฝแ€ฒแ€แ€ผแ€™แ€บแ€ธแ€…แ€ญแ€แ€บแ€–แ€ผแ€ฌแ€™แ€พแ€ฏแ€”แ€พแ€„แ€ทแ€บ แ€›แ€ฑแ€ฌแ€‚แ€ซแ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€›แ€ฑแ€ธ แ€’แ€ฑแ€แ€ฌแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€ฏแ€†แ€ฑแ€ฌแ€„แ€บแ€ธแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€žแ€„แ€บแ แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€กแ€€แ€ปแ€‰แ€บแ€ธ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€แ€ฝแ€„แ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บแ€™แ€†แ€ญแ€ฏ แ€แ€ฝแ€ฒแ€แ€ผแ€™แ€บแ€ธแ€…แ€ญแ€แ€บแ€–แ€ผแ€ฌแ€™แ€พแ€ฏแ€™แ€พ แ€‘แ€ฝแ€€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹ แ€žแ€„แ€บแ แ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€กแ€™แ€ฑแ€›แ€ญแ€€แ€”แ€บแ€•แ€ผแ€Šแ€บแ€‘แ€ฑแ€ฌแ€„แ€บแ€…แ€ฏแ€แ€ฝแ€„แ€บ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€•แ€ผแ€ฎแ€ธ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เน€เธฃเธฒเธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธงเธดเน€เธ„เธฃเธฒเธฐเธซเนŒเนเธฅเธฐเธเธฒเธฃเธงเธดเธ™เธดเธˆเธ‰เธฑเธขเน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เนเธญเธ›เนเธฅเธฐเธ›เธฃเธฐเธชเธšเธเธฒเธฃเธ“เนŒเธ‚เธญเธ‡เธ„เธธเธ“ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธฅเธทเธญเธเน„เธกเนˆเนƒเธŠเน‰เธเธฒเธฃเธงเธดเน€เธ„เธฃเธฒเธฐเธซเนŒเน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเนƒเธ™เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน‚เธ›เธฃเน„เธŸเธฅเนŒเธ‚เธญเธ‡เธ„เธธเธ“ เธ‚เน‰เธญเธกเธนเธฅเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธ›เธฃเธฐเธกเธงเธฅเธœเธฅเนเธฅเธฐเธˆเธฑเธ”เน€เธเน‡เธšเนƒเธ™เธชเธซเธฃเธฑเธเธญเน€เธกเธฃเธดเธเธฒ', + mandarin: + 'ๆˆ‘ไปฌๆ”ถ้›†ๅˆ†ๆžๅ’Œ่ฏŠๆ–ญๆ•ฐๆฎไปฅๆ”น่ฟ›ๅบ”็”จ็จ‹ๅบๅ’Œๆ‚จ็š„ไฝ“้ชŒใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๅœจไธชไบบ่ต„ๆ–™่ฎพ็ฝฎไธญ้€‰ๆ‹ฉ้€€ๅ‡บๅˆ†ๆžใ€‚ๆ‚จ็š„ๆ•ฐๆฎๅœจ็พŽๅ›ฝๅค„็†ๅ’Œๅญ˜ๅ‚จใ€‚' }, viewFullTerms: { english: 'View Full Terms', @@ -1791,7 +2681,11 @@ export const localizations = { brazilian_portuguese: 'Ver Termos Completos', tok_pisin: 'Lukim Olgeta Terms', indonesian: 'Lihat Syarat Lengkap', - nepali: 'เคชเฅ‚เคฐเฅเคฃ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅ‚เคฐเฅเคฃ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅ‚เคฐเฅเคฃ เคจเคฟเคฏเคฎ เคฆเฅ‡เค–เฅ‡เค‚', + burmese: 'แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€•แ€ซ', + thai: 'เธ”เธนเธ‚เน‰เธญเธเธณเธซเธ™เธ”เธ‰เธšเธฑเธšเน€เธ•เน‡เธก', + mandarin: 'ๆŸฅ็œ‹ๅฎŒๆ•ดๆกๆฌพ' }, viewFullPrivacy: { english: 'View Full Privacy', @@ -1799,7 +2693,11 @@ export const localizations = { brazilian_portuguese: 'Ver Privacidade Completa', tok_pisin: 'Lukim Olgeta Privacy', indonesian: 'Lihat Privasi Lengkap', - nepali: 'เคชเฅ‚เคฐเฅเคฃ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅ‚เคฐเฅเคฃ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅ‚เคฐเฅเคฃ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคฆเฅ‡เค–เฅ‡เค‚', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€œแ€ฏแ€ถแ€แ€ผแ€ฏแ€ถแ€™แ€พแ€ฏ แ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€•แ€ซ', + thai: 'เธ”เธนเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธงเธ‰เธšเธฑเธšเน€เธ•เน‡เธก', + mandarin: 'ๆŸฅ็œ‹ๅฎŒๆ•ด้š็ง' }, submitFeedback: { english: 'Submit Feedback', @@ -1807,25 +2705,41 @@ export const localizations = { brazilian_portuguese: 'Enviar Feedback', tok_pisin: 'Salim Feedback', indonesian: 'Kirim Umpan Balik', - nepali: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคœเคฎเคพ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธ‚เน‰เธญเน€เธชเธ™เธญเนเธ™เธฐ', + mandarin: 'ๆไบคๅ้ฆˆ' }, reportProject: { english: 'Report Project', spanish: 'Reportar Proyecto', brazilian_portuguese: 'Reportar Projeto', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธฃเธฒเธขเธ‡เธฒเธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: 'ๆŠฅๅ‘Š้กน็›ฎ' }, reportQuest: { english: 'Report Quest', spanish: 'Reportar Quest', brazilian_portuguese: 'Reportar Quest', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', + burmese: 'Quest แ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธฃเธฒเธขเธ‡เธฒเธ™เน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ๆŠฅๅ‘ŠไปปๅŠก' }, reportAsset: { english: 'Report Asset', spanish: 'Reportar Recurso', brazilian_portuguese: 'Reportar Recurso', - nepali: 'เคเคธเฅ‡เคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคเคธเฅ‡เคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเคธเฅ‡เคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธฃเธฒเธขเธ‡เธฒเธ™เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ', + mandarin: 'ๆŠฅๅ‘Š่ต„ไบง' }, reportTranslation: { english: 'Report Translation', @@ -1833,13 +2747,21 @@ export const localizations = { brazilian_portuguese: 'Reportar Traduรงรฃo', tok_pisin: 'Reportim Translation', indonesian: 'Laporkan Terjemahan', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธฃเธฒเธขเธ‡เธฒเธ™เธ„เธณเนเธ›เธฅ', + mandarin: 'ๆŠฅๅ‘Š็ฟป่ฏ‘' }, reportGeneric: { english: 'Report', spanish: 'Reportar', brazilian_portuguese: 'Reportar', - nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธฃเธฒเธขเธ‡เธฒเธ™', + mandarin: 'ๆŠฅๅ‘Š' }, selectReasonLabel: { english: 'Select a reason', @@ -1847,7 +2769,11 @@ export const localizations = { brazilian_portuguese: 'Selecione um motivo', tok_pisin: 'Makim wanpela reson', indonesian: 'Pilih alasan', - nepali: 'เคเค‰เคŸเคพ เค•เคพเคฐเคฃ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคเค‰เคŸเคพ เค•เคพเคฐเคฃ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเค• เค•เคพเคฐเคฃ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€•แ€ผแ€แ€ปแ€€แ€บแ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเน€เธซเธ•เธธเธœเธฅ', + mandarin: '้€‰ๆ‹ฉๅŽŸๅ› ' }, additionalDetails: { english: 'Additional Details', @@ -1855,7 +2781,11 @@ export const localizations = { brazilian_portuguese: 'Detalhes Adicionais', tok_pisin: 'Moa Details', indonesian: 'Detail Tambahan', - nepali: 'เคฅเคช เคตเคฟเคตเคฐเคฃเคนเคฐเฅ‚' + nepali: 'เคฅเคช เคตเคฟเคตเคฐเคฃเคนเคฐเฅ‚', + hindi: 'เค…เคคเคฟเคฐเคฟเค•เฅเคค เคตเคฟเคตเคฐเคฃ', + burmese: 'แ€กแ€•แ€ญแ€ฏแ€กแ€žแ€ฑแ€ธแ€…แ€ญแ€แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธฃเธฒเธขเธฅเธฐเน€เธญเธตเธขเธ”เน€เธžเธดเนˆเธกเน€เธ•เธดเธก', + mandarin: 'ๅ…ถไป–่ฏฆ็ป†ไฟกๆฏ' }, additionalDetailsPlaceholder: { english: 'Provide any additional information...', @@ -1863,7 +2793,11 @@ export const localizations = { brazilian_portuguese: 'Forneรงa qualquer informaรงรฃo adicional...', tok_pisin: 'Givim narapela information...', indonesian: 'Berikan informasi tambahan...', - nepali: 'เค•เฅเคจเฅˆ เคฅเคช เคœเคพเคจเค•เคพเคฐเฅ€ เคชเฅเคฐเคฆเคพเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ...' + nepali: 'เค•เฅเคจเฅˆ เคฅเคช เคœเคพเคจเค•เคพเคฐเฅ€ เคชเฅเคฐเคฆเคพเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ...', + hindi: 'เค•เฅ‹เคˆ เค…เคคเคฟเคฐเคฟเค•เฅเคค เคœเคพเคจเค•เคพเคฐเฅ€ เคชเฅเคฐเคฆเคพเคจ เค•เคฐเฅ‡เค‚...', + burmese: 'แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บ แ€กแ€•แ€ญแ€ฏ แ€กแ€แ€ปแ€€แ€บแ€กแ€œแ€€แ€บแ€€แ€ญแ€ฏแ€™แ€†แ€ญแ€ฏ แ€•แ€ฑแ€ธแ€•แ€ซ...', + thai: 'เนƒเธซเน‰เธ‚เน‰เธญเธกเธนเธฅเน€เธžเธดเนˆเธกเน€เธ•เธดเธกเนƒเธ”เน†...', + mandarin: 'ๆไพ›ไปปไฝ•ๅ…ถไป–ไฟกๆฏ...' }, submitReport: { english: 'Submit Report', @@ -1871,7 +2805,11 @@ export const localizations = { brazilian_portuguese: 'Enviar Relatรณrio', tok_pisin: 'Salim Report', indonesian: 'Kirim Laporan', - nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคœเคฎเคพ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™', + mandarin: 'ๆไบคๆŠฅๅ‘Š' }, submitting: { english: 'Submitting...', @@ -1879,7 +2817,11 @@ export const localizations = { brazilian_portuguese: 'Enviando...', tok_pisin: 'Salim...', indonesian: 'Mengirim...', - nepali: 'เคชเฅ‡เคถ เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคชเฅ‡เคถ เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคœเคฎเคพ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€แ€„แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธชเนˆเธ‡...', + mandarin: 'ๆญฃๅœจๆไบค...' }, reportSubmitted: { english: 'Report submitted successfully', @@ -1887,7 +2829,11 @@ export const localizations = { brazilian_portuguese: 'Relatรณrio enviado com sucesso', tok_pisin: 'Report i go gut', indonesian: 'Laporan berhasil dikirim', - nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅ‡เคถ เค—เคฐเคฟเคฏเฅ‹' + nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅ‡เคถ เค—เคฐเคฟเคฏเฅ‹', + hindi: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคœเคฎเคพ เคนเฅ‹ เค—เคˆ', + burmese: 'แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€แ€„แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™เธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆŠฅๅ‘ŠๆไบคๆˆๅŠŸ' }, enterEmailForPasswordReset: { english: 'Enter your email to reset your password', @@ -1895,7 +2841,11 @@ export const localizations = { brazilian_portuguese: 'Digite seu e-mail para redefinir sua senha', tok_pisin: 'Putim email bilong yu long resetim password', indonesian: 'Masukkan email Anda untuk mereset kata sandi', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจ เค†เคซเฅเคจเฅ‹ เค‡เคฎเฅ‡เคฒ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเคพ เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค…เคชเคจเคพ เคˆเคฎเฅ‡เคฒ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€žแ€„แ€บแ แ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€€แ€ญแ€ฏ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ›เน‰เธญเธ™เธญเธตเน€เธกเธฅเธ‚เธญเธ‡เธ„เธธเธ“เน€เธžเธทเนˆเธญเธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: '่พ“ๅ…ฅๆ‚จ็š„็”ตๅญ้‚ฎไปถไปฅ้‡็ฝฎๅฏ†็ ' }, failedToSubmitReport: { english: 'Failed to submit report', @@ -1903,7 +2853,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao enviar relatรณrio', tok_pisin: 'I no inap salim report', indonesian: 'Gagal mengirim laporan', - nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคชเฅ‡เคถ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคชเฅ‡เคถ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคœเคฎเคพ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€žแ€ฝแ€„แ€บแ€ธแแ€™แ€›แ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธฃเธฒเธขเธ‡เธฒเธ™เน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆไบคๆŠฅๅ‘Šๅคฑ่ดฅ' }, logInToReport: { english: 'You must be logged in to report translations', @@ -1911,7 +2865,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช deve estar logado para reportar traduรงรตes', tok_pisin: 'Yu mas login pastaim long reportim ol translation', indonesian: 'Anda harus masuk untuk melaporkan terjemahan', - nepali: 'เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคฒเฅ‰เค— เค‡เคจ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธฃเธฒเธขเธ‡เธฒเธ™เธ„เธณเนเธ›เธฅ', + mandarin: 'ๆ‚จๅฟ…้กป็™ปๅฝ•ๆ‰่ƒฝๆŠฅๅ‘Š็ฟป่ฏ‘' }, selectReason: { english: 'Please select a reason for the report', @@ -1919,7 +2877,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, selecione um motivo para o relatรณrio', tok_pisin: 'Plis makim wanpela reson long report', indonesian: 'Silakan pilih alasan untuk laporan', - nepali: 'เค•เฅƒเคชเคฏเคพ เคฐเคฟเคชเฅ‹เคฐเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเค‰เคŸเคพ เค•เคพเคฐเคฃ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคฐเคฟเคชเฅ‹เคฐเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเค‰เคŸเคพ เค•เคพเคฐเคฃ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคเค• เค•เคพเคฐเคฃ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€แ€ปแ€€แ€บแ€กแ€แ€ฝแ€€แ€บ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€•แ€ผแ€แ€ปแ€€แ€บแ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเน€เธฅเธทเธญเธเน€เธซเธ•เธธเธœเธฅเธชเธณเธซเธฃเธฑเธšเธฃเธฒเธขเธ‡เธฒเธ™', + mandarin: '่ฏท้€‰ๆ‹ฉๆŠฅๅ‘ŠๅŽŸๅ› ' }, enableAnalytics: { english: 'Enable Analytics', @@ -1927,7 +2889,11 @@ export const localizations = { brazilian_portuguese: 'Habilitar Anรกlise', tok_pisin: 'Onim Analytics', indonesian: 'Aktifkan Analitik', - nepali: 'เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚', + burmese: 'แ€แ€ฝแ€ฒแ€แ€ผแ€™แ€บแ€ธแ€…แ€ญแ€แ€บแ€–แ€ผแ€ฌแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธเธฒเธฃเธงเธดเน€เธ„เธฃเธฒเธฐเธซเนŒ', + mandarin: 'ๅฏ็”จๅˆ†ๆž' }, analyticsDescription: { english: @@ -1941,7 +2907,13 @@ export const localizations = { indonesian: 'Ketika dinonaktifkan, kami tidak akan mengumpulkan data penggunaan untuk meningkatkan aplikasi.', nepali: - 'เค…เคธเค•เฅเคทเคฎ เค—เคฐเคฟเคเค•เฅ‹ เคฌเฅ‡เคฒเคพ, เคนเคพเคฎเฅ€ เคเคช เคธเฅเคงเคพเคฐ เค—เคฐเฅเคจ เคชเฅเคฐเคฏเฅ‹เค— เคกเคพเคŸเคพ เคธเค™เฅเค•เคฒเคจ เค—เคฐเฅเคจเฅ‡ เค›เฅˆเคจเฅŒเค‚เฅค' + 'เค…เคธเค•เฅเคทเคฎ เค—เคฐเคฟเคเค•เฅ‹ เคฌเฅ‡เคฒเคพ, เคนเคพเคฎเฅ€ เคเคช เคธเฅเคงเคพเคฐ เค—เคฐเฅเคจ เคชเฅเคฐเคฏเฅ‹เค— เคกเคพเคŸเคพ เคธเค™เฅเค•เคฒเคจ เค—เคฐเฅเคจเฅ‡ เค›เฅˆเคจเฅŒเค‚เฅค', + hindi: + 'เค…เค•เฅเคทเคฎ เคนเฅ‹เคจเฅ‡ เคชเคฐ, เคนเคฎ เคเคช เค•เฅ‹ เคฌเฅ‡เคนเคคเคฐ เคฌเคจเคพเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅ‹เค— เคกเฅ‡เคŸเคพ เคเค•เคคเฅเคฐ เคจเคนเฅ€เค‚ เค•เคฐเฅ‡เค‚เค—เฅ‡เฅค', + burmese: + 'แ€•แ€ญแ€แ€บแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌแ€กแ€แ€ซแŠ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ทแ€žแ€Šแ€บ แ€กแ€•แ€บแ€€แ€ญแ€ฏ แ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€”แ€บ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€™แ€พแ€ฏ แ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€…แ€ฏแ€†แ€ฑแ€ฌแ€„แ€บแ€ธแ€™แ€Šแ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ‹', + thai: 'เน€เธกเธทเนˆเธญเธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ เน€เธฃเธฒเธˆเธฐเน„เธกเนˆเธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™เน€เธžเธทเนˆเธญเธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡เนเธญเธ›', + mandarin: '็ฆ็”จๅŽ๏ผŒๆˆ‘ไปฌๅฐ†ไธไผšๆ”ถ้›†ไฝฟ็”จๆ•ฐๆฎๆฅๆ”น่ฟ›ๅบ”็”จ็จ‹ๅบใ€‚' }, sessionExpired: { english: 'Session expired', @@ -1949,7 +2921,11 @@ export const localizations = { brazilian_portuguese: 'Sessรฃo expirada', tok_pisin: 'Session i pinis', indonesian: 'Sesi kedaluwarsa', - nepali: 'เคธเคคเฅเคฐ เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹' + nepali: 'เคธเคคเฅเคฐ เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹', + hindi: 'เคธเคคเฅเคฐ เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€†แ€€แ€บแ€›แ€พแ€„แ€บแ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน€เธ‹เธชเธŠเธฑเธ™เธซเธกเธ”เธญเธฒเธขเธธ', + mandarin: 'ไผš่ฏๅทฒ่ฟ‡ๆœŸ' }, 'reportReason.inappropriate_content': { english: 'Inappropriate Content', @@ -1957,7 +2933,11 @@ export const localizations = { brazilian_portuguese: 'Conteรบdo Inapropriado', tok_pisin: 'Content i no gutpela', indonesian: 'Konten Tidak Pantas', - nepali: 'เค…เคจเฅเคšเคฟเคค เคธเคพเคฎเค—เฅเคฐเฅ€' + nepali: 'เค…เคจเฅเคšเคฟเคค เคธเคพเคฎเค—เฅเคฐเฅ€', + hindi: 'เค…เคจเฅเคšเคฟเคค เคธเคพเคฎเค—เฅเคฐเฅ€', + burmese: 'แ€™แ€žแ€„แ€ทแ€บแ€œแ€ปแ€ฑแ€ฌแ€บแ€žแ€ฑแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌ', + thai: 'เน€เธ™เธทเน‰เธญเธซเธฒเน„เธกเนˆเน€เธซเธกเธฒเธฐเธชเธก', + mandarin: 'ไธๅฝ“ๅ†…ๅฎน' }, 'reportReason.spam': { english: 'Spam', @@ -1965,7 +2945,11 @@ export const localizations = { brazilian_portuguese: 'Spam', tok_pisin: 'Spam', indonesian: 'Spam', - nepali: 'เคธเฅเคชเฅเคฏเคพเคฎ' + nepali: 'เคธเฅเคชเฅเคฏเคพเคฎ', + hindi: 'เคธเฅเคชเฅˆเคฎ', + burmese: 'แ€กแ€™แ€พแ€ญแ€ฏแ€€แ€บแ€…แ€ฌ', + thai: 'เธชเนเธ›เธก', + mandarin: 'ๅžƒๅœพไฟกๆฏ' }, 'reportReason.other': { english: 'Other', @@ -1973,7 +2957,11 @@ export const localizations = { brazilian_portuguese: 'Outro', tok_pisin: 'Narapela', indonesian: 'Lainnya', - nepali: 'เค…เคจเฅเคฏ' + nepali: 'เค…เคจเฅเคฏ', + hindi: 'เค…เคจเฅเคฏ', + burmese: 'แ€กแ€แ€ผแ€ฌแ€ธ', + thai: 'เธญเธทเนˆเธ™เน†', + mandarin: 'ๅ…ถไป–' }, updatePassword: { english: 'Update Password', @@ -1981,7 +2969,11 @@ export const localizations = { brazilian_portuguese: 'Atualizar Senha', tok_pisin: 'Updateim Password', indonesian: 'Perbarui Kata Sandi', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เค…เคชเคกเฅ‡เคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธญเธฑเธ›เน€เธ”เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + mandarin: 'ๆ›ดๆ–ฐๅฏ†็ ' }, createNewPassword: { english: 'Create New Password', @@ -1989,7 +2981,11 @@ export const localizations = { brazilian_portuguese: 'Criar nova senha', tok_pisin: 'Mekim nupela password', indonesian: 'Buat Kata Sandi Baru', - nepali: 'เคจเคฏเคพเค เคชเคพเคธเคตเคฐเฅเคก เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคจเคฏเคพเค เคชเคพเคธเคตเคฐเฅเคก เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคจเคฏเคพ เคชเคพเคธเคตเคฐเฅเคก เคฌเคจเคพเคเค‚', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ แ€กแ€žแ€…แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เนƒเธซเธกเนˆ', + mandarin: 'ๅˆ›ๅปบๆ–ฐๅฏ†็ ' }, downloadLimitExceeded: { english: 'Download Limit Exceeded', @@ -1997,7 +2993,11 @@ export const localizations = { brazilian_portuguese: 'Limite de download excedido', tok_pisin: 'Download limit i pinis', indonesian: 'Batas Unduhan Terlampaui', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅ€เคฎเคพ เคจเคพเค˜เฅเคฏเฅ‹' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅ€เคฎเคพ เคจเคพเค˜เฅเคฏเฅ‹', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅ€เคฎเคพ เคชเคพเคฐ เคนเฅ‹ เค—เคˆ', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บ แ€€แ€”แ€ทแ€บแ€žแ€แ€บแ€แ€ปแ€€แ€บ แ€€แ€ปแ€ฑแ€ฌแ€บแ€œแ€ฝแ€”แ€บแ€žแ€ฝแ€ฌแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน€เธเธดเธ™เธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”', + mandarin: '่ถ…่ฟ‡ไธ‹่ฝฝ้™ๅˆถ' }, downloadLimitMessage: { english: @@ -2011,7 +3011,14 @@ export const localizations = { indonesian: 'Anda mencoba mengunduh {newDownloads} lampiran untuk total {totalDownloads}, tetapi batasnya adalah {limit}. Silakan batalkan pilihan beberapa unduhan dan coba lagi.', nepali: - 'เคคเคชเคพเคˆเค‚ {totalDownloads} เค•เฅ‹ เค•เฅเคฒ เคฒเคพเค—เคฟ {newDownloads} เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคฆเฅˆ เคนเฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคธเฅ€เคฎเคพ {limit} เคนเฅ‹เฅค เค•เฅƒเคชเคฏเคพ เค•เฅ‡เคนเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคกเคนเคฐเฅ‚ เค…เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคคเคชเคพเคˆเค‚ {totalDownloads} เค•เฅ‹ เค•เฅเคฒ เคฒเคพเค—เคฟ {newDownloads} เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคฆเฅˆ เคนเฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคธเฅ€เคฎเคพ {limit} เคนเฅ‹เฅค เค•เฅƒเคชเคฏเคพ เค•เฅ‡เคนเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคกเคนเคฐเฅ‚ เค…เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค†เคช เค•เฅเคฒ {totalDownloads} เค•เฅ‡ เคฒเคฟเค {newDownloads} เคธเค‚เคฒเค—เฅเคจเค• เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เค•เคพ เคชเฅเคฐเคฏเคพเคธ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚, เคฒเฅ‡เค•เคฟเคจ เคธเฅ€เคฎเคพ {limit} เคนเฅˆเฅค เค•เฅƒเคชเคฏเคพ เค•เฅเค› เคกเคพเค‰เคจเคฒเฅ‹เคก เค…เคšเคฏเคจ เค•เคฐเฅ‡เค‚ เค”เคฐ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€…แ€ฏแ€…แ€ฏแ€•แ€ฑแ€ซแ€„แ€บแ€ธ {totalDownloads} แ€กแ€แ€ฝแ€€แ€บ {newDownloads} แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€”แ€ฑแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€€แ€”แ€ทแ€บแ€žแ€แ€บแ€แ€ปแ€€แ€บแ€žแ€Šแ€บ {limit} แ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€กแ€แ€ปแ€ญแ€ฏแ€ทแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€™แ€พแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ผแ€ฎแ€ธ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เธ„เธธเธ“เธเธณเธฅเธฑเธ‡เธžเธขเธฒเธขเธฒเธกเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธŸเธฅเนŒเนเธ™เธš {newDownloads} เธฃเธฒเธขเธเธฒเธฃ เธฃเธงเธกเธ—เธฑเน‰เธ‡เธซเธกเธ” {totalDownloads} เนเธ•เนˆเธ‚เธตเธ”เธˆเธณเธเธฑเธ”เธ„เธทเธญ {limit} เธเธฃเธธเธ“เธฒเธขเธเน€เธฅเธดเธเธเธฒเธฃเน€เธฅเธทเธญเธเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธšเธฒเธ‡เธฃเธฒเธขเธเธฒเธฃเนเธฅเธฐเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: + 'ๆ‚จๆญฃๅœจๅฐ่ฏ•ไธ‹่ฝฝ {newDownloads} ไธช้™„ไปถ๏ผŒๆ€ป่ฎก {totalDownloads}๏ผŒไฝ†้™ๅˆถๆ˜ฏ {limit}ใ€‚่ฏทๅ–ๆถˆ้€‰ๆ‹ฉไธ€ไบ›ไธ‹่ฝฝๅนถ้‡่ฏ•ใ€‚' }, offlineUndownloadWarning: { english: 'Offline Undownload Warning', @@ -2019,7 +3026,11 @@ export const localizations = { brazilian_portuguese: 'Aviso de remoรงรฃo de download offline', tok_pisin: 'Offline Undownload Warning', indonesian: 'Peringatan Batalkan Unduhan Offline', - nepali: 'เค…เคซเคฒเคพเค‡เคจ เค…เคจเคกเคพเค‰เคจเคฒเฅ‹เคก เคšเฅ‡เคคเคพเคตเคจเฅ€' + nepali: 'เค…เคซเคฒเคพเค‡เคจ เค…เคจเคกเคพเค‰เคจเคฒเฅ‹เคก เคšเฅ‡เคคเคพเคตเคจเฅ€', + hindi: 'เค‘เคซเคฒเคพเค‡เคจ เค…เคจเคกเคพเค‰เคจเคฒเฅ‹เคก เคšเฅ‡เคคเคพเคตเคจเฅ€', + burmese: 'แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€–แ€ปแ€€แ€บแ€แ€ผแ€„แ€บแ€ธ แ€žแ€แ€ญแ€•แ€ฑแ€ธแ€แ€ปแ€€แ€บ', + thai: 'เธ„เธณเน€เธ•เธทเธญเธ™เธเธฒเธฃเธขเธเน€เธฅเธดเธเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธšเธšเธญเธญเธŸเน„เธฅเธ™เนŒ', + mandarin: '็ฆป็บฟๅ–ๆถˆไธ‹่ฝฝ่ญฆๅ‘Š' }, offlineUndownloadMessage: { english: @@ -2033,7 +3044,14 @@ export const localizations = { indonesian: 'Anda sedang offline. Jika Anda menghapus unduhan ini, Anda tidak akan dapat mengunduhnya lagi sampai Anda kembali online. Kontribusi yang belum disinkronkan tidak akan terpengaruh.', nepali: - 'เคคเคชเคพเคˆเค‚ เค…เคนเคฟเคฒเฅ‡ เค…เคซเคฒเคพเค‡เคจ เคนเฅเคจเฅเคนเฅเคจเฅเค›เฅค เคฏเคฆเคฟ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฏเฅ‹ เคกเคพเค‰เคจเคฒเฅ‹เคก เคนเคŸเคพเค‰เคจเฅเคญเคฏเฅ‹ เคญเคจเฅ‡, เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคจเคญเคเคธเคฎเฅเคฎ เคชเฅเคจ: เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคทเคฎ เคนเฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฟเค™เฅเค• เคจเคญเคเค•เคพ เคฏเฅ‹เค—เคฆเคพเคจเคนเคฐเฅ‚ เคชเฅเคฐเคญเคพเคตเคฟเคค เคนเฅเคจเฅ‡ เค›เฅˆเคจเคจเฅเฅค' + 'เคคเคชเคพเคˆเค‚ เค…เคนเคฟเคฒเฅ‡ เค…เคซเคฒเคพเค‡เคจ เคนเฅเคจเฅเคนเฅเคจเฅเค›เฅค เคฏเคฆเคฟ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฏเฅ‹ เคกเคพเค‰เคจเคฒเฅ‹เคก เคนเคŸเคพเค‰เคจเฅเคญเคฏเฅ‹ เคญเคจเฅ‡, เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคจเคญเคเคธเคฎเฅเคฎ เคชเฅเคจ: เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคทเคฎ เคนเฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฟเค™เฅเค• เคจเคญเคเค•เคพ เคฏเฅ‹เค—เคฆเคพเคจเคนเคฐเฅ‚ เคชเฅเคฐเคญเคพเคตเคฟเคค เคนเฅเคจเฅ‡ เค›เฅˆเคจเคจเฅเฅค', + hindi: + 'เค†เคช เคตเคฐเฅเคคเคฎเคพเคจ เคฎเฅ‡เค‚ เค‘เคซเคฒเคพเค‡เคจ เคนเฅˆเค‚เฅค เคฏเคฆเคฟ เค†เคช เค‡เคธ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เฅ‹ เคนเคŸเคพเคคเฅ‡ เคนเฅˆเค‚, เคคเฅ‹ เค†เคช เค‘เคจเคฒเคพเค‡เคจ เคตเคพเคชเคธ เค†เคจเฅ‡ เคคเค• เค‡เคธเฅ‡ เคชเฅเคจเคƒ เคกเคพเค‰เคจเคฒเฅ‹เคก เคจเคนเฅ€เค‚ เค•เคฐ เคธเค•เฅ‡เค‚เค—เฅ‡เฅค เค†เคชเค•เฅ‡ เค…เคธเค‚เค—เคค เคฏเฅ‹เค—เคฆเคพเคจ เคชเฅเคฐเคญเคพเคตเคฟเคค เคจเคนเฅ€เค‚ เคนเฅ‹เค‚เค—เฅ‡เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€œแ€€แ€บแ€›แ€พแ€ญแ€แ€ฝแ€„แ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€™แ€›แ€พแ€ญแ€•แ€ซแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€คแ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ซแ€€แŠ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€•แ€ผแ€”แ€บแ€›แ€žแ€Šแ€ทแ€บแ€กแ€‘แ€ญ แ€‘แ€•แ€บแ€™แ€ถแ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแแ€™แ€›แ€•แ€ซแ‹ แ€žแ€„แ€บแ แ€…แ€„แ€ทแ€บแ€แ€ปแ€”แ€บแ€™แ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€‘แ€ญแ€แ€ญแ€ฏแ€€แ€บแ€™แ€Šแ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ‹', + thai: 'เธ„เธธเธ“เธเธณเธฅเธฑเธ‡เธญเธญเธŸเน„เธฅเธ™เนŒเธญเธขเธนเนˆ เธซเธฒเธเธ„เธธเธ“เธฅเธšเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ™เธตเน‰ เธ„เธธเธ“เธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธญเธตเธเธ„เธฃเธฑเน‰เธ‡เน„เธ”เน‰เธˆเธ™เธเธงเนˆเธฒเธ„เธธเธ“เธˆเธฐเธเธฅเธฑเธšเธกเธฒเธญเธญเธ™เน„เธฅเธ™เนŒ เธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเธ—เธตเนˆเธขเธฑเธ‡เน„เธกเนˆเน„เธ”เน‰เธ‹เธดเธ‡เธ„เนŒเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเน„เธกเนˆเน„เธ”เน‰เธฃเธฑเธšเธœเธฅเธเธฃเธฐเธ—เธš', + mandarin: + 'ๆ‚จ็›ฎๅ‰ๅค„ไบŽ็ฆป็บฟ็Šถๆ€ใ€‚ๅฆ‚ๆžœๆ‚จๅˆ ้™คๆญคไธ‹่ฝฝ๏ผŒๅœจๆ‚จ้‡ๆ–ฐไธŠ็บฟไน‹ๅ‰ๅฐ†ๆ— ๆณ•้‡ๆ–ฐไธ‹่ฝฝใ€‚ๆ‚จๆœชๅŒๆญฅ็š„่ดก็Œฎไธไผšๅ—ๅˆฐๅฝฑๅ“ใ€‚' }, dontShowAgain: { english: "Don't show this message again", @@ -2041,7 +3059,11 @@ export const localizations = { brazilian_portuguese: 'Nรฃo mostrar esta mensagem novamente', tok_pisin: 'No soim dispela message gen', indonesian: 'Jangan tampilkan pesan ini lagi', - nepali: 'เคฏเฅ‹ เคธเคจเฅเคฆเฅ‡เคถ เคซเฅ‡เคฐเคฟ เคจเคฆเฅ‡เค–เคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฏเฅ‹ เคธเคจเฅเคฆเฅ‡เคถ เคซเฅ‡เคฐเคฟ เคจเคฆเฅ‡เค–เคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‡เคธ เคธเค‚เคฆเฅ‡เคถ เค•เฅ‹ เคซเคฟเคฐ เคธเฅ‡ เคจ เคฆเคฟเค–เคพเคเค‚', + burmese: 'แ€คแ€…แ€ฌแ€แ€ญแ€ฏแ€€แ€ญแ€ฏ แ€‘แ€•แ€บแ€™แ€ถแ€™แ€•แ€ผแ€•แ€ซแ€”แ€พแ€„แ€ทแ€บ', + thai: 'เน„เธกเนˆเนเธชเธ”เธ‡เธ‚เน‰เธญเธ„เธงเธฒเธกเธ™เธตเน‰เธญเธตเธ', + mandarin: 'ไธๅ†ๆ˜พ็คบๆญคๆถˆๆฏ' }, cancel: { english: 'Cancel', @@ -2049,7 +3071,11 @@ export const localizations = { brazilian_portuguese: 'Cancelar', tok_pisin: 'Cancel', indonesian: 'Batal', - nepali: 'เคฐเคฆเฅเคฆ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเคฆเฅเคฆ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฆเฅเคฆ เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€šแ€บแ€–แ€ปแ€€แ€บแ€•แ€ซ', + thai: 'เธขเธเน€เธฅเธดเธ', + mandarin: 'ๅ–ๆถˆ' }, yes: { english: 'Yes', @@ -2057,7 +3083,11 @@ export const localizations = { brazilian_portuguese: 'Sim', tok_pisin: 'Yes', indonesian: 'Ya', - nepali: 'เคนเฅ‹' + nepali: 'เคนเฅ‹', + hindi: 'เคนเคพเค', + burmese: 'แ€Ÿแ€ฏแ€แ€บแ€€แ€ฒแ€ท', + thai: 'เนƒเธŠเนˆ', + mandarin: 'ๆ˜ฏ' }, no: { english: 'No', @@ -2065,7 +3095,11 @@ export const localizations = { brazilian_portuguese: 'Nรฃo', tok_pisin: 'Nogat', indonesian: 'Tidak', - nepali: 'เคนเฅ‹เค‡เคจ' + nepali: 'เคนเฅ‹เค‡เคจ', + hindi: 'เคจเคนเฅ€เค‚', + burmese: 'แ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซ', + thai: 'เน„เธกเนˆ', + mandarin: 'ๅฆ' }, confirm: { english: 'Confirm', @@ -2073,7 +3107,11 @@ export const localizations = { brazilian_portuguese: 'Confirmar', tok_pisin: 'Confirm', indonesian: 'Konfirmasi', - nepali: 'เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธขเธทเธ™เธขเธฑเธ™', + mandarin: '็กฎ่ฎค' }, blockThisContent: { english: 'Block this content', @@ -2081,7 +3119,11 @@ export const localizations = { brazilian_portuguese: 'Bloquear este conteรบdo', tok_pisin: 'Blokim dispela content', indonesian: 'Blokir konten ini', - nepali: 'เคฏเฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฌเฅเคฒเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฏเฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฌเฅเคฒเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‡เคธ เคธเคพเคฎเค—เฅเคฐเฅ€ เค•เฅ‹ เคฌเฅเคฒเฅ‰เค• เค•เคฐเฅ‡เค‚', + burmese: 'แ€คแ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€•แ€ญแ€แ€บแ€†แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธšเธฅเน‡เธญเธเน€เธ™เธทเน‰เธญเธซเธฒเธ™เธตเน‰', + mandarin: '้˜ปๆญขๆญคๅ†…ๅฎน' }, blockThisUser: { english: 'Block this user', @@ -2089,7 +3131,11 @@ export const localizations = { brazilian_portuguese: 'Bloquear este usuรกrio', tok_pisin: 'Blokim dispela user', indonesian: 'Blokir pengguna ini', - nepali: 'เคฏเฅ‹ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคฌเฅเคฒเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฏเฅ‹ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคฌเฅเคฒเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‡เคธ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เค•เฅ‹ เคฌเฅเคฒเฅ‰เค• เค•เคฐเฅ‡เค‚', + burmese: 'แ€คแ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€€แ€ญแ€ฏ แ€•แ€ญแ€แ€บแ€†แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธšเธฅเน‡เธญเธเธœเธนเน‰เนƒเธŠเน‰เธ™เธตเน‰', + mandarin: '้˜ปๆญขๆญค็”จๆˆท' }, // New backup-related translations backup: { @@ -2098,7 +3144,11 @@ export const localizations = { brazilian_portuguese: 'Backup', tok_pisin: 'Backup', indonesian: 'Cadangan', - nepali: 'เคฌเฅเคฏเคพเค•เค…เคช' + nepali: 'เคฌเฅเคฏเคพเค•เค…เคช', + hindi: 'เคฌเฅˆเค•เค…เคช', + burmese: 'แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€พแ€ฏ', + thai: 'เธชเธณเธฃเธญเธ‡', + mandarin: 'ๅค‡ไปฝ' }, backingUp: { english: 'Backing Up...', @@ -2106,7 +3156,11 @@ export const localizations = { brazilian_portuguese: 'Fazendo Backup...', tok_pisin: 'Backup...', indonesian: 'Mencadangkan...', - nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคฌเฅˆเค•เค…เคช เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ...', + burmese: 'แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธชเธณเธฃเธญเธ‡...', + mandarin: 'ๆญฃๅœจๅค‡ไปฝ...' }, restoreBackup: { english: 'Restore Backup', @@ -2114,7 +3168,11 @@ export const localizations = { brazilian_portuguese: 'Restaurar Backup', tok_pisin: 'Restore Backup', indonesian: 'Pulihkan Cadangan', - nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเฅˆเค•เค…เคช เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€‘แ€ฌแ€ธแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เธเธนเน‰เธ„เธทเธ™เธเธฒเธฃเธชเธณเธฃเธญเธ‡', + mandarin: 'ๆขๅคๅค‡ไปฝ' }, restoring: { english: 'Restoring...', @@ -2122,7 +3180,11 @@ export const localizations = { brazilian_portuguese: 'Restaurando...', tok_pisin: 'Restore...', indonesian: 'Memulihkan...', - nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ...', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€‘แ€ฌแ€ธแ€›แ€พแ€ญแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธเธนเน‰เธ„เธทเธ™...', + mandarin: 'ๆญฃๅœจๆขๅค...' }, startBackupTitle: { english: 'Create Backup', @@ -2130,7 +3192,11 @@ export const localizations = { brazilian_portuguese: 'Criar Backup', tok_pisin: 'Mekim Backup', indonesian: 'Buat Cadangan', - nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเฅˆเค•เค…เคช เคฌเคจเคพเคเค‚', + burmese: 'แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€พแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เธเธฒเธฃเธชเธณเธฃเธญเธ‡', + mandarin: 'ๅˆ›ๅปบๅค‡ไปฝ' }, startBackupMessageAudioOnly: { english: 'Would you like to back up your unsynced audio recordings?', @@ -2142,7 +3208,12 @@ export const localizations = { indonesian: 'Apakah Anda ingin mencadangkan rekaman audio yang belum disinkronkan?', nepali: - 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เคธเคฟเค™เฅเค• เคจเคญเคเค•เคพ เค…เคกเคฟเคฏเฅ‹ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคนเคฐเฅ‚ เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›?' + 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เคธเคฟเค™เฅเค• เคจเคญเคเค•เคพ เค…เคกเคฟเคฏเฅ‹ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคนเคฐเฅ‚ เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›?', + hindi: 'เค•เฅเคฏเคพ เค†เคช เค…เคชเคจเฅ‡ เค…เคธเค‚เค—เคค เค‘เคกเคฟเคฏเฅ‹ เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เค•เคพ เคฌเฅˆเค•เค…เคช เคฒเฅ‡เคจเคพ เคšเคพเคนเฅ‡เค‚เค—เฅ‡?', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€žแ€„แ€บแ แ€…แ€„แ€ทแ€บแ€แ€ปแ€”แ€บแ€™แ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€กแ€žแ€ถแ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€œแ€ญแ€ฏแ€•แ€ซแ€žแ€œแ€ฌแ€ธ?', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเน€เธชเธตเธขเธ‡เธ—เธตเนˆเธขเธฑเธ‡เน„เธกเนˆเน„เธ”เน‰เธ‹เธดเธ‡เธ„เนŒเธ‚เธญเธ‡เธ„เธธเธ“เธซเธฃเธทเธญเน„เธกเนˆ?', + mandarin: 'ๆ‚จๆƒณๅค‡ไปฝๆœชๅŒๆญฅ็š„้Ÿณ้ข‘ๅฝ•้Ÿณๅ—๏ผŸ' }, backupAudioAction: { english: 'Backup audio and text', @@ -2150,7 +3221,11 @@ export const localizations = { brazilian_portuguese: 'Backup de รกudio e texto', tok_pisin: 'Backup audio na text', indonesian: 'Cadangkan audio dan teks', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เคฐ เคŸเฅ‡เค•เฅเคธเฅเคŸ เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เคฐ เคŸเฅ‡เค•เฅเคธเฅเคŸ เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เค”เคฐ เคŸเฅ‡เค•เฅเคธเฅเคŸ เค•เคพ เคฌเฅˆเค•เค…เคช เคฒเฅ‡เค‚', + burmese: 'แ€กแ€žแ€ถแ€”แ€พแ€„แ€ทแ€บ แ€…แ€ฌแ€žแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซ', + thai: 'เธชเธณเธฃเธญเธ‡เน€เธชเธตเธขเธ‡เนเธฅเธฐเธ‚เน‰เธญเธ„เธงเธฒเธก', + mandarin: 'ๅค‡ไปฝ้Ÿณ้ข‘ๅ’Œๆ–‡ๆœฌ' }, backupErrorTitle: { english: 'Backup Error', @@ -2158,7 +3233,11 @@ export const localizations = { brazilian_portuguese: 'Erro de Backup', tok_pisin: 'Backup Rong', indonesian: 'Kesalahan Cadangan', - nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคคเฅเคฐเฅเคŸเคฟ' + nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคคเฅเคฐเฅเคŸเคฟ', + hindi: 'เคฌเฅˆเค•เค…เคช เคคเฅเคฐเฅเคŸเคฟ', + burmese: 'แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€พแ€ฏ แ€กแ€™แ€พแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธชเธณเธฃเธญเธ‡', + mandarin: 'ๅค‡ไปฝ้”™่ฏฏ' }, backupCompleteTitle: { english: 'Backup Complete', @@ -2166,7 +3245,11 @@ export const localizations = { brazilian_portuguese: 'Backup Concluรญdo', tok_pisin: 'Backup Pinis', indonesian: 'Cadangan Selesai', - nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹' + nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹', + hindi: 'เคฌเฅˆเค•เค…เคช เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€พแ€ฏ แ€•แ€ผแ€ฎแ€ธแ€…แ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธชเธณเธฃเธญเธ‡เน€เธชเธฃเน‡เธˆเธชเธกเธšเธนเธฃเธ“เนŒ', + mandarin: 'ๅค‡ไปฝๅฎŒๆˆ' }, audioBackupStatus: { english: 'Successfully backed up {count} audio recordings', @@ -2175,7 +3258,11 @@ export const localizations = { 'Backup de {count} gravaรงรตes de รกudio concluรญdo com sucesso', tok_pisin: 'Backup {count} audio recordings gut', indonesian: 'Berhasil mencadangkan {count} rekaman audio', - nepali: '{count} เค…เคกเคฟเคฏเฅ‹ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคนเคฐเฅ‚ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเคฟเคฏเฅ‹' + nepali: '{count} เค…เคกเคฟเคฏเฅ‹ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคนเคฐเฅ‚ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเคฟเคฏเฅ‹', + hindi: '{count} เค‘เคกเคฟเคฏเฅ‹ เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฌเฅˆเค•เค…เคช เคนเฅ‹ เค—เคˆ', + burmese: '{count} แ€กแ€žแ€ถแ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธชเธณเธฃเธญเธ‡เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเน€เธชเธตเธขเธ‡ {count} เธฃเธฒเธขเธเธฒเธฃเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅทฒๆˆๅŠŸๅค‡ไปฝ {count} ไธช้Ÿณ้ข‘ๅฝ•้Ÿณ' }, criticalBackupError: { english: 'A critical error occurred: {error}', @@ -2183,7 +3270,11 @@ export const localizations = { brazilian_portuguese: 'Ocorreu um erro crรญtico: {error}', tok_pisin: 'Bikpela rong i kamap: {error}', indonesian: 'Terjadi kesalahan kritis: {error}', - nepali: 'เคเค‰เคŸเคพ เค—เคฎเฅเคญเฅ€เคฐ เคคเฅเคฐเฅเคŸเคฟ เคญเคฏเฅ‹: {error}' + nepali: 'เคเค‰เคŸเคพ เค—เคฎเฅเคญเฅ€เคฐ เคคเฅเคฐเฅเคŸเคฟ เคญเคฏเฅ‹: {error}', + hindi: 'เคเค• เค—เค‚เคญเฅ€เคฐ เคคเฅเคฐเฅเคŸเคฟ เคนเฅเคˆ: {error}', + burmese: 'แ€กแ€›แ€ฑแ€ธแ€€แ€ผแ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€กแ€™แ€พแ€ฌแ€ธแ€แ€…แ€บแ€แ€ฏ แ€–แ€ผแ€…แ€บแ€•แ€ฝแ€ฌแ€ธแ€แ€ฒแ€ทแ€žแ€Šแ€บ: {error}', + thai: 'เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธฃเน‰เธฒเธขเนเธฃเธ‡: {error}', + mandarin: 'ๅ‘็”Ÿไธฅ้‡้”™่ฏฏ: {error}' }, databaseNotReady: { english: 'Database is not ready. Please try again later.', @@ -2192,7 +3283,12 @@ export const localizations = { 'O banco de dados nรฃo estรก pronto. Por favor, tente novamente mais tarde.', tok_pisin: 'Database i no redi yet. Plis traim gen bihain.', indonesian: 'Database belum siap. Silakan coba lagi nanti.', - nepali: 'เคกเคพเคŸเคพเคฌเฅ‡เคธ เคคเคฏเคพเคฐ เค›เฅˆเคจเฅค เค•เฅƒเคชเคฏเคพ เคชเค›เคฟ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เคกเคพเคŸเคพเคฌเฅ‡เคธ เคคเคฏเคพเคฐ เค›เฅˆเคจเฅค เค•เฅƒเคชเคฏเคพ เคชเค›เคฟ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคคเฅˆเคฏเคพเคฐ เคจเคนเฅ€เค‚ เคนเฅˆเฅค เค•เฅƒเคชเคฏเคพ เคฌเคพเคฆ เคฎเฅ‡เค‚ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€žแ€Šแ€บ แ€กแ€†แ€„แ€บแ€žแ€„แ€ทแ€บแ€™แ€–แ€ผแ€…แ€บแ€žแ€ฑแ€ธแ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€”แ€ฑแ€ฌแ€€แ€บแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅเธขเธฑเธ‡เน„เธกเนˆเธžเธฃเน‰เธญเธก เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡เนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡', + mandarin: 'ๆ•ฐๆฎๅบ“ๅฐšๆœชๅ‡†ๅค‡ๅฅฝใ€‚่ฏท็จๅŽๅ†่ฏ•ใ€‚' }, storagePermissionDenied: { english: 'Storage permission denied. Backup cannot proceed.', @@ -2202,7 +3298,12 @@ export const localizations = { 'Permissรฃo de armazenamento negada. O backup nรฃo pode prosseguir.', tok_pisin: 'Storage permission i no. Backup i no inap go.', indonesian: 'Izin penyimpanan ditolak. Cadangan tidak dapat dilanjutkan.', - nepali: 'เคญเคฃเฅเคกเคพเคฐเคฃ เค…เคจเฅเคฎเคคเคฟ เค…เคธเฅเคตเฅ€เค•เฅƒเคคเฅค เคฌเฅเคฏเคพเค•เค…เคช เค…เค—เคพเคกเคฟ เคฌเคขเฅเคจ เคธเค•เฅเคฆเฅˆเคจเฅค' + nepali: 'เคญเคฃเฅเคกเคพเคฐเคฃ เค…เคจเฅเคฎเคคเคฟ เค…เคธเฅเคตเฅ€เค•เฅƒเคคเฅค เคฌเฅเคฏเคพเค•เค…เคช เค…เค—เคพเคกเคฟ เคฌเคขเฅเคจ เคธเค•เฅเคฆเฅˆเคจเฅค', + hindi: 'เคญเค‚เคกเคพเคฐเคฃ เค…เคจเฅเคฎเคคเคฟ เค…เคธเฅเคตเฅ€เค•เฅƒเคคเฅค เคฌเฅˆเค•เค…เคช เค†เค—เฅ‡ เคจเคนเฅ€เค‚ เคฌเคขเคผ เคธเค•เคคเคพเฅค', + burmese: + 'แ€žแ€ญแ€ฏแ€œแ€พแ€ฑแ€ฌแ€„แ€บแ€™แ€พแ€ฏ แ€แ€ฝแ€„แ€ทแ€บแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€พแ€ฏ แ€†แ€€แ€บแ€œแ€ฏแ€•แ€บแ€™แ€›แ€•แ€ซแ‹', + thai: 'เธ›เธเธดเน€เธชเธ˜เธเธฒเธฃเธญเธ™เธธเธเธฒเธ•เธเธฒเธฃเธˆเธฑเธ”เน€เธเน‡เธš เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธชเธณเธฃเธญเธ‡เน„เธ”เน‰', + mandarin: 'ๅญ˜ๅ‚จๆƒ้™่ขซๆ‹’็ปใ€‚ๅค‡ไปฝๆ— ๆณ•็ปง็ปญใ€‚' }, // Adding missing translation keys initializing: { @@ -2211,7 +3312,11 @@ export const localizations = { brazilian_portuguese: 'Inicializando', tok_pisin: 'Initializing', indonesian: 'Menginisialisasi', - nepali: 'เคธเฅเคฐเฅเคตเคพเคค เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคธเฅเคฐเฅเคตเคพเคค เค—เคฐเฅเคฆเฅˆ', + hindi: 'เค†เคฐเค‚เคญ เค•เคฐ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€…แ€แ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เน€เธฃเธดเนˆเธกเธ•เน‰เธ™', + mandarin: 'ๆญฃๅœจๅˆๅง‹ๅŒ–' }, syncComplete: { english: 'Sync complete', @@ -2219,7 +3324,11 @@ export const localizations = { brazilian_portuguese: 'Sincronizaรงรฃo completa', nepali: 'เคธเคฟเค™เฅเค• เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹', tok_pisin: 'Sync pinis', - indonesian: 'Sinkronisasi selesai' + indonesian: 'Sinkronisasi selesai', + hindi: 'เคธเคฟเค‚เค• เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€…แ€„แ€ทแ€บแ€แ€ปแ€”แ€บแ€™แ€พแ€ฏ แ€•แ€ผแ€ฎแ€ธแ€…แ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ‹เธดเธ‡เธ„เนŒเน€เธชเธฃเน‡เธˆเธชเธกเธšเธนเธฃเธ“เนŒ', + mandarin: 'ๅŒๆญฅๅฎŒๆˆ' }, syncProgress: { english: '{current} of {total} files', @@ -2227,7 +3336,11 @@ export const localizations = { brazilian_portuguese: '{current} de {total} arquivos', tok_pisin: '{current} long {total} files', indonesian: '{current} dari {total} file', - nepali: '{total} เคฎเคงเฅเคฏเฅ‡ {current} เคซเคพเค‡เคฒเคนเคฐเฅ‚' + nepali: '{total} เคฎเคงเฅเคฏเฅ‡ {current} เคซเคพเค‡เคฒเคนเคฐเฅ‚', + hindi: '{total} เคฎเฅ‡เค‚ เคธเฅ‡ {current} เคซเคพเค‡เคฒเฅ‡เค‚', + burmese: '{total} แ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€‘แ€ฒแ€™แ€พ {current}', + thai: '{current} เธˆเธฒเธ {total} เน„เธŸเธฅเนŒ', + mandarin: '{total} ไธชๆ–‡ไปถไธญ็š„ {current} ไธช' }, userNotLoggedIn: { english: 'You must be logged in to perform this action', @@ -2235,7 +3348,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช deve estar logado para realizar esta aรงรฃo', tok_pisin: 'Yu mas login pastaim long mekim dispela samting', indonesian: 'Anda harus masuk untuk melakukan tindakan ini', - nepali: 'เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เค‡เคธ เค•เคพเคฐเฅเคฐเคตเคพเคˆ เค•เฅ‹ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคฒเฅ‰เค— เค‡เคจ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพ', + burmese: 'แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ™เธตเน‰', + mandarin: 'ๆ‚จๅฟ…้กป็™ปๅฝ•ๆ‰่ƒฝๆ‰ง่กŒๆญคๆ“ไฝœ' }, cannotReportOwnTranslation: { english: 'You cannot report your own translation', @@ -2243,7 +3360,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช nรฃo pode reportar sua prรณpria traduรงรฃo', tok_pisin: 'Yu no inap reportim translation bilong yu yet', indonesian: 'Anda tidak dapat melaporkan terjemahan Anda sendiri', - nepali: 'เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจ' + nepali: 'เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจ', + hindi: 'เค†เคช เค…เคชเคจเคพ เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคจเคนเฅ€เค‚ เค•เคฐ เคธเค•เคคเฅ‡', + burmese: 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€žแ€„แ€บแ แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแแ€™แ€›แ€•แ€ซ', + thai: 'เธ„เธธเธ“เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธฃเธฒเธขเธ‡เธฒเธ™เธ„เธณเนเธ›เธฅเธ‚เธญเธ‡เธ„เธธเธ“เน€เธญเธ‡เน„เธ”เน‰', + mandarin: 'ๆ‚จไธ่ƒฝๆŠฅๅ‘Š่‡ชๅทฑ็š„็ฟป่ฏ‘' }, cannotReportInactiveTranslation: { english: 'You cannot report inactive translation', @@ -2251,7 +3372,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช nรฃo pode reportar traduรงรฃo inativa', tok_pisin: 'Yu no inap reportim translation i no active', indonesian: 'Anda tidak dapat melaporkan terjemahan yang tidak aktif', - nepali: 'เคคเคชเคพเคˆเค‚ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจ' + nepali: 'เคคเคชเคพเคˆเค‚ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจ', + hindi: 'เค†เคช เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคจเคนเฅ€เค‚ เค•เคฐ เคธเค•เคคเฅ‡', + burmese: 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€™แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแแ€™แ€›แ€•แ€ซ', + thai: 'เธ„เธธเธ“เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธฃเธฒเธขเธ‡เธฒเธ™เธ„เธณเนเธ›เธฅเธ—เธตเนˆเน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰', + mandarin: 'ๆ‚จไธ่ƒฝๆŠฅๅ‘Š้žๆดปๅŠจ็ฟป่ฏ‘' }, cannotIdentifyUser: { english: 'Unable to identify user', @@ -2259,7 +3384,11 @@ export const localizations = { brazilian_portuguese: 'Nรฃo foi possรญvel identificar o usuรกrio', tok_pisin: 'No inap save user', indonesian: 'Tidak dapat mengidentifikasi pengguna', - nepali: 'เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคชเคนเคฟเคšเคพเคจ เค—เคฐเฅเคจ เค…เคธเคฎเคฐเฅเคฅ' + nepali: 'เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคชเคนเคฟเคšเคพเคจ เค—เคฐเฅเคจ เค…เคธเคฎเคฐเฅเคฅ', + hindi: 'เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เค•เฅ€ เคชเคนเคšเคพเคจ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เค…เคธเคฎเคฐเฅเคฅ', + burmese: 'แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€€แ€ญแ€ฏ แ€แ€ฝแ€ฒแ€แ€ผแ€ฌแ€ธแ€™แ€›แ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธฃเธฐเธšเธธเธœเธนเน‰เนƒเธŠเน‰เน„เธ”เน‰', + mandarin: 'ๆ— ๆณ•่ฏ†ๅˆซ็”จๆˆท' }, cannotChangeTranslationSettings: { english: 'Unathorized to change settings for this translation', @@ -2270,7 +3399,12 @@ export const localizations = { tok_pisin: 'Yu no gat rait long senisim settings bilong dispela translation', indonesian: 'Tidak berwenang untuk mengubah pengaturan terjemahan ini', - nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆเค•เฅ‹ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค—เคฐเฅเคจ เค…เคจเคงเคฟเค•เฅƒเคค' + nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆเค•เฅ‹ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค—เคฐเฅเคจ เค…เคจเคงเคฟเค•เฅƒเคค', + hindi: 'เค‡เคธ เค…เคจเฅเคตเคพเคฆ เค•เฅ‡ เคฒเคฟเค เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ เคฌเคฆเคฒเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค…เคจเคงเคฟเค•เฅƒเคค', + burmese: + 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€กแ€แ€ฝแ€€แ€บ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแ€›แ€”แ€บ แ€แ€ฝแ€„แ€ทแ€บแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเธชเธดเธ—เธ˜เธดเนŒเนƒเธ™เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธชเธณเธซเธฃเธฑเธšเธ„เธณเนเธ›เธฅเธ™เธตเน‰', + mandarin: 'ๆ— ๆƒๆ›ดๆ”นๆญค็ฟป่ฏ‘็š„่ฎพ็ฝฎ' }, alreadyReportedTranslation: { english: 'You have already reported this translation', @@ -2278,7 +3412,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช jรก reportou esta traduรงรฃo', tok_pisin: 'Yu reportim dispela translation pinis', indonesian: 'Anda sudah melaporkan terjemahan ini', - nepali: 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคชเคนเคฟเคฒเฅ‡ เคจเฅˆ เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเคฟเคธเค•เฅเคจเฅเคญเคฏเฅ‹' + nepali: 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคชเคนเคฟเคฒเฅ‡ เคจเฅˆ เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเคฟเคธเค•เฅเคจเฅเคญเคฏเฅ‹', + hindi: 'เค†เคชเคจเฅ‡ เคชเคนเคฒเฅ‡ เคนเฅ€ เค‡เคธ เค…เคจเฅเคตเคพเคฆ เค•เฅ‹ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐ เคฆเคฟเคฏเคพ เคนเฅˆ', + burmese: 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ„เธธเธ“เน„เธ”เน‰เธฃเธฒเธขเธ‡เธฒเธ™เธ„เธณเนเธ›เธฅเธ™เธตเน‰เนเธฅเน‰เธง', + mandarin: 'ๆ‚จๅทฒ็ปๆŠฅๅ‘Šไบ†ๆญค็ฟป่ฏ‘' }, failedSaveAnalyticsPreference: { english: 'Failed to save analytics preference', @@ -2286,7 +3424,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao salvar preferรชncia de anรกlise', tok_pisin: 'I no inap seivim analytics preference', indonesian: 'Gagal menyimpan preferensi analitik', - nepali: 'เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคชเฅเคฐเคพเคฅเคฎเคฟเค•เคคเคพ เคธเฅ‡เคญ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคชเฅเคฐเคพเคฅเคฎเคฟเค•เคคเคพ เคธเฅ‡เคญ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคชเฅเคฐเคพเคฅเคฎเคฟเค•เคคเคพ เคธเคนเฅ‡เคœเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€แ€ฝแ€ฒแ€แ€ผแ€™แ€บแ€ธแ€…แ€ญแ€แ€บแ€–แ€ผแ€ฌแ€™แ€พแ€ฏ แ€ฆแ€ธแ€…แ€ฌแ€ธแ€•แ€ฑแ€ธแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแแ€™แ€›แ€•แ€ซ', + thai: 'เธšเธฑเธ™เธ—เธถเธเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธเธฒเธฃเธงเธดเน€เธ„เธฃเธฒเธฐเธซเนŒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ไฟๅญ˜ๅˆ†ๆž้ฆ–้€‰้กนๅคฑ่ดฅ' }, currentPasswordRequired: { english: 'Current password is required', @@ -2294,7 +3436,11 @@ export const localizations = { brazilian_portuguese: 'A senha atual รฉ obrigatรณria', tok_pisin: 'Password bilong nau i mas', indonesian: 'Kata sandi saat ini diperlukan', - nepali: 'เคนเคพเคฒเค•เฅ‹ เคชเคพเคธเคตเคฐเฅเคก เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคนเคพเคฒเค•เฅ‹ เคชเคพเคธเคตเคฐเฅเคก เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เคตเคฐเฅเคคเคฎเคพเคจ เคชเคพเคธเคตเคฐเฅเคก เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€œแ€€แ€บแ€›แ€พแ€ญ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™', + mandarin: '้œ€่ฆๅฝ“ๅ‰ๅฏ†็ ' }, profileUpdateSuccess: { english: 'Profile updated successfully', @@ -2302,7 +3448,11 @@ export const localizations = { brazilian_portuguese: 'Perfil atualizado com sucesso', tok_pisin: 'Profile i update gut', indonesian: 'Profil berhasil diperbarui', - nepali: 'เคชเฅเคฐเฅ‹เคซเคพเค‡เคฒ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เค…เคชเคกเฅ‡เคŸ เค—เคฐเคฟเคฏเฅ‹' + nepali: 'เคชเฅเคฐเฅ‹เคซเคพเค‡เคฒ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เค…เคชเคกเฅ‡เคŸ เค—เคฐเคฟเคฏเฅ‹', + hindi: 'เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เค…เคชเคกเฅ‡เคŸ เคนเฅ‹ เค—เคˆ', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€กแ€€แ€ปแ€‰แ€บแ€ธแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธญเธฑเธ›เน€เธ”เธ•เน‚เธ›เธฃเน„เธŸเธฅเนŒเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ไธชไบบ่ต„ๆ–™ๆ›ดๆ–ฐๆˆๅŠŸ' }, failedUpdateProfile: { english: 'Failed to update profile', @@ -2310,7 +3460,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao atualizar perfil', tok_pisin: 'I no inap updateim profile', indonesian: 'Gagal memperbarui profil', - nepali: 'เคชเฅเคฐเฅ‹เคซเคพเค‡เคฒ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคชเฅเคฐเฅ‹เคซเคพเค‡เคฒ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€กแ€€แ€ปแ€‰แ€บแ€ธแ€€แ€ญแ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เธญเธฑเธ›เน€เธ”เธ•เน‚เธ›เธฃเน„เธŸเธฅเนŒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆ›ดๆ–ฐไธชไบบ่ต„ๆ–™ๅคฑ่ดฅ' }, assetNotFound: { english: 'Asset not found', @@ -2318,7 +3472,11 @@ export const localizations = { brazilian_portuguese: 'Recurso nรฃo encontrado', tok_pisin: 'Asset i no stap', indonesian: 'Aset tidak ditemukan', - nepali: 'เคเคธเฅ‡เคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ' + nepali: 'เคเคธเฅ‡เคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ', + hindi: 'เคเคธเฅ‡เคŸ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเคพ', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธžเธšเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ', + mandarin: 'ๆœชๆ‰พๅˆฐ่ต„ไบง' }, failedLoadAssetData: { english: 'Failed to load asset data', @@ -2326,7 +3484,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao carregar dados do recurso', tok_pisin: 'I no inap loadim asset data', indonesian: 'Gagal memuat data aset', - nepali: 'เคเคธเฅ‡เคŸ เคกเคพเคŸเคพ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคเคธเฅ‡เคŸ เคกเคพเคŸเคพ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคเคธเฅ‡เคŸ เคกเฅ‡เคŸเคพ เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ แ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅŠ ่ฝฝ่ต„ไบงๆ•ฐๆฎๅคฑ่ดฅ' }, failedLoadAssets: { english: 'Failed to load assets', @@ -2334,7 +3496,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao carregar recursos', tok_pisin: 'I no inap loadim ol asset', indonesian: 'Gagal memuat aset', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคเคธเฅ‡เคŸ เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เน‚เธซเธฅเธ”เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅŠ ่ฝฝ่ต„ไบงๅคฑ่ดฅ' }, projectMembers: { english: 'Project Members', @@ -2342,7 +3508,11 @@ export const localizations = { brazilian_portuguese: 'Membros do Projeto', tok_pisin: 'Ol Member bilong Project', indonesian: 'Anggota Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเคฆเคธเฅเคฏ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธชเธกเธฒเธŠเธดเธเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้กน็›ฎๆˆๅ‘˜' }, members: { english: 'Members', @@ -2350,7 +3520,11 @@ export const localizations = { brazilian_portuguese: 'Membros', tok_pisin: 'Ol Member', indonesian: 'Anggota', - nepali: 'เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚' + nepali: 'เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚', + hindi: 'เคธเคฆเคธเฅเคฏ', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธชเธกเธฒเธŠเธดเธ', + mandarin: 'ๆˆๅ‘˜' }, invited: { english: 'Invited', @@ -2358,7 +3532,11 @@ export const localizations = { brazilian_portuguese: 'Convidados', tok_pisin: 'Ol i invitim', indonesian: 'Diundang', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฟเคค', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เน„เธ”เน‰เธฃเธฑเธšเน€เธŠเธดเธ', + mandarin: 'ๅทฒ้‚€่ฏท' }, viewInvitation: { english: 'View Invitation', @@ -2366,7 +3544,11 @@ export const localizations = { brazilian_portuguese: 'Ver Convite', tok_pisin: 'Lukim Invitation', indonesian: 'Lihat Undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคฆเฅ‡เค–เฅ‡เค‚', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€•แ€ซ', + thai: 'เธ”เธนเธ„เธณเน€เธŠเธดเธ', + mandarin: 'ๆŸฅ็œ‹้‚€่ฏท' }, inviteMembers: { english: 'Invite Members', @@ -2374,7 +3556,11 @@ export const localizations = { brazilian_portuguese: 'Convidar Membros', tok_pisin: 'Invitim ol Member', indonesian: 'Undang Anggota', - nepali: 'เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเคพเคˆ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเคพเคˆ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคฆเคธเฅเคฏเฅ‹เค‚ เค•เฅ‹ เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€•แ€ซ', + thai: 'เน€เธŠเธดเธเธชเธกเธฒเธŠเธดเธ', + mandarin: '้‚€่ฏทๆˆๅ‘˜' }, inviteAsOwner: { english: 'Invite as owner', @@ -2382,7 +3568,11 @@ export const localizations = { brazilian_portuguese: 'Convidar como proprietรกrio', tok_pisin: 'Invitim olsem owner', indonesian: 'Undang sebagai pemilik', - nepali: 'เคฎเคพเคฒเคฟเค•เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเคพเคฒเคฟเค•เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฎเคพเคฒเคฟเค• เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€•แ€ซ', + thai: 'เน€เธŠเธดเธเน€เธ›เน‡เธ™เน€เธˆเน‰เธฒเธ‚เธญเธ‡', + mandarin: '้‚€่ฏทไธบๆ‰€ๆœ‰่€…' }, sendInvitation: { english: 'Send Invitation', @@ -2390,7 +3580,11 @@ export const localizations = { brazilian_portuguese: 'Enviar Convite', tok_pisin: 'Salim Invitation', indonesian: 'Kirim Undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเค เคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเค เคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคญเฅ‡เคœเฅ‡เค‚', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธ„เธณเน€เธŠเธดเธ', + mandarin: 'ๅ‘้€้‚€่ฏท' }, owner: { english: 'Owner', @@ -2398,7 +3592,11 @@ export const localizations = { brazilian_portuguese: 'Proprietรกrio', tok_pisin: 'Owner', indonesian: 'Pemilik', - nepali: 'เคฎเคพเคฒเคฟเค•' + nepali: 'เคฎเคพเคฒเคฟเค•', + hindi: 'เคฎเคพเคฒเคฟเค•', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บ', + thai: 'เน€เธˆเน‰เธฒเธ‚เธญเธ‡', + mandarin: 'ๆ‰€ๆœ‰่€…' }, member: { english: 'Member', @@ -2406,7 +3604,11 @@ export const localizations = { brazilian_portuguese: 'Membro', tok_pisin: 'Member', indonesian: 'Anggota', - nepali: 'เคธเคฆเคธเฅเคฏ' + nepali: 'เคธเคฆเคธเฅเคฏ', + hindi: 'เคธเคฆเคธเฅเคฏ', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บ', + thai: 'เธชเธกเธฒเธŠเธดเธ', + mandarin: 'ๆˆๅ‘˜' }, makeOwner: { english: 'Make Owner', @@ -2414,7 +3616,11 @@ export const localizations = { brazilian_portuguese: 'Tornar Proprietรกrio', tok_pisin: 'Mekim Owner', indonesian: 'Jadikan Pemilik', - nepali: 'เคฎเคพเคฒเคฟเค• เคฌเคจเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเคพเคฒเคฟเค• เคฌเคจเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฎเคพเคฒเคฟเค• เคฌเคจเคพเคเค‚', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแ€•แ€ซ', + thai: 'เธ—เธณเนƒเธซเน‰เน€เธ›เน‡เธ™เน€เธˆเน‰เธฒเธ‚เธญเธ‡', + mandarin: '่ฎพไธบๆ‰€ๆœ‰่€…' }, remove: { english: 'Remove', @@ -2422,7 +3628,11 @@ export const localizations = { brazilian_portuguese: 'Remover', tok_pisin: 'Rausim', indonesian: 'Hapus', - nepali: 'เคนเคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคนเคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคนเคŸเคพเคเค‚', + burmese: 'แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€•แ€ซ', + thai: 'เธฅเธš', + mandarin: '็งป้™ค' }, withdrawInvite: { english: 'Withdraw Invite', @@ -2430,7 +3640,11 @@ export const localizations = { brazilian_portuguese: 'Retirar Convite', tok_pisin: 'Rausim Invite', indonesian: 'Tarik Undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคตเคพเคชเคธ เคฒเฅ‡เค‚', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€•แ€ซ', + thai: 'เธ–เธญเธ™เธ„เธณเน€เธŠเธดเธ', + mandarin: 'ๆ’คๅ›ž้‚€่ฏท' }, you: { english: 'You', @@ -2438,7 +3652,11 @@ export const localizations = { brazilian_portuguese: 'Vocรช', tok_pisin: 'Yu', indonesian: 'Anda', - nepali: 'เคคเคชเคพเคˆเค‚' + nepali: 'เคคเคชเคพเคˆเค‚', + hindi: 'เค†เคช', + burmese: 'แ€žแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธ„เธธเธ“', + mandarin: 'ๆ‚จ' }, pendingInvitation: { english: 'Pending', @@ -2446,7 +3664,11 @@ export const localizations = { brazilian_portuguese: 'Pendente', tok_pisin: 'Wet', indonesian: 'Tertunda', - nepali: 'เคฌเคพเคเค•เฅ€' + nepali: 'เคฌเคพเคเค•เฅ€', + hindi: 'เคฒเค‚เคฌเคฟเคค', + burmese: 'แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€†แ€ญแ€ฏแ€„แ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธฃเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ', + mandarin: 'ๅพ…ๅค„็†' }, noMembers: { english: 'No members yet', @@ -2454,7 +3676,11 @@ export const localizations = { brazilian_portuguese: 'Ainda nรฃo hรก membros', tok_pisin: 'No gat member yet', indonesian: 'Belum ada anggota', - nepali: 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคธเคฆเคธเฅเคฏ เค›เฅˆเคจ' + nepali: 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคธเคฆเคธเฅเคฏ เค›เฅˆเคจ', + hindi: 'เค…เคญเฅ€ เคคเค• เค•เฅ‹เคˆ เคธเคฆเคธเฅเคฏ เคจเคนเฅ€เค‚', + burmese: 'แ€กแ€แ€ฏแ€‘แ€ญ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ธแ€•แ€ซ', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเธกเธตเธชเธกเธฒเธŠเธดเธ', + mandarin: '่ฟ˜ๆฒกๆœ‰ๆˆๅ‘˜' }, noInvitations: { english: 'No pending invitations', @@ -2462,7 +3688,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum convite pendente', tok_pisin: 'No gat invitation i wet', indonesian: 'Tidak ada undangan tertunda', - nepali: 'เค•เฅเคจเฅˆ เคฌเคพเคเค•เฅ€ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคฌเคพเคเค•เฅ€ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคฒเค‚เคฌเคฟเคค เค†เคฎเค‚เคคเฅเคฐเคฃ เคจเคนเฅ€เค‚', + burmese: 'แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€†แ€ญแ€ฏแ€„แ€บแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเธ„เธณเน€เธŠเธดเธเธ—เธตเนˆเธฃเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ', + mandarin: 'ๆฒกๆœ‰ๅพ…ๅค„็†็š„้‚€่ฏท' }, ownerTooltip: { english: @@ -2476,7 +3706,14 @@ export const localizations = { indonesian: 'Pemilik dapat membuat konten, mengundang dan mempromosikan anggota lain, dan tidak dapat diturunkan kembali ke keanggotaan atau dihapus dari proyek oleh anggota lain.', nepali: - 'เคฎเคพเคฒเคฟเค•เคนเคฐเฅ‚เคฒเฅ‡ เคธเคพเคฎเค—เฅเคฐเฅ€ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ, เค…เคจเฅเคฏ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเคพเคˆ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจ เคฐ เคชเฅเคฐเคตเคฐเฅเคฆเฅเคงเคจ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ, เคฐ เค…เคจเฅเคฏ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฆเฅเคตเคพเคฐเคพ เคธเคฆเคธเฅเคฏเคคเคพเคฎเคพ เคซเคฟเคฐเฅเคคเคพ เค—เคฟเคฐเคพเค‰เคจ เคตเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฌเคพเคŸ เคนเคŸเคพเค‰เคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + 'เคฎเคพเคฒเคฟเค•เคนเคฐเฅ‚เคฒเฅ‡ เคธเคพเคฎเค—เฅเคฐเฅ€ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ, เค…เคจเฅเคฏ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเคพเคˆ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจ เคฐ เคชเฅเคฐเคตเคฐเฅเคฆเฅเคงเคจ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ, เคฐ เค…เคจเฅเคฏ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฆเฅเคตเคพเคฐเคพ เคธเคฆเคธเฅเคฏเคคเคพเคฎเคพ เคซเคฟเคฐเฅเคคเคพ เค—เคฟเคฐเคพเค‰เคจ เคตเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฌเคพเคŸ เคนเคŸเคพเค‰เคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: + 'เคฎเคพเคฒเคฟเค• เคธเคพเคฎเค—เฅเคฐเฅ€ เคฌเคจเคพ เคธเค•เคคเฅ‡ เคนเฅˆเค‚, เค…เคจเฅเคฏ เคธเคฆเคธเฅเคฏเฅ‹เค‚ เค•เฅ‹ เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค”เคฐ เคชเฅเคฐเฅ‹เคจเฅเคจเคค เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚, เค”เคฐ เค…เคจเฅเคฏ เคธเคฆเคธเฅเคฏเฅ‹เค‚ เคฆเฅเคตเคพเคฐเคพ เคธเคฆเคธเฅเคฏเคคเคพ เคฎเฅ‡เค‚ เคตเคพเคชเคธ เคชเคฆเคพเคตเคจเคค เคฏเคพ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเฅ‡ เคนเคŸเคพเค เคจเคนเฅ€เค‚ เคœเคพ เคธเค•เคคเฅ‡เฅค', + burmese: + 'แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€žแ€Šแ€บ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ผแ€ฎแ€ธแŠ แ€กแ€แ€ผแ€ฌแ€ธแ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ผแ€ฎแ€ธ แ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌแ€บแ€œแ€Šแ€บแ€ธแŠ แ€กแ€แ€ผแ€ฌแ€ธแ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บแ€žแ€ญแ€ฏแ€ท แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€”แ€พแ€ญแ€™แ€ทแ€บแ€แ€ปแ€แ€ผแ€„แ€บแ€ธ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€พ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', + thai: 'เน€เธˆเน‰เธฒเธ‚เธญเธ‡เธชเธฒเธกเธฒเธฃเธ–เธชเธฃเน‰เธฒเธ‡เน€เธ™เธทเน‰เธญเธซเธฒ เน€เธŠเธดเธเนเธฅเธฐเน€เธฅเธทเนˆเธญเธ™เธ•เธณเนเธซเธ™เนˆเธ‡เธชเธกเธฒเธŠเธดเธเธ„เธ™เธญเธทเนˆเธ™เน† เนเธฅเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธ–เธนเธเธฅเธ”เธ•เธณเนเธซเธ™เนˆเธ‡เธเธฅเธฑเธšเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธซเธฃเธทเธญเธ–เธนเธเธฅเธšเธญเธญเธเธˆเธฒเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเน‚เธ”เธขเธชเธกเธฒเธŠเธดเธเธ„เธ™เธญเธทเนˆเธ™เน† เน„เธ”เน‰', + mandarin: + 'ๆ‰€ๆœ‰่€…ๅฏไปฅๅˆ›ๅปบๅ†…ๅฎนใ€้‚€่ฏทๅ’Œๆๅ‡ๅ…ถไป–ๆˆๅ‘˜๏ผŒๅนถไธ”ไธ่ƒฝ่ขซๅ…ถไป–ๆˆๅ‘˜้™็บงๅ›žๆˆๅ‘˜่บซไปฝๆˆ–ไปŽ้กน็›ฎไธญ็งป้™คใ€‚' }, confirmRemoveMessage: { english: 'Are you sure you want to remove {name} from this project?', @@ -2486,7 +3723,11 @@ export const localizations = { tok_pisin: 'Yu tru laik rausim {name} long dispela project?', indonesian: 'Apakah Anda yakin ingin menghapus {name} dari proyek ini?', nepali: - 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {name} เคฒเคพเคˆ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฌเคพเคŸ เคนเคŸเคพเค‰เคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›?' + 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {name} เคฒเคพเคˆ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฌเคพเคŸ เคนเคŸเคพเค‰เคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›?', + hindi: 'เค•เฅเคฏเคพ เค†เคช เคตเคพเค•เคˆ {name} เค•เฅ‹ เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเฅ‡ เคนเคŸเคพเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚?', + burmese: 'แ€žแ€„แ€บแ€žแ€Šแ€บ {name} แ€€แ€ญแ€ฏ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€พ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€œแ€ญแ€ฏแ€•แ€ซแ€žแ€œแ€ฌแ€ธ?', + thai: 'เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธš {name} เธญเธญเธเธˆเธฒเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰?', + mandarin: 'ๆ‚จ็กฎๅฎš่ฆไปŽ่ฏฅ้กน็›ฎไธญ็งป้™ค {name} ๅ—๏ผŸ' }, confirmPromote: { english: 'Confirm Promote', @@ -2494,7 +3735,11 @@ export const localizations = { brazilian_portuguese: 'Confirmar Promoรงรฃo', tok_pisin: 'Confirm Promote', indonesian: 'Konfirmasi Promosi', - nepali: 'เคชเฅเคฐเคฎเฅ‹เคถเคจ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเคฎเฅ‹เคถเคจ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅเคฐเฅ‹เคจเฅเคจเคคเคฟ เค•เฅ€ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธขเธทเธ™เธขเธฑเธ™เธเธฒเธฃเน€เธฅเธทเนˆเธญเธ™เธ•เธณเนเธซเธ™เนˆเธ‡', + mandarin: '็กฎ่ฎคๆๅ‡' }, confirmPromoteMessage: { english: @@ -2508,7 +3753,13 @@ export const localizations = { indonesian: 'Apakah Anda yakin ingin menjadikan {name} sebagai pemilik? Tindakan ini tidak dapat dibatalkan.', nepali: - 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {name} เคฒเคพเคˆ เคฎเคพเคฒเคฟเค• เคฌเคจเคพเค‰เคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›? เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚ {name} เคฒเคพเคˆ เคฎเคพเคฒเคฟเค• เคฌเคจเคพเค‰เคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›? เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: + 'เค•เฅเคฏเคพ เค†เคช เคตเคพเค•เคˆ {name} เค•เฅ‹ เคฎเคพเคฒเคฟเค• เคฌเคจเคพเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚? เคฏเคน เค•เคพเคฐเฅเคฐเคตเคพเคˆ เคชเฅ‚เคฐเฅเคตเคตเคค เคจเคนเฅ€เค‚ เค•เฅ€ เคœเคพ เคธเค•เคคเฅ€เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ {name} แ€€แ€ญแ€ฏ แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแ€œแ€ญแ€ฏแ€•แ€ซแ€žแ€œแ€ฌแ€ธ? แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€„แ€บแ€™แ€›แ€•แ€ซแ‹', + thai: 'เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธ—เธณเนƒเธซเน‰ {name} เน€เธ›เน‡เธ™เน€เธˆเน‰เธฒเธ‚เธญเธ‡? เธเธฒเธฃเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', + mandarin: 'ๆ‚จ็กฎๅฎš่ฆ่ฎฉ {name} ๆˆไธบๆ‰€ๆœ‰่€…ๅ—๏ผŸๆญคๆ“ไฝœๆ— ๆณ•ๆ’คๆถˆใ€‚' }, confirmLeave: { english: 'Leave Project', @@ -2516,7 +3767,11 @@ export const localizations = { brazilian_portuguese: 'Sair do Projeto', tok_pisin: 'Lusim Project', indonesian: 'Tinggalkan Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค›เฅ‹เคกเคผเฅ‡เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€พ แ€‘แ€ฝแ€€แ€บแ€•แ€ซ', + thai: 'เธญเธญเธเธˆเธฒเธเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '็ฆปๅผ€้กน็›ฎ' }, confirmLeaveMessage: { english: 'Are you sure you want to leave this project?', @@ -2524,7 +3779,11 @@ export const localizations = { brazilian_portuguese: 'Tem certeza de que deseja sair deste projeto?', tok_pisin: 'Yu tru laik lusim dispela project?', indonesian: 'Apakah Anda yakin ingin meninggalkan proyek ini?', - nepali: 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅ‹เคกเฅเคจ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค›?' + nepali: 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅ‹เคกเฅเคจ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค›?', + hindi: 'เค•เฅเคฏเคพ เค†เคช เคตเคพเค•เคˆ เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เฅ‹ เค›เฅ‹เคกเคผเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚?', + burmese: 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€พ แ€‘แ€ฝแ€€แ€บแ€œแ€ญแ€ฏแ€•แ€ซแ€žแ€œแ€ฌแ€ธ?', + thai: 'เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธญเธญเธเธˆเธฒเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰?', + mandarin: 'ๆ‚จ็กฎๅฎš่ฆ็ฆปๅผ€ๆญค้กน็›ฎๅ—๏ผŸ' }, cannotLeaveAsOnlyOwner: { english: @@ -2538,7 +3797,14 @@ export const localizations = { indonesian: 'Anda tidak dapat meninggalkan proyek ini karena Anda adalah satu-satunya pemilik. Silakan promosikan anggota lain menjadi pemilik terlebih dahulu.', nepali: - 'เคคเคชเคพเคˆเค‚ เคเค•เฅเคฒเฅ‹ เคฎเคพเคฒเคฟเค• เคญเคเค•เฅ‹ เคนเฅเคจเคพเคฒเฅ‡ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅ‹เคกเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจเฅค เค•เฅƒเคชเคฏเคพ เคชเคนเคฟเคฒเฅ‡ เค…เคฐเฅเค•เฅ‹ เคธเคฆเคธเฅเคฏเคฒเคพเคˆ เคฎเคพเคฒเคฟเค• เคฌเคจเคพเค‰เคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคคเคชเคพเคˆเค‚ เคเค•เฅเคฒเฅ‹ เคฎเคพเคฒเคฟเค• เคญเคเค•เฅ‹ เคนเฅเคจเคพเคฒเฅ‡ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅ‹เคกเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจเฅค เค•เฅƒเคชเคฏเคพ เคชเคนเคฟเคฒเฅ‡ เค…เคฐเฅเค•เฅ‹ เคธเคฆเคธเฅเคฏเคฒเคพเคˆ เคฎเคพเคฒเคฟเค• เคฌเคจเคพเค‰เคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค†เคช เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เฅ‹ เคจเคนเฅ€เค‚ เค›เฅ‹เคกเคผ เคธเค•เคคเฅ‡ เค•เฅเคฏเฅ‹เค‚เค•เคฟ เค†เคช เคเค•เคฎเคพเคคเฅเคฐ เคฎเคพเคฒเคฟเค• เคนเฅˆเค‚เฅค เค•เฅƒเคชเคฏเคพ เคชเคนเคฒเฅ‡ เค•เคฟเคธเฅ€ เค…เคจเฅเคฏ เคธเคฆเคธเฅเคฏ เค•เฅ‹ เคฎเคพเคฒเคฟเค• เคฌเคจเคพเคเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€แ€…แ€บแ€ฆแ€ธแ€แ€Šแ€บแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€–แ€ผแ€…แ€บแ€žแ€ฑแ€ฌแ€€แ€ผแ€ฑแ€ฌแ€„แ€ทแ€บ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€พ แ€‘แ€ฝแ€€แ€บแแ€™แ€›แ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€กแ€แ€ผแ€ฌแ€ธแ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€แ€…แ€บแ€ฆแ€ธแ€€แ€ญแ€ฏ แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแ€•แ€ซแ‹', + thai: 'เธ„เธธเธ“เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธญเธญเธเธˆเธฒเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน„เธ”เน‰เน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ„เธธเธ“เน€เธ›เน‡เธ™เน€เธˆเน‰เธฒเธ‚เธญเธ‡เธ„เธ™เน€เธ”เธตเธขเธง เธเธฃเธธเธ“เธฒเน€เธฅเธทเนˆเธญเธ™เธ•เธณเนเธซเธ™เนˆเธ‡เธชเธกเธฒเธŠเธดเธเธ„เธ™เธญเธทเนˆเธ™เน€เธ›เน‡เธ™เน€เธˆเน‰เธฒเธ‚เธญเธ‡เธเนˆเธญเธ™', + mandarin: + 'ๆ‚จไธ่ƒฝ็ฆปๅผ€ๆญค้กน็›ฎ๏ผŒๅ› ไธบๆ‚จๆ˜ฏๅ”ฏไธ€็š„ๆ‰€ๆœ‰่€…ใ€‚่ฏทๅ…ˆๅฐ†ๅฆไธ€ไธชๆˆๅ‘˜ๆๅ‡ไธบๆ‰€ๆœ‰่€…ใ€‚' }, invitationAlreadySent: { english: 'An invitation has already been sent to this email address.', @@ -2548,7 +3814,11 @@ export const localizations = { 'Um convite jรก foi enviado para este endereรงo de e-mail.', tok_pisin: 'Invitation i go pinis long dispela email adres.', indonesian: 'Undangan sudah dikirim ke alamat email ini.', - nepali: 'เคฏเฅ‹ เค‡เคฎเฅ‡เคฒ เค เฅ‡เค—เคพเคจเคพเคฎเคพ เคชเคนเคฟเคฒเฅ‡ เคจเฅˆ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเค เคพเค‡เคธเค•เคฟเคเค•เฅ‹ เค›เฅค' + nepali: 'เคฏเฅ‹ เค‡เคฎเฅ‡เคฒ เค เฅ‡เค—เคพเคจเคพเคฎเคพ เคชเคนเคฟเคฒเฅ‡ เคจเฅˆ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเค เคพเค‡เคธเค•เคฟเคเค•เฅ‹ เค›เฅค', + hindi: 'เค‡เคธ เคˆเคฎเฅ‡เคฒ เคชเคคเฅ‡ เคชเคฐ เคชเคนเคฒเฅ‡ เคธเฅ‡ เคนเฅ€ เคเค• เค†เคฎเค‚เคคเฅเคฐเคฃ เคญเฅ‡เคœเคพ เคœเคพ เคšเฅเค•เคพ เคนเฅˆเฅค', + burmese: 'แ€คแ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€œแ€ญแ€•แ€บแ€…แ€ฌแ€žแ€ญแ€ฏแ€ท แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€•แ€ญแ€ฏแ€ทแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹', + thai: 'เน„เธ”เน‰เธชเนˆเธ‡เธ„เธณเน€เธŠเธดเธเน„เธ›เธขเธฑเธ‡เธ—เธตเนˆเธญเธขเธนเนˆเธญเธตเน€เธกเธฅเธ™เธตเน‰เนเธฅเน‰เธง', + mandarin: 'ๅทฒๅ‘ๆญค็”ตๅญ้‚ฎไปถๅœฐๅ€ๅ‘้€ไบ†้‚€่ฏทใ€‚' }, invitationSent: { english: 'Invitation sent successfully', @@ -2556,7 +3826,11 @@ export const localizations = { brazilian_portuguese: 'Convite enviado com sucesso', tok_pisin: 'Invitation i go gut', indonesian: 'Undangan berhasil dikirim', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเค เคพเค‡เคฏเฅ‹' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเค เคพเค‡เคฏเฅ‹', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคญเฅ‡เคœเคพ เค—เคฏเคพ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€•แ€ญแ€ฏแ€ทแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธชเนˆเธ‡เธ„เธณเน€เธŠเธดเธเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '้‚€่ฏทๅ‘้€ๆˆๅŠŸ' }, expiredInvitation: { english: 'Expired', @@ -2564,7 +3838,11 @@ export const localizations = { brazilian_portuguese: 'Expirado', tok_pisin: 'Pinis', indonesian: 'Kedaluwarsa', - nepali: 'เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹' + nepali: 'เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹', + hindi: 'เคธเคฎเคพเคชเฅเคค', + burmese: 'แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธซเธกเธ”เธญเธฒเธขเธธ', + mandarin: 'ๅทฒ่ฟ‡ๆœŸ' }, declinedInvitation: { english: 'Declined', @@ -2572,7 +3850,11 @@ export const localizations = { brazilian_portuguese: 'Recusado', tok_pisin: 'Refusim', indonesian: 'Ditolak', - nepali: 'เค…เคธเฅเคตเฅ€เค•เฅƒเคค' + nepali: 'เค…เคธเฅเคตเฅ€เค•เฅƒเคค', + hindi: 'เค…เคธเฅเคตเฅ€เค•เฅƒเคค', + burmese: 'แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ›เธเธดเน€เธชเธ˜', + mandarin: 'ๅทฒๆ‹’็ป' }, withdrawnInvitation: { english: 'Withdrawn', @@ -2580,7 +3862,11 @@ export const localizations = { brazilian_portuguese: 'Retirado', tok_pisin: 'Rausim', indonesian: 'Ditarik', - nepali: 'เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเค‡เคเค•เฅ‹' + nepali: 'เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเค‡เคเค•เฅ‹', + hindi: 'เคตเคพเคชเคธ เคฒเคฟเคฏเคพ เค—เคฏเคพ', + burmese: 'แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€•แ€ผแ€ฎแ€ธ', + thai: 'เธ–เธญเธ™เนเธฅเน‰เธง', + mandarin: 'ๅทฒๆ’คๅ›ž' }, sending: { english: 'Sending...', @@ -2588,7 +3874,11 @@ export const localizations = { brazilian_portuguese: 'Enviando...', tok_pisin: 'Salim...', indonesian: 'Mengirim...', - nepali: 'เคชเค เคพเค‰เคเคฆเฅˆ...' + nepali: 'เคชเค เคพเค‰เคเคฆเฅˆ...', + hindi: 'เคญเฅ‡เคœ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€•แ€ญแ€ฏแ€ทแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธชเนˆเธ‡...', + mandarin: 'ๆญฃๅœจๅ‘้€...' }, failedToRemoveMember: { english: 'Failed to remove member', @@ -2596,7 +3886,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao remover membro', tok_pisin: 'I no inap rausim member', indonesian: 'Gagal menghapus anggota', - nepali: 'เคธเคฆเคธเฅเคฏ เคนเคŸเคพเค‰เคจ เค…เคธเคซเคฒ' + nepali: 'เคธเคฆเคธเฅเคฏ เคนเคŸเคพเค‰เคจ เค…เคธเคซเคฒ', + hindi: 'เคธเคฆเคธเฅเคฏ เคนเคŸเคพเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€€แ€ญแ€ฏ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแแ€™แ€›แ€•แ€ซ', + thai: 'เธฅเธšเธชเธกเธฒเธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '็งป้™คๆˆๅ‘˜ๅคฑ่ดฅ' }, failedToPromoteMember: { english: 'Failed to promote member', @@ -2604,7 +3898,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao promover membro', tok_pisin: 'I no inap promotim member', indonesian: 'Gagal mempromosikan anggota', - nepali: 'เคธเคฆเคธเฅเคฏเคฒเคพเคˆ เคชเฅเคฐเคฎเฅ‹เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคธเคฆเคธเฅเคฏเคฒเคพเคˆ เคชเฅเคฐเคฎเฅ‹เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคธเคฆเคธเฅเคฏ เค•เฅ‹ เคชเฅเคฐเฅ‹เคจเฅเคจเคค เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€€แ€ญแ€ฏ แ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เน€เธฅเธทเนˆเธญเธ™เธ•เธณเนเธซเธ™เนˆเธ‡เธชเธกเธฒเธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆๅ‡ๆˆๅ‘˜ๅคฑ่ดฅ' }, failedToLeaveProject: { english: 'Failed to leave project', @@ -2612,7 +3910,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao sair do projeto', tok_pisin: 'I no inap lusim project', indonesian: 'Gagal meninggalkan proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅ‹เคกเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เฅ‹เคกเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค›เฅ‹เคกเคผเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€พ แ€‘แ€ฝแ€€แ€บแแ€™แ€›แ€•แ€ซ', + thai: 'เธญเธญเธเธˆเธฒเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '็ฆปๅผ€้กน็›ฎๅคฑ่ดฅ' }, failedToWithdrawInvitation: { english: 'Failed to withdraw invitation', @@ -2620,7 +3922,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao retirar o convite', tok_pisin: 'I no inap rausim invitation', indonesian: 'Gagal menarik undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจ เค…เคธเคซเคฒ' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจ เค…เคธเคซเคฒ', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคตเคพเคชเคธ เคฒเฅ‡เคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแแ€™แ€›แ€•แ€ซ', + thai: 'เธ–เธญเธ™เธ„เธณเน€เธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆ’คๅ›ž้‚€่ฏทๅคฑ่ดฅ' }, failedToSendInvitation: { english: 'Failed to send invitation', @@ -2628,7 +3934,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao enviar o convite', tok_pisin: 'I no inap salim invitation', indonesian: 'Gagal mengirim undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเค เคพเค‰เคจ เค…เคธเคซเคฒ' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเค เคพเค‰เคจ เค…เคธเคซเคฒ', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคญเฅ‡เคœเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€•แ€ญแ€ฏแ€ทแแ€™แ€›แ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธ„เธณเน€เธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅ‘้€้‚€่ฏทๅคฑ่ดฅ' }, privateProject: { english: 'Private Project', @@ -2636,7 +3946,11 @@ export const localizations = { brazilian_portuguese: 'Projeto Privado', tok_pisin: 'Private Project', indonesian: 'Proyek Pribadi', - nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ' + nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ', + hindi: 'เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: '็งๆœ‰้กน็›ฎ' }, privateProjectDescription: { english: @@ -2650,7 +3964,13 @@ export const localizations = { indonesian: 'Proyek terbuka untuk dilihat oleh siapa saja, tetapi hanya anggota yang dapat berkontribusi.', nepali: - 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคœเฅ‹เคธเฅเค•เฅˆเคฒเฅ‡ เคนเฅ‡เคฐเฅเคจเค•เฅ‹ เคฒเคพเค—เคฟ เค–เฅเคฒเคพ เค›, เคคเคฐ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเฅ‡ เคฎเคพเคคเฅเคฐ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅเฅค' + 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคœเฅ‹เคธเฅเค•เฅˆเคฒเฅ‡ เคนเฅ‡เคฐเฅเคจเค•เฅ‹ เคฒเคพเค—เคฟ เค–เฅเคฒเคพ เค›, เคคเคฐ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเฅ‡ เคฎเคพเคคเฅเคฐ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅเฅค', + hindi: + 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เคฟเคธเฅ€ เค•เฅ‡ เคญเฅ€ เคฆเฅ‡เค–เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค–เฅเคฒเฅ€ เคนเฅˆ, เคฒเฅ‡เค•เคฟเคจ เค•เฅ‡เคตเคฒ เคธเคฆเคธเฅเคฏ เคนเฅ€ เคฏเฅ‹เค—เคฆเคพเคจ เคฆเฅ‡ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€™แ€Šแ€บแ€žแ€ฐแ€™แ€†แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌแ€บแ€œแ€Šแ€บแ€ธแŠ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€žแ€ฌ แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเน€เธ›เธดเธ”เนƒเธซเน‰เธ—เธธเธเธ„เธ™เธ”เธนเน„เธ”เน‰ เนเธ•เนˆเน€เธ‰เธžเธฒเธฐเธชเธกเธฒเธŠเธดเธเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™เธ—เธตเนˆเธชเธฒเธกเธฒเธฃเธ–เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเน„เธ”เน‰', + mandarin: '่ฏฅ้กน็›ฎๅฏนไปปไฝ•ไบบๅผ€ๆ”พๆŸฅ็œ‹๏ผŒไฝ†ๅชๆœ‰ๆˆๅ‘˜ๅฏไปฅ่ดก็Œฎใ€‚' }, privateProjectInfo: { english: @@ -2664,7 +3984,14 @@ export const localizations = { indonesian: 'Untuk berkontribusi pada proyek ini, Anda perlu meminta keanggotaan. Pemilik proyek akan meninjau permintaan Anda.', nepali: - 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ, เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคชเคฐเฅเค›เฅค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเคพเคฒเคฟเค•เคนเคฐเฅ‚เคฒเฅ‡ เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเฅ€เค•เฅเคทเคพ เค—เคฐเฅเคจเฅ‡เค›เคจเฅเฅค' + 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ, เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคชเคฐเฅเค›เฅค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเคพเคฒเคฟเค•เคนเคฐเฅ‚เคฒเฅ‡ เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเฅ€เค•เฅเคทเคพ เค—เคฐเฅเคจเฅ‡เค›เคจเฅเฅค', + hindi: + 'เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ เคฏเฅ‹เค—เคฆเคพเคจ เคฆเฅ‡เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค, เค†เคชเค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเคจเคพ เคนเฅ‹เค—เคพเฅค เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเคพเคฒเคฟเค• เค†เคชเค•เฅ‡ เค…เคจเฅเคฐเฅ‹เคง เค•เฅ€ เคธเคฎเฅ€เค•เฅเคทเคพ เค•เคฐเฅ‡เค‚เค—เฅ‡เฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€ญแ€ฏแ€ท แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€›แ€”แ€บแŠ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€›แ€™แ€Šแ€บแ‹ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€ แ€žแ€„แ€บแ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€…แ€ญแ€…แ€…แ€บแ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เน€เธžเธทเนˆเธญเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰ เธ„เธธเธ“เธ•เน‰เธญเธ‡เธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธ เน€เธˆเน‰เธฒเธ‚เธญเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเธˆเธฐเธ•เธฃเธงเธˆเธชเธญเธšเธ„เธณเธ‚เธญเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: + '่ฆไธบๆญค้กน็›ฎๅšๅ‡บ่ดก็Œฎ๏ผŒๆ‚จ้œ€่ฆ่ฏทๆฑ‚ๆˆๅ‘˜่ต„ๆ ผใ€‚้กน็›ฎๆ‰€ๆœ‰่€…ๅฐ†ๅฎกๆŸฅๆ‚จ็š„่ฏทๆฑ‚ใ€‚' }, privateProjectNotLoggedIn: { english: @@ -2677,7 +4004,14 @@ export const localizations = { 'Dispela i private project. Yu mas login pastaim long askim access.', indonesian: 'Ini adalah proyek pribadi. Anda harus masuk untuk meminta akses.', - nepali: 'เคฏเฅ‹ เคเค‰เคŸเคพ เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅ‹เฅค เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค' + nepali: + 'เคฏเฅ‹ เคเค‰เคŸเคพ เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅ‹เฅค เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: + 'เคฏเคน เคเค• เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคนเฅˆเฅค เคชเคนเฅเค‚เคš เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคฒเฅ‰เค— เค‡เคจ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพเฅค', + burmese: + 'แŽแ€„แ€บแ€ธแ€žแ€Šแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€…แ€บแ€แ€ฏ แ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€™แ€Šแ€บแ‹', + thai: 'เธ™เธตเนˆเธ„เธทเธญเน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธ‚เธญเธชเธดเธ—เธ˜เธดเนŒเน€เธ‚เน‰เธฒเธ–เธถเธ‡', + mandarin: '่ฟ™ๆ˜ฏไธ€ไธช็งๆœ‰้กน็›ฎใ€‚ๆ‚จๅฟ…้กป็™ปๅฝ•ๆ‰่ƒฝ่ฏทๆฑ‚่ฎฟ้—ฎใ€‚' }, privateProjectLoginRequired: { english: 'Please sign in to request membership to this private project.', @@ -2688,7 +4022,13 @@ export const localizations = { tok_pisin: 'Plis sign in long askim membership long dispela private project.', indonesian: 'Silakan masuk untuk meminta keanggotaan proyek pribadi ini.', - nepali: 'เค•เฅƒเคชเคฏเคพ เคฏเฅ‹ เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจ เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เค•เฅƒเคชเคฏเคพ เคฏเฅ‹ เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจ เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค•เฅƒเคชเคฏเคพ เค‡เคธ เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ เคธเคฆเคธเฅเคฏเคคเคพ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเคพเค‡เคจ เค‡เคจ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€คแ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€ญแ€ฏแ€ท แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€›แ€”แ€บ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€•แ€ซแ‹', + thai: 'เธเธฃเธธเธ“เธฒเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเนƒเธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธงเธ™เธตเน‰', + mandarin: '่ฏท็™ปๅฝ•ไปฅ่ฏทๆฑ‚ๆญค็งๆœ‰้กน็›ฎ็š„ๆˆๅ‘˜่ต„ๆ ผใ€‚' }, requestMembership: { english: 'Request Membership', @@ -2696,7 +4036,11 @@ export const localizations = { brazilian_portuguese: 'Solicitar Associaรงรฃo', tok_pisin: 'Askim Membership', indonesian: 'Minta Keanggotaan', - nepali: 'เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคฆเคธเฅเคฏเคคเคพ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซ', + thai: 'เธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธ', + mandarin: '่ฏทๆฑ‚ๆˆๅ‘˜่ต„ๆ ผ' }, requesting: { english: 'Requesting...', @@ -2704,7 +4048,11 @@ export const localizations = { brazilian_portuguese: 'Solicitando...', tok_pisin: 'Askim...', indonesian: 'Meminta...', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ‚เธญ...', + mandarin: 'ๆญฃๅœจ่ฏทๆฑ‚...' }, requestPending: { english: 'Request Pending', @@ -2712,7 +4060,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo Pendente', tok_pisin: 'Request i wet', indonesian: 'Permintaan Tertunda', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคฌเคพเคเค•เฅ€ เค›' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคฌเคพเคเค•เฅ€ เค›', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคฒเค‚เคฌเคฟเคค', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€†แ€ญแ€ฏแ€„แ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธ„เธณเธ‚เธญเธฃเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ', + mandarin: '่ฏทๆฑ‚ๅพ…ๅค„็†' }, requestPendingDescription: { english: 'Your membership request is pending review by the project owners.', @@ -2725,7 +4077,13 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda sedang menunggu tinjauan oleh pemilik proyek.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเคพเคฒเคฟเค•เคนเคฐเฅ‚เคฆเฅเคตเคพเคฐเคพ เคธเคฎเฅ€เค•เฅเคทเคพเค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคฟเคฐเคนเฅ‡เค•เฅ‹ เค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเคพเคฒเคฟเค•เคนเคฐเฅ‚เคฆเฅเคตเคพเคฐเคพ เคธเคฎเฅ€เค•เฅเคทเคพเค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคฟเคฐเคนเฅ‡เค•เฅ‹ เค›เฅค', + hindi: + 'เค†เคชเค•เคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเคพเคฒเคฟเค•เฅ‹เค‚ เคฆเฅเคตเคพเคฐเคพ เคธเคฎเฅ€เค•เฅเคทเคพ เค•เฅ‡ เคฒเคฟเค เคฒเค‚เคฌเคฟเคค เคนเฅˆเฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€ แ€…แ€ญแ€…แ€…แ€บแ€”แ€ฑแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธ‚เธญเธ‡เธ„เธธเธ“เธเธณเธฅเธฑเธ‡เธฃเธญเธเธฒเธฃเธ•เธฃเธงเธˆเธชเธญเธšเน‚เธ”เธขเน€เธˆเน‰เธฒเธ‚เธญเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: 'ๆ‚จ็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚ๆญฃๅœจ็ญ‰ๅพ…้กน็›ฎๆ‰€ๆœ‰่€…ๅฎกๆ ธใ€‚' }, withdrawRequest: { english: 'Withdraw Request', @@ -2733,7 +4091,11 @@ export const localizations = { brazilian_portuguese: 'Retirar Solicitaรงรฃo', tok_pisin: 'Rausim Request', indonesian: 'Tarik Permintaan', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคตเคพเคชเคธ เคฒเฅ‡เค‚', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€•แ€ซ', + thai: 'เธ–เธญเธ™เธ„เธณเธ‚เธญ', + mandarin: 'ๆ’คๅ›ž่ฏทๆฑ‚' }, withdrawing: { english: 'Withdrawing...', @@ -2741,7 +4103,11 @@ export const localizations = { brazilian_portuguese: 'Retirando...', tok_pisin: 'Rausim...', indonesian: 'Menarik...', - nepali: 'เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคเคฆเฅˆ...' + nepali: 'เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคเคฆเฅˆ...', + hindi: 'เคตเคพเคชเคธ เคฒเฅ‡ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ–เธญเธ™...', + mandarin: 'ๆญฃๅœจๆ’คๅ›ž...' }, confirmWithdraw: { english: 'Withdraw Request', @@ -2749,7 +4115,11 @@ export const localizations = { brazilian_portuguese: 'Retirar Solicitaรงรฃo', tok_pisin: 'Rausim Request', indonesian: 'Tarik Permintaan', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคตเคพเคชเคธ เคฒเฅ‡เค‚', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€•แ€ซ', + thai: 'เธ–เธญเธ™เธ„เธณเธ‚เธญ', + mandarin: 'ๆ’คๅ›ž่ฏทๆฑ‚' }, confirmWithdrawRequestMessage: { english: 'Are you sure you want to withdraw your membership request?', @@ -2758,7 +4128,11 @@ export const localizations = { 'Tem certeza de que deseja retirar sua solicitaรงรฃo de associaรงรฃo?', tok_pisin: 'Yu tru laik rausim membership request bilong yu?', indonesian: 'Apakah Anda yakin ingin menarik permintaan keanggotaan Anda?', - nepali: 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค›?' + nepali: 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค›?', + hindi: 'เค•เฅเคฏเคพ เค†เคช เคตเคพเค•เคˆ เค…เคชเคจเคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคตเคพเคชเคธ เคฒเฅ‡เคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚?', + burmese: 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€žแ€„แ€บแ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€œแ€ญแ€ฏแ€•แ€ซแ€žแ€œแ€ฌแ€ธ?', + thai: 'เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธ–เธญเธ™เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธ‚เธญเธ‡เธ„เธธเธ“?', + mandarin: 'ๆ‚จ็กฎๅฎš่ฆๆ’คๅ›žๆ‚จ็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚ๅ—๏ผŸ' }, requestWithdrawn: { english: 'Request withdrawn successfully', @@ -2766,7 +4140,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo retirada com sucesso', tok_pisin: 'Request i rausim gut', indonesian: 'Permintaan berhasil ditarik', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเค‡เคฏเฅ‹' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเค‡เคฏเฅ‹', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคตเคพเคชเคธ เคฒเคฟเคฏเคพ เค—เคฏเคพ', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ–เธญเธ™เธ„เธณเธ‚เธญเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '่ฏทๆฑ‚ๅทฒๆˆๅŠŸๆ’คๅ›ž' }, requestExpired: { english: 'Request Expired', @@ -2774,7 +4152,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo Expirada', tok_pisin: 'Request i pinis', indonesian: 'Permintaan Kedaluwarsa', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ„เธณเธ‚เธญเธซเธกเธ”เธญเธฒเธขเธธ', + mandarin: '่ฏทๆฑ‚ๅทฒ่ฟ‡ๆœŸ' }, requestExpiredDescription: { english: @@ -2788,7 +4170,13 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda telah kedaluwarsa. Anda dapat mengirim permintaan baru.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคจเคฏเคพเค เค…เคจเฅเคฐเฅ‹เคง เคชเฅ‡เคถ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคจเคฏเคพเค เค…เคจเฅเคฐเฅ‹เคง เคชเฅ‡เคถ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค†เคชเค•เคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เค—เคฏเคพ เคนเฅˆเฅค เค†เคช เคเค• เคจเคฏเคพ เค…เคจเฅเคฐเฅ‹เคง เคœเคฎเคพ เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€กแ€žแ€…แ€บแ€แ€…แ€บแ€แ€ฏ แ€•แ€ฑแ€ธแ€•แ€ญแ€ฏแ€ทแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธ‚เธญเธ‡เธ„เธธเธ“เธซเธกเธ”เธญเธฒเธขเธธเนเธฅเน‰เธง เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธชเนˆเธ‡เธ„เธณเธ‚เธญเนƒเธซเธกเนˆเน„เธ”เน‰', + mandarin: 'ๆ‚จ็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚ๅทฒ่ฟ‡ๆœŸใ€‚ๆ‚จๅฏไปฅๆไบคๆ–ฐ่ฏทๆฑ‚ใ€‚' }, requestAgain: { english: 'Request Again', @@ -2796,7 +4184,11 @@ export const localizations = { brazilian_portuguese: 'Solicitar Novamente', tok_pisin: 'Askim Gen', indonesian: 'Minta Lagi', - nepali: 'เคซเฅ‡เคฐเคฟ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคซเฅ‡เคฐเคฟ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคซเคฟเคฐ เคธเฅ‡ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเฅ‡เค‚', + burmese: 'แ€‘แ€•แ€บแ€™แ€ถ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซ', + thai: 'เธ‚เธญเธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๅ†ๆฌก่ฏทๆฑ‚' }, requestDeclined: { english: 'Request Declined', @@ -2804,7 +4196,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo Recusada', tok_pisin: 'Request i no', indonesian: 'Permintaan Ditolak', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เฅƒเคค' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เฅƒเคค', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เฅƒเคค', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ„เธณเธ‚เธญเธ–เธนเธเธ›เธเธดเน€เธชเธ˜', + mandarin: '่ฏทๆฑ‚ๅทฒๆ‹’็ป' }, requestDeclinedCanRetry: { english: @@ -2818,7 +4214,13 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda ditolak. Anda memiliki {attempts} percobaan lagi untuk meminta keanggotaan.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚เคธเคเค— เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจ {attempts} เคฅเคช เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚ เคฌเคพเคเค•เฅ€ เค›เคจเฅเฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚เคธเคเค— เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจ {attempts} เคฅเคช เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚ เคฌเคพเคเค•เฅ€ เค›เคจเฅเฅค', + hindi: + 'เค†เคชเค•เคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคฅเคพเฅค เค†เคชเค•เฅ‡ เคชเคพเคธ เคธเคฆเคธเฅเคฏเคคเคพ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค {attempts} เค”เคฐ เคชเฅเคฐเคฏเคพเคธ เคฌเคšเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€›แ€”แ€บ {attempts} แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ แ€›แ€พแ€ญแ€•แ€ซแ€žแ€ฑแ€ธแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธ›เธเธดเน€เธชเธ˜ เธ„เธธเธ“เธกเธตเน‚เธญเธเธฒเธชเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธญเธตเธ {attempts} เธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๆ‚จ็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚ๅทฒ่ขซๆ‹’็ปใ€‚ๆ‚จ่ฟ˜ๆœ‰ {attempts} ๆฌกๆœบไผš่ฏทๆฑ‚ๆˆๅ‘˜่ต„ๆ ผใ€‚' }, requestDeclinedNoRetry: { english: @@ -2832,7 +4234,13 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda ditolak dan Anda telah mencapai jumlah maksimum percobaan.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹ เคฐ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค…เคงเคฟเค•เคคเคฎ เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚เค•เฅ‹ เคธเฅ€เคฎเคพ เคชเฅเค—เคฟเคธเค•เฅเคจเฅเคญเคฏเฅ‹เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹ เคฐ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค…เคงเคฟเค•เคคเคฎ เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚เค•เฅ‹ เคธเฅ€เคฎเคพ เคชเฅเค—เคฟเคธเค•เฅเคจเฅเคญเคฏเฅ‹เฅค', + hindi: + 'เค†เคชเค•เคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคฅเคพ เค”เคฐ เค†เคชเคจเฅ‡ เค…เคงเคฟเค•เคคเคฎ เคชเฅเคฐเคฏเคพเคธเฅ‹เค‚ เค•เฅ€ เคธเฅ€เคฎเคพ เคชเคนเฅเค‚เคš เค—เคˆ เคนเฅˆเฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ แ€”แ€พแ€„แ€ทแ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€™แ€ปแ€ฌแ€ธแ€†แ€ฏแ€ถแ€ธ แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ แ€กแ€›แ€ฑแ€กแ€แ€ฝแ€€แ€บแ€žแ€ญแ€ฏแ€ท แ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€พแ€ญแ€•แ€ซแ€•แ€ผแ€ฎแ‹', + thai: 'เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธ›เธเธดเน€เธชเธ˜ เนเธฅเธฐเธ„เธธเธ“เธ–เธถเธ‡เธˆเธณเธ™เธงเธ™เธ„เธฃเธฑเน‰เธ‡เธชเธนเธ‡เธชเธธเธ”เนเธฅเน‰เธง', + mandarin: 'ๆ‚จ็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚ๅทฒ่ขซๆ‹’็ป๏ผŒๆ‚จๅทฒ่พพๅˆฐๆœ€ๅคงๅฐ่ฏ•ๆฌกๆ•ฐใ€‚' }, requestWithdrawnTitle: { english: 'Request Withdrawn', @@ -2840,7 +4248,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo Retirada', nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเค‡เคฏเฅ‹', tok_pisin: 'Request i Rausim', - indonesian: 'Permintaan Ditarik' + indonesian: 'Permintaan Ditarik', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคตเคพเคชเคธ เคฒเคฟเคฏเคพ เค—เคฏเคพ', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ–เธญเธ™เธ„เธณเธ‚เธญเนเธฅเน‰เธง', + mandarin: '่ฏทๆฑ‚ๅทฒๆ’คๅ›ž' }, requestWithdrawnDescription: { english: @@ -2854,7 +4266,13 @@ export const localizations = { indonesian: 'Anda telah menarik permintaan keanggotaan Anda. Anda dapat mengirim permintaan baru kapan saja.', nepali: - 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค†เคซเฅเคจเฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคœเฅเคจเคธเฅเค•เฅˆ เคธเคฎเคฏ เคจเคฏเคพเค เค…เคจเฅเคฐเฅ‹เคง เคชเฅ‡เคถ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค†เคซเฅเคจเฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคœเฅเคจเคธเฅเค•เฅˆ เคธเคฎเคฏ เคจเคฏเคพเค เค…เคจเฅเคฐเฅ‹เคง เคชเฅ‡เคถ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค†เคชเคจเฅ‡ เค…เคชเคจเคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคตเคพเคชเคธ เคฒเฅ‡ เคฒเคฟเคฏเคพ เคนเฅˆเฅค เค†เคช เค•เคฟเคธเฅ€ เคญเฅ€ เคธเคฎเคฏ เคเค• เคจเคฏเคพ เค…เคจเฅเคฐเฅ‹เคง เคœเคฎเคพ เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€žแ€„แ€บแ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บแ€™แ€†แ€ญแ€ฏ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€กแ€žแ€…แ€บแ€แ€…แ€บแ€แ€ฏ แ€•แ€ฑแ€ธแ€•แ€ญแ€ฏแ€ทแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธธเธ“เน„เธ”เน‰เธ–เธญเธ™เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเนเธฅเน‰เธง เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธชเนˆเธ‡เธ„เธณเธ‚เธญเนƒเธซเธกเนˆเน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ', + mandarin: 'ๆ‚จๅทฒๆ’คๅ›žๆ‚จ็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚ใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๆไบคๆ–ฐ่ฏทๆฑ‚ใ€‚' }, membershipRequestSent: { english: 'Membership request sent successfully', @@ -2862,7 +4280,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo de associaรงรฃo enviada com sucesso', tok_pisin: 'Membership request i go gut', indonesian: 'Permintaan keanggotaan berhasil dikirim', - nepali: 'เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเค เคพเค‡เคฏเฅ‹' + nepali: 'เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเค เคพเค‡เคฏเฅ‹', + hindi: 'เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคญเฅ‡เคœเคพ เค—เคฏเคพ', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€•แ€ฑแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธชเนˆเธ‡เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚ๅทฒๆˆๅŠŸๅ‘้€' }, failedToRequestMembership: { english: 'Failed to request membership', @@ -2870,7 +4292,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao solicitar associaรงรฃo', tok_pisin: 'I no inap askim membership', indonesian: 'Gagal meminta keanggotaan', - nepali: 'เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคธเคฆเคธเฅเคฏเคคเคพ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '่ฏทๆฑ‚ๆˆๅ‘˜่ต„ๆ ผๅคฑ่ดฅ' }, failedToWithdrawRequest: { english: 'Failed to withdraw request', @@ -2878,7 +4304,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao retirar a solicitaรงรฃo', tok_pisin: 'I no inap rausim request', indonesian: 'Gagal menarik permintaan', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจ เค…เคธเคซเคฒ' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจ เค…เคธเคซเคฒ', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคตเคพเคชเคธ เคฒเฅ‡เคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธ–เธญเธ™เธ„เธณเธ‚เธญเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆ’คๅ›ž่ฏทๆฑ‚ๅคฑ่ดฅ' }, goBack: { english: 'Go Back', @@ -2886,7 +4316,11 @@ export const localizations = { brazilian_portuguese: 'Voltar', tok_pisin: 'Go Bek', indonesian: 'Kembali', - nepali: 'เคชเค›เคพเคกเคฟ เคœเคพเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเค›เคพเคกเคฟ เคœเคพเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคตเคพเคชเคธ เคœเคพเคเค‚', + burmese: 'แ€•แ€ผแ€”แ€บแ€žแ€ฝแ€ฌแ€ธแ€•แ€ซ', + thai: 'เธเธฅเธฑเธš', + mandarin: '่ฟ”ๅ›ž' }, back: { english: 'Back', @@ -2894,7 +4328,11 @@ export const localizations = { brazilian_portuguese: 'Voltar', tok_pisin: 'Go Bek', indonesian: 'Kembali', - nepali: 'เคชเค›เคพเคกเคฟ' + nepali: 'เคชเค›เคพเคกเคฟ', + hindi: 'เคตเคพเคชเคธ', + burmese: 'แ€•แ€ผแ€”แ€บ', + thai: 'เธเธฅเธฑเธš', + mandarin: '่ฟ”ๅ›ž' }, confirmRemove: { english: 'Confirm Remove', @@ -2902,7 +4340,11 @@ export const localizations = { brazilian_portuguese: 'Confirmar Remoรงรฃo', tok_pisin: 'Confirm Rausim', indonesian: 'Konfirmasi Hapus', - nepali: 'เคนเคŸเคพเค‰เคจเฅ‡ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคนเคŸเคพเค‰เคจเฅ‡ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคนเคŸเคพเคจเฅ‡ เค•เฅ€ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + burmese: 'แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€›แ€”แ€บ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธขเธทเธ™เธขเธฑเธ™เธเธฒเธฃเธฅเธš', + mandarin: '็กฎ่ฎคๅˆ ้™ค' }, invitationResent: { english: 'Invitation resent successfully', @@ -2910,7 +4352,11 @@ export const localizations = { brazilian_portuguese: 'Convite reenviado com sucesso', tok_pisin: 'Invitation i salim gen gut', indonesian: 'Undangan berhasil dikirim ulang', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจ: เคชเค เคพเค‡เคฏเฅ‹' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจ: เคชเค เคพเค‡เคฏเฅ‹', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจเคƒ เคญเฅ‡เคœเคพ เค—เคฏเคพ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บ แ€•แ€ฑแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธชเนˆเธ‡เธ„เธณเน€เธŠเธดเธเธญเธตเธเธ„เธฃเธฑเน‰เธ‡เธชเธณเน€เธฃเน‡เธˆ', + mandarin: '้‚€่ฏทๅทฒๆˆๅŠŸ้‡ๆ–ฐๅ‘้€' }, maxInviteAttemptsReached: { english: 'Maximum invitation attempts reached for this email', @@ -2920,7 +4366,11 @@ export const localizations = { 'Nรบmero mรกximo de tentativas de convite atingido para este e-mail', tok_pisin: 'Maximum invitation chance i pinis long dispela email', indonesian: 'Percobaan undangan maksimum tercapai untuk email ini', - nepali: 'เคฏเฅ‹ เค‡เคฎเฅ‡เคฒเค•เฅ‹ เคฒเคพเค—เคฟ เค…เคงเคฟเค•เคคเคฎ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚เค•เฅ‹ เคธเฅ€เคฎเคพ เคชเฅเค—เฅเคฏเฅ‹' + nepali: 'เคฏเฅ‹ เค‡เคฎเฅ‡เคฒเค•เฅ‹ เคฒเคพเค—เคฟ เค…เคงเคฟเค•เคคเคฎ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚เค•เฅ‹ เคธเฅ€เคฎเคพ เคชเฅเค—เฅเคฏเฅ‹', + hindi: 'เค‡เคธ เคˆเคฎเฅ‡เคฒ เค•เฅ‡ เคฒเคฟเค เค…เคงเคฟเค•เคคเคฎ เค†เคฎเค‚เคคเฅเคฐเคฃ เคชเฅเคฐเคฏเคพเคธเฅ‹เค‚ เค•เฅ€ เคธเฅ€เคฎเคพ เคชเคนเฅเค‚เคš เค—เคˆ', + burmese: 'แ€คแ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€กแ€แ€ฝแ€€แ€บ แ€กแ€™แ€ปแ€ฌแ€ธแ€†แ€ฏแ€ถแ€ธ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ แ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€พแ€ญแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ–เธถเธ‡เธˆเธณเธ™เธงเธ™เธ„เธฃเธฑเน‰เธ‡เธชเธนเธ‡เธชเธธเธ”เธ‚เธญเธ‡เธเธฒเธฃเธชเนˆเธ‡เธ„เธณเน€เธŠเธดเธเธชเธณเธซเธฃเธฑเธšเธญเธตเน€เธกเธฅเธ™เธตเน‰เนเธฅเน‰เธง', + mandarin: 'ๆญค็”ตๅญ้‚ฎไปถ็š„ๆœ€ๅคง้‚€่ฏทๅฐ่ฏ•ๆฌกๆ•ฐๅทฒ่พพไธŠ้™' }, invitationAcceptedButDownloadFailed: { english: @@ -2934,7 +4384,13 @@ export const localizations = { indonesian: 'Undangan diterima, tetapi unduhan proyek gagal. Anda dapat mengunduhnya nanti dari halaman proyek.', nepali: - 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹, เคคเคฐ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคชเค›เคฟ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคชเฅƒเคทเฅเค เคฌเคพเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹, เคคเคฐ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคชเค›เคฟ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เคชเฅƒเคทเฅเค เคฌเคพเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฒเคฟเคฏเคพ เค—เคฏเคพ, เคฒเฅ‡เค•เคฟเคจ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคตเคฟเคซเคฒ เคฐเคนเคพเฅค เค†เคช เค‡เคธเฅ‡ เคฌเคพเคฆ เคฎเฅ‡เค‚ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚ เคชเฅƒเคทเฅเค  เคธเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ แ€œแ€€แ€บแ€แ€ถแ€•แ€ซแ€•แ€ผแ€ฎแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แŽแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€”แ€ฑแ€ฌแ€€แ€บแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ แ€…แ€ฌแ€™แ€ปแ€€แ€บแ€”แ€พแ€ฌแ€™แ€พ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธขเธญเธกเธฃเธฑเธšเธ„เธณเน€เธŠเธดเธเนเธฅเน‰เธง เนเธ•เนˆเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃเธฅเน‰เธกเน€เธซเธฅเธง เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธ”เน‰เธ เธฒเธขเธซเธฅเธฑเธ‡เธˆเธฒเธเธซเธ™เน‰เธฒเธ„เธณเน€เธŠเธดเธ', + mandarin: '้‚€่ฏทๅทฒๆŽฅๅ—๏ผŒไฝ†้กน็›ฎไธ‹่ฝฝๅคฑ่ดฅใ€‚ๆ‚จๅฏไปฅ็จๅŽไปŽ้กน็›ฎ้กต้ขไธ‹่ฝฝใ€‚' }, invitationAcceptedSuccess: { english: 'Invitation accepted successfully!', @@ -2942,7 +4398,11 @@ export const localizations = { brazilian_portuguese: 'Convite aceito com sucesso!', tok_pisin: 'Invitation i akseptim gut!', indonesian: 'Undangan berhasil diterima!', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹!' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹!', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฒเคฟเคฏเคพ เค—เคฏเคพ!', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€œแ€€แ€บแ€แ€ถแ€•แ€ซแ€•แ€ผแ€ฎ!', + thai: 'เธขเธญเธกเธฃเธฑเธšเธ„เธณเน€เธŠเธดเธเธชเธณเน€เธฃเน‡เธˆ!', + mandarin: '้‚€่ฏทๅทฒๆˆๅŠŸๆŽฅๅ—๏ผ' }, invitationDeclined: { english: 'Invitation declined.', @@ -2950,7 +4410,11 @@ export const localizations = { brazilian_portuguese: 'Convite recusado.', tok_pisin: 'Invitation i no.', indonesian: 'Undangan ditolak.', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เฅƒเคคเฅค' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เฅƒเคคเฅค', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฆเคฟเคฏเคพ เค—เคฏเคพเฅค', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเน€เธŠเธดเธ', + mandarin: '้‚€่ฏทๅทฒๆ‹’็ปใ€‚' }, joinRequest: { english: 'Join Request', @@ -2958,7 +4422,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo de Adesรฃo', tok_pisin: 'Join Request', indonesian: 'Permintaan Bergabung', - nepali: 'เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅ‡ เค…เคจเฅเคฐเฅ‹เคง' + nepali: 'เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅ‡ เค…เคจเฅเคฐเฅ‹เคง', + hindi: 'เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง', + burmese: 'แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ', + thai: 'เธ„เธณเธ‚เธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธก', + mandarin: 'ๅŠ ๅ…ฅ่ฏทๆฑ‚' }, privateProjectAccess: { english: 'Private Project Access', @@ -2966,7 +4434,11 @@ export const localizations = { brazilian_portuguese: 'Acesso ao Projeto Privado', tok_pisin: 'Private Project Access', indonesian: 'Akses Proyek Pribadi', - nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเคนเฅเคเคš' + nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเคนเฅเคเคš', + hindi: 'เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคชเคนเฅเค‚เคš', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ', + thai: 'เธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: '็งๆœ‰้กน็›ฎ่ฎฟ้—ฎ' }, privateProjectDownload: { english: 'Private Project Download', @@ -2974,7 +4446,11 @@ export const localizations = { brazilian_portuguese: 'Download de Projeto Privado', tok_pisin: 'Private Project Download', indonesian: 'Unduh Proyek Pribadi', - nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก' + nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก', + hindi: 'เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บ', + thai: 'เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: '็งๆœ‰้กน็›ฎไธ‹่ฝฝ' }, privateProjectDownloadMessage: { english: @@ -2988,7 +4464,14 @@ export const localizations = { indonesian: 'Proyek ini pribadi. Anda dapat mengunduh konten tetapi tidak akan dapat berkontribusi terjemahan atau suara. Minta akses untuk bergabung dengan proyek ini dan mulai berkontribusi.', nepali: - 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เคคเคชเคพเคˆเค‚ เคธเคพเคฎเค—เฅเคฐเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค› เคคเคฐ เค…เคจเฅเคตเคพเคฆ เคตเคพ เคฎเคคเคนเคฐเฅ‚ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเค•เฅเคทเคฎ เคนเฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคฐ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเฅเคฐเฅ เค—เคฐเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เคคเคชเคพเคˆเค‚ เคธเคพเคฎเค—เฅเคฐเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค› เคคเคฐ เค…เคจเฅเคตเคพเคฆ เคตเคพ เคฎเคคเคนเคฐเฅ‚ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเค•เฅเคทเคฎ เคนเฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคฐ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเฅเคฐเฅ เค—เคฐเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคฏเคน เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคœเฅ€ เคนเฅˆเฅค เค†เคช เคธเคพเคฎเค—เฅเคฐเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚ เคฒเฅ‡เค•เคฟเคจ เค…เคจเฅเคตเคพเคฆ เคฏเคพ เคตเฅ‹เคŸ เคฏเฅ‹เค—เคฆเคพเคจ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคธเค•เฅเคทเคฎ เคจเคนเฅ€เค‚ เคนเฅ‹เค‚เค—เฅ‡เฅค เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค”เคฐ เคฏเฅ‹เค—เคฆเคพเคจ เคถเฅเคฐเฅ‚ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคชเคนเฅเค‚เคš เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌแ€บแ€œแ€Šแ€บแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€™แ€ฒแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€•แ€ฑแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บ แ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ‹ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€”แ€พแ€„แ€ทแ€บ แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€•แ€ฑแ€ธแ€›แ€”แ€บ แ€…แ€แ€„แ€บแ€›แ€”แ€บ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน€เธ›เน‡เธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธ™เธทเน‰เธญเธซเธฒเน„เธ”เน‰ เนเธ•เนˆเธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™เธเธฒเธฃเนเธ›เธฅเธซเธฃเธทเธญเน‚เธซเธงเธ•เน„เธ”เน‰ เธ‚เธญเธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เนเธฅเธฐเน€เธฃเธดเนˆเธกเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธก', + mandarin: + 'ๆญค้กน็›ฎๆ˜ฏ็งๆœ‰็š„ใ€‚ๆ‚จๅฏไปฅไธ‹่ฝฝๅ†…ๅฎน๏ผŒไฝ†ๆ— ๆณ•่ดก็Œฎ็ฟป่ฏ‘ๆˆ–ๆŠ•็ฅจใ€‚่ฏทๆฑ‚่ฎฟ้—ฎไปฅๅŠ ๅ…ฅๆญค้กน็›ฎๅนถๅผ€ๅง‹่ดก็Œฎใ€‚' }, privateProjectEditing: { english: 'Private Project Editing', @@ -2996,7 +4479,11 @@ export const localizations = { brazilian_portuguese: 'Ediรงรฃo de Projeto Privado', tok_pisin: 'Private Project Editing', indonesian: 'Pengeditan Proyek Pribadi', - nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฎเฅเคชเคพเคฆเคจ' + nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฎเฅเคชเคพเคฆเคจ', + hindi: 'เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเค‚เคชเคพเคฆเคจ', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€แ€Šแ€บแ€ธแ€–แ€ผแ€แ€บแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธเธฒเธฃเนเธเน‰เน„เธ‚เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: '็งๆœ‰้กน็›ฎ็ผ–่พ‘' }, privateProjectEditingMessage: { english: @@ -3010,7 +4497,14 @@ export const localizations = { indonesian: 'Proyek ini pribadi. Anda perlu menjadi anggota untuk mengedit transkripsi. Minta akses untuk bergabung dengan proyek ini.', nepali: - 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคธเคฎเฅเคชเคพเคฆเคจ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคธเคฎเฅเคชเคพเคฆเคจ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคฏเคน เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคœเฅ€ เคนเฅˆเฅค เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคธเค‚เคชเคพเคฆเคฟเคค เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคธเคฆเคธเฅเคฏ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพเฅค เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคชเคนเฅเค‚เคš เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€…แ€ฌแ€žแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€Šแ€บแ€ธแ€–แ€ผแ€แ€บแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บ แ€–แ€ผแ€…แ€บแ€›แ€™แ€Šแ€บแ‹ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน€เธ›เน‡เธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเน€เธžเธทเนˆเธญเนเธเน‰เน„เธ‚เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธก เธ‚เธญเธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰', + mandarin: + 'ๆญค้กน็›ฎๆ˜ฏ็งๆœ‰็š„ใ€‚ๆ‚จ้œ€่ฆๆˆไธบๆˆๅ‘˜ๆ‰่ƒฝ็ผ–่พ‘่ฝฌๅฝ•ใ€‚่ฏทๆฑ‚่ฎฟ้—ฎไปฅๅŠ ๅ…ฅๆญค้กน็›ฎใ€‚' }, privateProjectGenericMessage: { english: @@ -3024,7 +4518,14 @@ export const localizations = { indonesian: 'Proyek ini pribadi. Anda perlu menjadi anggota untuk mengakses fitur ini. Minta akses untuk bergabung dengan proyek ini.', nepali: - 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เคฏเฅ‹ เคธเฅเคตเคฟเคงเคพ เคชเคนเฅเคเคš เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เคฏเฅ‹ เคธเฅเคตเคฟเคงเคพ เคชเคนเฅเคเคš เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคฏเคน เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคœเฅ€ เคนเฅˆเฅค เค‡เคธ เคธเฅเคตเคฟเคงเคพ เคคเค• เคชเคนเฅเค‚เคšเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคธเคฆเคธเฅเคฏ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพเฅค เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคชเคนเฅเค‚เคš เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€คแ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บ แ€–แ€ผแ€…แ€บแ€›แ€™แ€Šแ€บแ‹ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน€เธ›เน‡เธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธ–เธถเธ‡เธŸเธตเน€เธˆเธญเธฃเนŒเธ™เธตเน‰ เธ‚เธญเธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰', + mandarin: + 'ๆญค้กน็›ฎๆ˜ฏ็งๆœ‰็š„ใ€‚ๆ‚จ้œ€่ฆๆˆไธบๆˆๅ‘˜ๆ‰่ƒฝ่ฎฟ้—ฎๆญคๅŠŸ่ƒฝใ€‚่ฏทๆฑ‚่ฎฟ้—ฎไปฅๅŠ ๅ…ฅๆญค้กน็›ฎใ€‚' }, privateProjectMembers: { english: 'Private Project Members', @@ -3032,7 +4533,11 @@ export const localizations = { brazilian_portuguese: 'Membros do Projeto Privado', tok_pisin: 'Private Project Members', indonesian: 'Anggota Proyek Pribadi', - nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚' + nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚', + hindi: 'เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเคฆเคธเฅเคฏ', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธชเธกเธฒเธŠเธดเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: '็งๆœ‰้กน็›ฎๆˆๅ‘˜' }, privateProjectMembersMessage: { english: @@ -3046,7 +4551,13 @@ export const localizations = { indonesian: 'Anda perlu menjadi anggota untuk melihat daftar anggota dan mengirim undangan. Minta akses untuk bergabung dengan proyek ini.', nepali: - 'เคธเคฆเคธเฅเคฏ เคธเฅ‚เคšเฅ€ เคนเฅ‡เคฐเฅเคจ เคฐ เค†เคฎเคจเฅเคคเฅเคฐเคฃเคนเคฐเฅ‚ เคชเค เคพเค‰เคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคธเคฆเคธเฅเคฏ เคธเฅ‚เคšเฅ€ เคนเฅ‡เคฐเฅเคจ เคฐ เค†เคฎเคจเฅเคคเฅเคฐเคฃเคนเคฐเฅ‚ เคชเค เคพเค‰เคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคธเคฆเคธเฅเคฏ เคธเฅ‚เคšเฅ€ เคฆเฅ‡เค–เคจเฅ‡ เค”เคฐ เค†เคฎเค‚เคคเฅเคฐเคฃ เคญเฅ‡เคœเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคธเคฆเคธเฅเคฏ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพเฅค เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคชเคนเฅเค‚เคš เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€…แ€ฌแ€›แ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€›แ€”แ€บ แ€”แ€พแ€„แ€ทแ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌแ€™แ€ปแ€ฌแ€ธ แ€•แ€ฑแ€ธแ€•แ€ญแ€ฏแ€ทแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บ แ€–แ€ผแ€…แ€บแ€›แ€™แ€Šแ€บแ‹ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ‹', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเน€เธžเธทเนˆเธญเธ”เธนเธฃเธฒเธขเธŠเธทเนˆเธญเธชเธกเธฒเธŠเธดเธเนเธฅเธฐเธชเนˆเธ‡เธ„เธณเน€เธŠเธดเธ เธ‚เธญเธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰', + mandarin: 'ๆ‚จ้œ€่ฆๆˆไธบๆˆๅ‘˜ๆ‰่ƒฝๆŸฅ็œ‹ๆˆๅ‘˜ๅˆ—่กจๅนถๅ‘้€้‚€่ฏทใ€‚่ฏทๆฑ‚่ฎฟ้—ฎไปฅๅŠ ๅ…ฅๆญค้กน็›ฎใ€‚' }, privateProjectNotLoggedInInline: { english: 'You need to be logged in to access this private project.', @@ -3055,7 +4566,11 @@ export const localizations = { 'Vocรช precisa estar logado para acessar este projeto privado.', tok_pisin: 'Yu mas login pastaim long access dispela private project.', indonesian: 'Anda perlu masuk untuk mengakses proyek pribadi ini.', - nepali: 'เคฏเฅ‹ เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเคนเฅเคเคš เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค' + nepali: 'เคฏเฅ‹ เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเคนเฅเคเคš เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคฒเค— เค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: 'เค‡เคธ เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคคเค• เคชเคนเฅเค‚เคšเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคฒเฅ‰เค— เค‡เคจ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพเฅค', + burmese: 'แ€คแ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€™แ€Šแ€บแ‹', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธงเธ™เธตเน‰', + mandarin: 'ๆ‚จ้œ€่ฆ็™ปๅฝ•ๆ‰่ƒฝ่ฎฟ้—ฎๆญค็งๆœ‰้กน็›ฎใ€‚' }, privateProjectTranslation: { english: 'Private Project Translation', @@ -3063,7 +4578,11 @@ export const localizations = { brazilian_portuguese: 'Traduรงรฃo de Projeto Privado', tok_pisin: 'Private Project Translation', indonesian: 'Terjemahan Proyek Pribadi', - nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค…เคจเฅเคตเคพเคฆ' + nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค…เคจเฅเคตเคพเคฆ', + hindi: 'เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค…เคจเฅเคตเคพเคฆ', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธเธฒเธฃเนเธ›เธฅเน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: '็งๆœ‰้กน็›ฎ็ฟป่ฏ‘' }, privateProjectTranslationMessage: { english: @@ -3077,7 +4596,14 @@ export const localizations = { indonesian: 'Proyek ini pribadi. Anda perlu menjadi anggota untuk mengirim terjemahan. Minta akses untuk bergabung dengan proyek ini.', nepali: - 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚ เคชเฅ‡เคถ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚ เคชเฅ‡เคถ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคฏเคน เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคœเฅ€ เคนเฅˆเฅค เค…เคจเฅเคตเคพเคฆ เคœเคฎเคพ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคธเคฆเคธเฅเคฏ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพเฅค เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคชเคนเฅเค‚เคš เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€ฑแ€ธแ€•แ€ญแ€ฏแ€ทแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บ แ€–แ€ผแ€…แ€บแ€›แ€™แ€Šแ€บแ‹ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน€เธ›เน‡เธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเน€เธžเธทเนˆเธญเธชเนˆเธ‡เธเธฒเธฃเนเธ›เธฅ เธ‚เธญเธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰', + mandarin: + 'ๆญค้กน็›ฎๆ˜ฏ็งๆœ‰็š„ใ€‚ๆ‚จ้œ€่ฆๆˆไธบๆˆๅ‘˜ๆ‰่ƒฝๆไบค็ฟป่ฏ‘ใ€‚่ฏทๆฑ‚่ฎฟ้—ฎไปฅๅŠ ๅ…ฅๆญค้กน็›ฎใ€‚' }, privateProjectVoting: { english: 'Private Project Voting', @@ -3085,7 +4611,11 @@ export const localizations = { brazilian_portuguese: 'Votaรงรฃo de Projeto Privado', tok_pisin: 'Private Project Voting', indonesian: 'Pemungutan Suara Proyek Pribadi', - nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเคคเคฆเคพเคจ' + nepali: 'เคจเคฟเคœเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเคคเคฆเคพเคจ', + hindi: 'เคจเคฟเคœเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเคคเคฆเคพเคจ', + burmese: 'แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€™แ€ฒแ€•แ€ฑแ€ธแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธเธฒเธฃเน‚เธซเธงเธ•เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: '็งๆœ‰้กน็›ฎๆŠ•็ฅจ' }, privateProjectVotingMessage: { english: @@ -3099,7 +4629,14 @@ export const localizations = { indonesian: 'Proyek ini pribadi. Anda perlu menjadi anggota untuk memilih terjemahan. Minta akses untuk bergabung dengan proyek ini.', nepali: - 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚เคฎเคพ เคฎเคคเคฆเคพเคจ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เค›เฅค เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚เคฎเคพ เคฎเคคเคฆเคพเคจ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เคธเคฆเคธเฅเคฏ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เคชเคนเฅเคเคš เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคฏเคน เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคœเฅ€ เคนเฅˆเฅค เค…เคจเฅเคตเคพเคฆเฅ‹เค‚ เคชเคฐ เคฎเคคเคฆเคพเคจ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เคธเคฆเคธเฅเคฏ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพเฅค เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคชเคนเฅเค‚เคš เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€แ€ฝแ€„แ€บ แ€™แ€ฒแ€•แ€ฑแ€ธแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บ แ€–แ€ผแ€…แ€บแ€›แ€™แ€Šแ€บแ‹ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน€เธ›เน‡เธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃเธชเนˆเธงเธ™เธ•เธฑเธง เธ„เธธเธ“เธ•เน‰เธญเธ‡เน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเน€เธžเธทเนˆเธญเน‚เธซเธงเธ•เธเธฒเธฃเนเธ›เธฅ เธ‚เธญเธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰', + mandarin: + 'ๆญค้กน็›ฎๆ˜ฏ็งๆœ‰็š„ใ€‚ๆ‚จ้œ€่ฆๆˆไธบๆˆๅ‘˜ๆ‰่ƒฝๅฏน็ฟป่ฏ‘่ฟ›่กŒๆŠ•็ฅจใ€‚่ฏทๆฑ‚่ฎฟ้—ฎไปฅๅŠ ๅ…ฅๆญค้กน็›ฎใ€‚' }, projectInvitation: { english: 'Project Invitation', @@ -3107,7 +4644,11 @@ export const localizations = { brazilian_portuguese: 'Convite para o Projeto', tok_pisin: 'Project Invitation', indonesian: 'Undangan Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค†เคฎเคจเฅเคคเฅเคฐเคฃ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค†เคฎเคจเฅเคคเฅเคฐเคฃ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค†เคฎเค‚เคคเฅเคฐเคฃ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ', + thai: 'เธ„เธณเน€เธŠเธดเธเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้กน็›ฎ้‚€่ฏท' }, projectInvitationFrom: { english: '{sender} has invited you to join project "{project}" as {role}', @@ -3120,7 +4661,13 @@ export const localizations = { indonesian: '{sender} mengundang Anda untuk bergabung dengan proyek "{project}" sebagai {role}', nepali: - '{sender} เคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเคพเคˆ "{project}" เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค—เคฐเฅเคจเฅเคญเคฏเฅ‹' + '{sender} เคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเคพเคˆ "{project}" เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค—เคฐเฅเคจเฅเคญเคฏเฅ‹', + hindi: + '{sender} เคจเฅ‡ เค†เคชเค•เฅ‹ "{project}" เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ {role} เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฟเคฏเคพ เคนเฅˆ', + burmese: + '{sender} แ€žแ€Šแ€บ แ€žแ€„แ€ทแ€บแ€กแ€ฌแ€ธ "{project}" แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ {role} แ€กแ€–แ€ผแ€…แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: '{sender} เน„เธ”เน‰เน€เธŠเธดเธเธ„เธธเธ“เน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃ "{project}" เนƒเธ™เธเธฒเธ™เธฐ {role}', + mandarin: '{sender} ๅทฒ้‚€่ฏทๆ‚จไปฅ {role} ่บซไปฝๅŠ ๅ…ฅ้กน็›ฎ "{project}"' }, projectJoinRequestFrom: { english: '{sender} has requested to join project "{project}" as {role}', @@ -3129,7 +4676,13 @@ export const localizations = { brazilian_portuguese: '{sender} solicitou participar do projeto "{project}" como {role}', nepali: - '{sender} เคฒเฅ‡ "{project}" เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคญเคฏเฅ‹' + '{sender} เคฒเฅ‡ "{project}" เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคญเคฏเฅ‹', + hindi: + '{sender} เคจเฅ‡ "{project}" เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเฅ‡เค‚ {role} เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฟเคฏเคพ เคนเฅˆ', + burmese: + '{sender} แ€žแ€Šแ€บ "{project}" แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ {role} แ€กแ€–แ€ผแ€…แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ', + thai: '{sender} เน„เธ”เน‰เธ‚เธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃ "{project}" เนƒเธ™เธเธฒเธ™เธฐ {role}', + mandarin: '{sender} ๅทฒ่ฏทๆฑ‚ไปฅ {role} ่บซไปฝๅŠ ๅ…ฅ้กน็›ฎ "{project}"' }, projectWillRemainDownloaded: { english: 'Project will remain downloaded', @@ -3137,7 +4690,11 @@ export const localizations = { brazilian_portuguese: 'O projeto permanecerรก baixado', tok_pisin: 'Project i pinis download', indonesian: 'Proyek akan tetap diunduh', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคเค•เฅ‹ เคฐเคนเคจเฅ‡เค›' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคเค•เฅ‹ เคฐเคนเคจเฅ‡เค›', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เฅ€ เคนเฅเคˆ เคฐเคนเฅ‡เค—เฅ€', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€ทแ€บ แ€กแ€แ€ญแ€ฏแ€„แ€บแ€ธ แ€›แ€พแ€ญแ€”แ€ฑแ€™แ€Šแ€บ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธˆเธฐเธขเธฑเธ‡เธ„เธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธญเธขเธนเนˆ', + mandarin: '้กน็›ฎๅฐ†ไฟๆŒๅทฒไธ‹่ฝฝ็Šถๆ€' }, requestExpiredAttemptsRemaining: { english: @@ -3151,7 +4708,13 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda telah kedaluwarsa setelah 7 hari. Anda memiliki {attempts} percobaan{plural} tersisa.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เฅญ เคฆเคฟเคจ เคชเค›เคฟ เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚เคธเคเค— {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคพเคเค•เฅ€ เค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เฅญ เคฆเคฟเคจ เคชเค›เคฟ เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚เคธเคเค— {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคพเคเค•เฅ€ เค›เฅค', + hindi: + 'เค†เคชเค•เคพ เค…เคจเฅเคฐเฅ‹เคง 7 เคฆเคฟเคจเฅ‹เค‚ เค•เฅ‡ เคฌเคพเคฆ เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เค—เคฏเคพเฅค เค†เคชเค•เฅ‡ เคชเคพเคธ {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคšเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ 7 แ€›แ€€แ€บแ€กแ€€แ€ผแ€ฌแ€แ€ฝแ€„แ€บ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€žแ€„แ€ทแ€บแ€แ€ฝแ€„แ€บ {attempts} แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ{plural} แ€›แ€พแ€ญแ€•แ€ซแ€žแ€ฑแ€ธแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธณเธ‚เธญเธ‚เธญเธ‡เธ„เธธเธ“เธซเธกเธ”เธญเธฒเธขเธธเธซเธฅเธฑเธ‡เธˆเธฒเธ 7 เธงเธฑเธ™ เธ„เธธเธ“เธกเธตเน‚เธญเธเธฒเธชเธญเธตเธ {attempts} เธ„เธฃเธฑเน‰เธ‡{plural}', + mandarin: 'ๆ‚จ็š„่ฏทๆฑ‚ๅœจ 7 ๅคฉๅŽๅทฒ่ฟ‡ๆœŸใ€‚ๆ‚จ่ฟ˜ๆœ‰ {attempts} ๆฌก{plural}ๅฐ่ฏ•ๆœบไผšใ€‚' }, requestExpiredInline: { english: @@ -3165,7 +4728,14 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda sebelumnya telah kedaluwarsa setelah 7 hari. Anda memiliki {attempts} percobaan{plural} tersisa.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เค˜เคฟเคฒเฅเคฒเฅ‹ เค…เคจเฅเคฐเฅ‹เคง เฅญ เคฆเคฟเคจ เคชเค›เคฟ เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚เคธเคเค— {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคพเคเค•เฅ€ เค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เค˜เคฟเคฒเฅเคฒเฅ‹ เค…เคจเฅเคฐเฅ‹เคง เฅญ เคฆเคฟเคจ เคชเค›เคฟ เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚เคธเคเค— {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคพเคเค•เฅ€ เค›เฅค', + hindi: + 'เค†เคชเค•เคพ เคชเคฟเค›เคฒเคพ เค…เคจเฅเคฐเฅ‹เคง 7 เคฆเคฟเคจเฅ‹เค‚ เค•เฅ‡ เคฌเคพเคฆ เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เค—เคฏเคพเฅค เค†เคชเค•เฅ‡ เคชเคพเคธ {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคšเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€šแ€แ€„แ€บแ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ 7 แ€›แ€€แ€บแ€กแ€€แ€ผแ€ฌแ€แ€ฝแ€„แ€บ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€žแ€„แ€ทแ€บแ€แ€ฝแ€„แ€บ {attempts} แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ{plural} แ€›แ€พแ€ญแ€•แ€ซแ€žแ€ฑแ€ธแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธณเธ‚เธญเธเนˆเธญเธ™เธซเธ™เน‰เธฒเธ‚เธญเธ‡เธ„เธธเธ“เธซเธกเธ”เธญเธฒเธขเธธเธซเธฅเธฑเธ‡เธˆเธฒเธ 7 เธงเธฑเธ™ เธ„เธธเธ“เธกเธตเน‚เธญเธเธฒเธชเธญเธตเธ {attempts} เธ„เธฃเธฑเน‰เธ‡{plural}', + mandarin: + 'ๆ‚จไน‹ๅ‰็š„่ฏทๆฑ‚ๅœจ 7 ๅคฉๅŽๅทฒ่ฟ‡ๆœŸใ€‚ๆ‚จ่ฟ˜ๆœ‰ {attempts} ๆฌก{plural}ๅฐ่ฏ•ๆœบไผšใ€‚' }, requestExpiredNoAttempts: { english: 'Your request expired and you have no more attempts remaining.', @@ -3176,7 +4746,12 @@ export const localizations = { 'Membership request bilong yu i pinis na yu no gat moa chance long attempt.', indonesian: 'Permintaan keanggotaan Anda telah kedaluwarsa dan Anda tidak memiliki percobaan tersisa.', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹ เคฐ เคคเคชเคพเคˆเค‚เคธเคเค— เคฅเคช เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚ เคฌเคพเคเค•เฅ€ เค›เฅˆเคจเฅค' + nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹ เคฐ เคคเคชเคพเคˆเค‚เคธเคเค— เคฅเคช เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚ เคฌเคพเคเค•เฅ€ เค›เฅˆเคจเฅค', + hindi: 'เค†เคชเค•เคพ เค…เคจเฅเคฐเฅ‹เคง เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เค—เคฏเคพ เค”เคฐ เค†เคชเค•เฅ‡ เคชเคพเคธ เค•เฅ‹เคˆ เค”เคฐ เคชเฅเคฐเคฏเคพเคธ เคจเคนเฅ€เค‚ เคฌเคšเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ แ€”แ€พแ€„แ€ทแ€บ แ€žแ€„แ€ทแ€บแ€แ€ฝแ€„แ€บ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ แ€™แ€›แ€พแ€ญแ€แ€ฑแ€ฌแ€ทแ€•แ€ซแ‹', + thai: 'เธ„เธณเธ‚เธญเธ‚เธญเธ‡เธ„เธธเธ“เธซเธกเธ”เธญเธฒเธขเธธเนเธฅเน‰เธง เนเธฅเธฐเธ„เธธเธ“เน„เธกเนˆเธกเธตเน‚เธญเธเธฒเธชเน€เธซเธฅเธทเธญเธญเธตเธ', + mandarin: 'ๆ‚จ็š„่ฏทๆฑ‚ๅทฒ่ฟ‡ๆœŸ๏ผŒๆ‚จๆฒกๆœ‰ๆ›ดๅคšๅฐ่ฏ•ๆœบไผšไบ†ใ€‚' }, requestExpiredNoAttemptsInline: { english: @@ -3190,7 +4765,13 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda sebelumnya telah kedaluwarsa setelah 7 hari dan Anda tidak memiliki percobaan tersisa.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เค˜เคฟเคฒเฅเคฒเฅ‹ เค…เคจเฅเคฐเฅ‹เคง เฅญ เคฆเคฟเคจ เคชเค›เคฟ เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹ เคฐ เคคเคชเคพเคˆเค‚เคธเคเค— เคฅเคช เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚ เคฌเคพเคเค•เฅ€ เค›เฅˆเคจเฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เค˜เคฟเคฒเฅเคฒเฅ‹ เค…เคจเฅเคฐเฅ‹เคง เฅญ เคฆเคฟเคจ เคชเค›เคฟ เคธเคฎเคพเคชเฅเคค เคญเคฏเฅ‹ เคฐ เคคเคชเคพเคˆเค‚เคธเคเค— เคฅเคช เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚ เคฌเคพเคเค•เฅ€ เค›เฅˆเคจเฅค', + hindi: + 'เค†เคชเค•เคพ เคชเคฟเค›เคฒเคพ เค…เคจเฅเคฐเฅ‹เคง 7 เคฆเคฟเคจเฅ‹เค‚ เค•เฅ‡ เคฌเคพเคฆ เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เค—เคฏเคพ เค”เคฐ เค†เคชเค•เฅ‡ เคชเคพเคธ เค•เฅ‹เคˆ เค”เคฐ เคชเฅเคฐเคฏเคพเคธ เคจเคนเฅ€เค‚ เคฌเคšเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€šแ€แ€„แ€บแ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ 7 แ€›แ€€แ€บแ€กแ€€แ€ผแ€ฌแ€แ€ฝแ€„แ€บ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ แ€”แ€พแ€„แ€ทแ€บ แ€žแ€„แ€ทแ€บแ€แ€ฝแ€„แ€บ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ แ€™แ€›แ€พแ€ญแ€แ€ฑแ€ฌแ€ทแ€•แ€ซแ‹', + thai: 'เธ„เธณเธ‚เธญเธเนˆเธญเธ™เธซเธ™เน‰เธฒเธ‚เธญเธ‡เธ„เธธเธ“เธซเธกเธ”เธญเธฒเธขเธธเธซเธฅเธฑเธ‡เธˆเธฒเธ 7 เธงเธฑเธ™ เนเธฅเธฐเธ„เธธเธ“เน„เธกเนˆเธกเธตเน‚เธญเธเธฒเธชเน€เธซเธฅเธทเธญเธญเธตเธ', + mandarin: 'ๆ‚จไน‹ๅ‰็š„่ฏทๆฑ‚ๅœจ 7 ๅคฉๅŽๅทฒ่ฟ‡ๆœŸ๏ผŒๆ‚จๆฒกๆœ‰ๆ›ดๅคšๅฐ่ฏ•ๆœบไผšไบ†ใ€‚' }, requestPendingInline: { english: @@ -3204,7 +4785,13 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda sedang menunggu persetujuan. Anda akan diberitahu ketika sudah diperiksa.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคคเคฟเค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคฟเคฐเคนเฅ‡เค•เฅ‹ เค›เฅค เคฏเคธเค•เฅ‹ เคธเคฎเฅ€เค•เฅเคทเคพ เคนเฅเคเคฆเคพ เคคเคชเคพเคˆเค‚เคฒเคพเคˆ เคธเฅ‚เคšเคฟเคค เค—เคฐเคฟเคจเฅ‡เค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคคเคฟเค•เฅ‹ เคฒเคพเค—เคฟ เคชเคฐเฅเค–เคฟเคฐเคนเฅ‡เค•เฅ‹ เค›เฅค เคฏเคธเค•เฅ‹ เคธเคฎเฅ€เค•เฅเคทเคพ เคนเฅเคเคฆเคพ เคคเคชเคพเคˆเค‚เคฒเคพเคˆ เคธเฅ‚เคšเคฟเคค เค—เคฐเคฟเคจเฅ‡เค›เฅค', + hindi: + 'เค†เคชเค•เคพ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคคเคฟ เค•เฅ‡ เคฒเคฟเค เคฒเค‚เคฌเคฟเคค เคนเฅˆเฅค เค‡เคธเค•เฅ€ เคธเคฎเฅ€เค•เฅเคทเคพ เคนเฅ‹เคจเฅ‡ เคชเคฐ เค†เคชเค•เฅ‹ เคธเฅ‚เคšเคฟเคค เค•เคฟเคฏเคพ เคœเคพเคเค—เคพเฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€†แ€ญแ€ฏแ€„แ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บแ‹ แŽแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€…แ€ญแ€…แ€…แ€บแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€žแ€„แ€บแ€กแ€ฌแ€ธ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธ‚เธญเธ‡เธ„เธธเธ“เธเธณเธฅเธฑเธ‡เธฃเธญเธเธฒเธฃเธญเธ™เธธเธกเธฑเธ•เธด เธ„เธธเธ“เธˆเธฐเน„เธ”เน‰เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เน€เธกเธทเนˆเธญเธกเธตเธเธฒเธฃเธ•เธฃเธงเธˆเธชเธญเธš', + mandarin: 'ๆ‚จ็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚ๆญฃๅœจ็ญ‰ๅพ…ๆ‰นๅ‡†ใ€‚ๅฎกๆ ธๆ—ถๆ‚จๅฐ†ๆ”ถๅˆฐ้€š็Ÿฅใ€‚' }, requestDeclinedInline: { english: @@ -3218,7 +4805,13 @@ export const localizations = { indonesian: 'Permintaan keanggotaan Anda ditolak. Anda memiliki {attempts} percobaan{plural} tersisa.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚เคธเคเค— {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคพเคเค•เฅ€ เค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚เคธเคเค— {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคพเคเค•เฅ€ เค›เฅค', + hindi: + 'เค†เคชเค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคฅเคพเฅค เค†เคชเค•เฅ‡ เคชเคพเคธ {attempts} เคชเฅเคฐเคฏเคพเคธ{plural} เคฌเคšเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€žแ€„แ€ทแ€บแ€แ€ฝแ€„แ€บ {attempts} แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ{plural} แ€›แ€พแ€ญแ€•แ€ซแ€žแ€ฑแ€ธแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธณเธ‚เธญเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธ›เธเธดเน€เธชเธ˜ เธ„เธธเธ“เธกเธตเน‚เธญเธเธฒเธชเธญเธตเธ {attempts} เธ„เธฃเธฑเน‰เธ‡{plural}', + mandarin: 'ๆ‚จ็š„่ฏทๆฑ‚ๅทฒ่ขซๆ‹’็ปใ€‚ๆ‚จ่ฟ˜ๆœ‰ {attempts} ๆฌก{plural}ๅฐ่ฏ•ๆœบไผšใ€‚' }, requestDeclinedNoRetryInline: { english: @@ -3230,7 +4823,13 @@ export const localizations = { 'Membership request bilong yu i no na yu no gat moa chance long attempt.', indonesian: 'Permintaan keanggotaan Anda ditolak dan Anda tidak memiliki percobaan tersisa.', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹ เคฐ เคคเคชเคพเคˆเค‚เคธเคเค— เคฅเคช เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚ เคฌเคพเคเค•เฅ€ เค›เฅˆเคจเฅค' + nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹ เคฐ เคคเคชเคพเคˆเค‚เคธเคเค— เคฅเคช เคชเฅเคฐเคฏเคพเคธเคนเคฐเฅ‚ เคฌเคพเคเค•เฅ€ เค›เฅˆเคจเฅค', + hindi: + 'เค†เคชเค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคฅเคพ เค”เคฐ เค†เคชเค•เฅ‡ เคชเคพเคธ เค•เฅ‹เคˆ เค”เคฐ เคชเฅเคฐเคฏเคพเคธ เคจเคนเฅ€เค‚ เคฌเคšเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ แ€”แ€พแ€„แ€ทแ€บ แ€žแ€„แ€ทแ€บแ€แ€ฝแ€„แ€บ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€แ€ฝแ€„แ€ทแ€บ แ€™แ€›แ€พแ€ญแ€แ€ฑแ€ฌแ€ทแ€•แ€ซแ‹', + thai: 'เธ„เธณเธ‚เธญเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธ›เธเธดเน€เธชเธ˜ เนเธฅเธฐเธ„เธธเธ“เน„เธกเนˆเธกเธตเน‚เธญเธเธฒเธชเน€เธซเธฅเธทเธญเธญเธตเธ', + mandarin: 'ๆ‚จ็š„่ฏทๆฑ‚ๅทฒ่ขซๆ‹’็ป๏ผŒๆ‚จๆฒกๆœ‰ๆ›ดๅคšๅฐ่ฏ•ๆœบไผšไบ†ใ€‚' }, requestWithdrawnInline: { english: @@ -3244,7 +4843,13 @@ export const localizations = { indonesian: 'Anda telah menarik permintaan keanggotaan Anda sebelumnya. Anda dapat mengirim permintaan baru kapan saja.', nepali: - 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค†เคซเฅเคจเฅ‹ เค…เค˜เคฟเคฒเฅเคฒเฅ‹ เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เคจเคฏเคพเค เค…เคจเฅเคฐเฅ‹เคง เคชเค เคพเค‰เคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค†เคซเฅเคจเฅ‹ เค…เค˜เคฟเคฒเฅเคฒเฅ‹ เค…เคจเฅเคฐเฅ‹เคง เคซเคฟเคฐเฅเคคเคพ เคฒเคฟเคจเฅเคญเคฏเฅ‹เฅค เคคเคชเคพเคˆเค‚ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เคจเคฏเคพเค เค…เคจเฅเคฐเฅ‹เคง เคชเค เคพเค‰เคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค†เคชเคจเฅ‡ เค…เคชเคจเคพ เคชเคฟเค›เคฒเคพ เค…เคจเฅเคฐเฅ‹เคง เคตเคพเคชเคธ เคฒเฅ‡ เคฒเคฟเคฏเคพ เคนเฅˆเฅค เค†เคช เค•เคฟเคธเฅ€ เคญเฅ€ เคธเคฎเคฏ เคเค• เคจเคฏเคพ เค…เคจเฅเคฐเฅ‹เคง เคญเฅ‡เคœ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€žแ€„แ€บแ แ€šแ€แ€„แ€บแ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€›แ€ฏแ€•แ€บแ€žแ€ญแ€™แ€บแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บแ€™แ€†แ€ญแ€ฏ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€กแ€žแ€…แ€บแ€แ€…แ€บแ€แ€ฏ แ€•แ€ฑแ€ธแ€•แ€ญแ€ฏแ€ทแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธธเธ“เน„เธ”เน‰เธ–เธญเธ™เธ„เธณเธ‚เธญเธเนˆเธญเธ™เธซเธ™เน‰เธฒเนเธฅเน‰เธง เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธชเนˆเธ‡เธ„เธณเธ‚เธญเนƒเธซเธกเนˆเน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ', + mandarin: 'ๆ‚จๅทฒๆ’คๅ›žไน‹ๅ‰็š„่ฏทๆฑ‚ใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๅ‘้€ๆ–ฐ่ฏทๆฑ‚ใ€‚' }, viewProject: { english: 'View Project', @@ -3252,7 +4857,11 @@ export const localizations = { brazilian_portuguese: 'Ver Projeto', tok_pisin: 'View Project', indonesian: 'Lihat Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฆเฅ‡เค–เฅ‡เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€•แ€ซ', + thai: 'เธ”เธนเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: 'ๆŸฅ็œ‹้กน็›ฎ' }, loadingProjectDetails: { english: 'Loading project details...', @@ -3260,7 +4869,11 @@ export const localizations = { brazilian_portuguese: 'Carregando detalhes do projeto...', tok_pisin: 'Loadim project details...', indonesian: 'Memuat detail proyek...', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคตเคฟเคตเคฐเคฃ เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคตเคฟเคตเคฐเคฃ เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคตเคฟเคตเคฐเคฃ เคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€กแ€žแ€ฑแ€ธแ€…แ€ญแ€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เน‚เธซเธฅเธ”เธฃเธฒเธขเธฅเธฐเน€เธญเธตเธขเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃ...', + mandarin: 'ๆญฃๅœจๅŠ ่ฝฝ้กน็›ฎ่ฏฆๆƒ…...' }, onlyOwnersCanInvite: { english: 'Only project owners can invite new members', @@ -3270,7 +4883,11 @@ export const localizations = { 'Apenas proprietรกrios do projeto podem convidar novos membros', tok_pisin: 'Only owner i project i salim member', indonesian: 'Hanya pemilik proyek yang dapat mengundang anggota baru', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเคพเคฒเคฟเค•เคนเคฐเฅ‚เคฒเฅ‡ เคฎเคพเคคเฅเคฐ เคจเคฏเคพเค เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเคพเคˆ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเคพเคฒเคฟเค•เคนเคฐเฅ‚เคฒเฅ‡ เคฎเคพเคคเฅเคฐ เคจเคฏเคพเค เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เคฒเคพเคˆ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ', + hindi: 'เค•เฅ‡เคตเคฒ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฎเคพเคฒเคฟเค• เคนเฅ€ เคจเค เคธเคฆเคธเฅเคฏเฅ‹เค‚ เค•เฅ‹ เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€žแ€ฌ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€žแ€…แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เน€เธ‰เธžเธฒเธฐเน€เธˆเน‰เธฒเธ‚เธญเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™เธ—เธตเนˆเธชเธฒเธกเธฒเธฃเธ–เน€เธŠเธดเธเธชเธกเธฒเธŠเธดเธเนƒเธซเธกเนˆเน„เธ”เน‰', + mandarin: 'ๅชๆœ‰้กน็›ฎๆ‰€ๆœ‰่€…ๅฏไปฅ้‚€่ฏทๆ–ฐๆˆๅ‘˜' }, failedToResendInvitation: { english: 'Failed to resend invitation', @@ -3278,7 +4895,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao reenviar convite', tok_pisin: 'I no inap resendim invitation', indonesian: 'Gagal mengirim ulang undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเฅเคจ: เคชเค เคพเค‰เคจ เค…เคธเคซเคฒ' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคชเฅเคจ: เคชเค เคพเค‰เคจ เค…เคธเคซเคฒ', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคชเฅเคจเคƒ เคญเฅ‡เคœเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บ แ€•แ€ฑแ€ธแ€•แ€ญแ€ฏแ€ทแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธ„เธณเน€เธŠเธดเธเธญเธตเธเธ„เธฃเธฑเน‰เธ‡เน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '้‡ๆ–ฐๅ‘้€้‚€่ฏทๅคฑ่ดฅ' }, // Restore-related translations restoreAndroidOnly: { @@ -3287,7 +4908,11 @@ export const localizations = { brazilian_portuguese: 'A restauraรงรฃo sรณ estรก disponรญvel no Android', tok_pisin: 'Restore i pinis long Android', indonesian: 'Pemulihan hanya tersedia di Android', - nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคเคจเฅเคกเฅเคฐเฅ‹เค‡เคกเคฎเคพ เคฎเคพเคคเฅเคฐ เค‰เคชเคฒเคฌเฅเคง เค›' + nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคเคจเฅเคกเฅเคฐเฅ‹เค‡เคกเคฎเคพ เคฎเคพเคคเฅเคฐ เค‰เคชเคฒเคฌเฅเคง เค›', + hindi: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค•เฅ‡เคตเคฒ Android เคชเคฐ เค‰เคชเคฒเคฌเฅเคง เคนเฅˆ', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€แ€ผแ€„แ€บแ€ธแ€žแ€Šแ€บ Android แ€แ€ฝแ€„แ€บแ€žแ€ฌ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธเธฒเธฃเธเธนเน‰เธ„เธทเธ™เธกเธตเนƒเธซเน‰เน€เธ‰เธžเธฒเธฐเธšเธ™ Android', + mandarin: 'ๆขๅคๅŠŸ่ƒฝไป…ๅœจ Android ไธŠๅฏ็”จ' }, backupAndroidOnly: { english: 'Backup is only available on Android', @@ -3295,7 +4920,11 @@ export const localizations = { brazilian_portuguese: 'O backup sรณ estรก disponรญvel no Android', tok_pisin: 'Backup i pinis long Android', indonesian: 'Cadangan hanya tersedia di Android', - nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคเคจเฅเคกเฅเคฐเฅ‹เค‡เคกเคฎเคพ เคฎเคพเคคเฅเคฐ เค‰เคชเคฒเคฌเฅเคง เค›' + nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคเคจเฅเคกเฅเคฐเฅ‹เค‡เคกเคฎเคพ เคฎเคพเคคเฅเคฐ เค‰เคชเคฒเคฌเฅเคง เค›', + hindi: 'เคฌเฅˆเค•เค…เคช เค•เฅ‡เคตเคฒ Android เคชเคฐ เค‰เคชเคฒเคฌเฅเคง เคนเฅˆ', + burmese: 'แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€แ€ผแ€„แ€บแ€ธแ€žแ€Šแ€บ Android แ€แ€ฝแ€„แ€บแ€žแ€ฌ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธเธฒเธฃเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธกเธตเนƒเธซเน‰เน€เธ‰เธžเธฒเธฐเธšเธ™ Android', + mandarin: 'ๅค‡ไปฝๅŠŸ่ƒฝไป…ๅœจ Android ไธŠๅฏ็”จ' }, permissionDenied: { english: 'Permission Denied', @@ -3303,7 +4932,11 @@ export const localizations = { brazilian_portuguese: 'Permissรฃo Negada', tok_pisin: 'Permission i no', indonesian: 'Izin Ditolak', - nepali: 'เค…เคจเฅเคฎเคคเคฟ เค…เคธเฅเคตเฅ€เค•เฅƒเคค' + nepali: 'เค…เคจเฅเคฎเคคเคฟ เค…เคธเฅเคตเฅ€เค•เฅƒเคค', + hindi: 'เค…เคจเฅเคฎเคคเคฟ เค…เคธเฅเคตเฅ€เค•เฅƒเคค', + burmese: 'แ€แ€ฝแ€„แ€ทแ€บแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ›เธเธดเน€เธชเธ˜เธเธฒเธฃเธญเธ™เธธเธเธฒเธ•', + mandarin: 'ๆƒ้™่ขซๆ‹’็ป' }, grantMicrophonePermission: { english: 'Grant Microphone Permission', @@ -3311,7 +4944,11 @@ export const localizations = { brazilian_portuguese: 'Conceder Permissรฃo de Microfone', tok_pisin: 'Grant Microphone Permission', indonesian: 'Mengakses Mikrofon', - nepali: 'เคฎเคพเค‡เค•เฅเคฐเฅ‹เคซเฅ‹เคจ เค…เคจเฅเคฎเคคเคฟ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเคพเค‡เค•เฅเคฐเฅ‹เคซเฅ‹เคจ เค…เคจเฅเคฎเคคเคฟ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฎเคพเค‡เค•เฅเคฐเฅ‹เคซเฅ‹เคจ เค…เคจเฅเคฎเคคเคฟ เคฆเฅ‡เค‚', + burmese: 'แ€™แ€ญแ€ฏแ€€แ€บแ€แ€›แ€ญแ€ฏแ€–แ€ฏแ€”แ€บแ€ธ แ€แ€ฝแ€„แ€ทแ€บแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บ แ€•แ€ฑแ€ธแ€•แ€ซ', + thai: 'เนƒเธซเน‰เธชเธดเธ—เธ˜เธดเนŒเน„เธกเน‚เธ„เธฃเน‚เธŸเธ™', + mandarin: 'ๆŽˆไบˆ้บฆๅ…‹้ฃŽๆƒ้™' }, autoCalibrate: { english: 'Auto-Calibrate', @@ -3319,7 +4956,11 @@ export const localizations = { brazilian_portuguese: 'Auto-Calibrar', tok_pisin: 'Olsem wanem yet', indonesian: 'Auto-Kalibrasi', - nepali: 'เคธเฅเคตเคค: เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ' + nepali: 'เคธเฅเคตเคค: เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ', + hindi: 'เคธเฅเคตเคšเคพเคฒเคฟเคค เค•เฅˆเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ', + burmese: 'แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€…แ€…แ€บแ€†แ€ฑแ€ธแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด', + mandarin: '่‡ชๅŠจๆ กๅ‡†' }, calibrateMicrophone: { english: 'Calibrate your microphone', @@ -3327,7 +4968,11 @@ export const localizations = { brazilian_portuguese: 'Calibre seu microfone', tok_pisin: 'Stretim mikrofon bilong yu', indonesian: 'Kalibrasi mikrofon Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เคฎเคพเค‡เค•เฅเคฐเฅ‹เคซเฅ‹เคจ เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เคฎเคพเค‡เค•เฅเคฐเฅ‹เคซเฅ‹เคจ เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเคพ เคฎเคพเค‡เค•เฅเคฐเฅ‹เคซเฅ‹เคจ เค•เฅˆเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€™แ€ญแ€ฏแ€€แ€บแ€แ€›แ€ญแ€ฏแ€–แ€ฏแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€†แ€ฑแ€ธแ€•แ€ซ', + thai: 'เธ›เธฃเธฑเธšเนเธ•เนˆเธ‡เน„เธกเน‚เธ„เธฃเน‚เธŸเธ™เธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: 'ๆ กๅ‡†ๆ‚จ็š„้บฆๅ…‹้ฃŽ' }, calibrateMicrophoneDescription: { english: 'Let us automatically adjust the sensitivity for your environment', @@ -3340,7 +4985,13 @@ export const localizations = { indonesian: 'Biarkan kami secara otomatis menyesuaikan sensitivitas untuk lingkungan Anda', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคตเคพเคคเคพเคตเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ เคธเคฎเคพเคฏเฅ‹เคœเคจ เค—เคฐเฅเคจ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคตเคพเคคเคพเคตเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ เคธเคฎเคพเคฏเฅ‹เคœเคจ เค—เคฐเฅเคจ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ', + hindi: + 'เคนเคฎเฅ‡เค‚ เค†เคชเค•เฅ‡ เคตเคพเคคเคพเคตเคฐเคฃ เค•เฅ‡ เคฒเคฟเค เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ เคธเคฎเคพเคฏเฅ‹เคœเคฟเคค เค•เคฐเคจเฅ‡ เคฆเฅ‡เค‚', + burmese: + 'แ€žแ€„แ€บแ แ€•แ€แ€บแ€แ€”แ€บแ€ธแ€€แ€ปแ€„แ€บแ€กแ€แ€ฝแ€€แ€บ แ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€…แ€ฝแ€™แ€บแ€ธแ€€แ€ญแ€ฏ แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€Šแ€พแ€ญแ€•แ€ฑแ€ธแ€›แ€”แ€บ แ€แ€ฝแ€„แ€ทแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เนƒเธซเน‰เน€เธฃเธฒเธ›เธฃเธฑเธšเธ„เธงเธฒเธกเน„เธงเนƒเธซเน‰เน€เธซเธกเธฒเธฐเธเธฑเธšเธชเธ เธฒเธžเนเธงเธ”เธฅเน‰เธญเธกเธ‚เธญเธ‡เธ„เธธเธ“เน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด', + mandarin: '่ฎฉๆˆ‘ไปฌ่‡ชๅŠจ่ฐƒๆ•ดๆ‚จ็Žฏๅขƒ็š„็ตๆ•ๅบฆ' }, skip: { english: 'Skip', @@ -3348,7 +4999,11 @@ export const localizations = { brazilian_portuguese: 'Pular', tok_pisin: 'Lusim', indonesian: 'Lewati', - nepali: 'เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค›เฅ‹เคกเคผเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฑแ€ฌแ€บแ€žแ€ฝแ€ฌแ€ธแ€•แ€ซ', + thai: 'เธ‚เน‰เธฒเธก', + mandarin: '่ทณ่ฟ‡' }, confirmAudioRestore: { english: 'Confirm Audio Restore', @@ -3356,7 +5011,11 @@ export const localizations = { brazilian_portuguese: 'Confirmar Restauraรงรฃo de รudio', tok_pisin: 'Confirm Audio Restore', indonesian: 'Konfirmasi Pemulihan Audio', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค•เฅ€ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€žแ€ถ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€แ€ผแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธขเธทเธ™เธขเธฑเธ™เธเธฒเธฃเธเธนเน‰เธ„เธทเธ™เน€เธชเธตเธขเธ‡', + mandarin: '็กฎ่ฎค้Ÿณ้ข‘ๆขๅค' }, confirmAudioRestoreMessage: { english: 'This will restore your audio files from the backup. Continue?', @@ -3367,7 +5026,12 @@ export const localizations = { tok_pisin: 'This i restore audio file bilong backup. Continue?', indonesian: 'Ini akan memulihkan file audio Anda dari cadangan. Lanjutkan?', nepali: - 'เคฏเคธเคฒเฅ‡ เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒเคนเคฐเฅ‚ เคฌเฅเคฏเคพเค•เค…เคชเคฌเคพเคŸ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค—เคฐเฅเคจเฅ‡เค›เฅค เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅ‡?' + 'เคฏเคธเคฒเฅ‡ เคคเคชเคพเคˆเค‚เค•เฅ‹ เค…เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒเคนเคฐเฅ‚ เคฌเฅเคฏเคพเค•เค…เคชเคฌเคพเคŸ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค—เคฐเฅเคจเฅ‡เค›เฅค เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅ‡?', + hindi: 'เคฏเคน เค†เคชเค•เฅ€ เค‘เคกเคฟเคฏเฅ‹ เคซเคผเคพเค‡เคฒเฅ‹เค‚ เค•เฅ‹ เคฌเฅˆเค•เค…เคช เคธเฅ‡ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐเฅ‡เค—เคพเฅค เคœเคพเคฐเฅ€ เคฐเค–เฅ‡เค‚?', + burmese: + 'แŽแ€„แ€บแ€ธแ€žแ€Šแ€บ แ€žแ€„แ€บแ แ€กแ€žแ€ถแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€›แ€”แ€บแ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€พแ€ฏแ€™แ€พ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€™แ€Šแ€บแ‹ แ€†แ€€แ€บแ€œแ€ฏแ€•แ€บแ€™แ€Šแ€บแ€œแ€ฌแ€ธ?', + thai: 'เธ™เธตเนˆเธˆเธฐเธเธนเน‰เธ„เธทเธ™เน„เธŸเธฅเนŒเน€เธชเธตเธขเธ‡เธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฒเธเธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅ เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญเธซเธฃเธทเธญเน„เธกเนˆ?', + mandarin: '่ฟ™ๅฐ†ไปŽๅค‡ไปฝไธญๆขๅคๆ‚จ็š„้Ÿณ้ข‘ๆ–‡ไปถใ€‚็ปง็ปญๅ—๏ผŸ' }, restoreAudioOnly: { english: 'Restore Audio', @@ -3375,7 +5039,11 @@ export const localizations = { brazilian_portuguese: 'Restaurar รudio', tok_pisin: 'Restore Audio', indonesian: 'Pemulihan Audio', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€žแ€ถ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€•แ€ซ', + thai: 'เธเธนเน‰เธ„เธทเธ™เน€เธชเธตเธขเธ‡', + mandarin: 'ๆขๅค้Ÿณ้ข‘' }, failedRestore: { english: 'Failed to restore: {error}', @@ -3383,7 +5051,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao restaurar: {error}', tok_pisin: 'I no inap restore: {error}', indonesian: 'Gagal memulihkan: {error}', - nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ: {error}' + nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ: {error}', + hindi: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ: {error}', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ: {error}', + thai: 'เธเธนเน‰เธ„เธทเธ™เน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ: {error}', + mandarin: 'ๆขๅคๅคฑ่ดฅ: {error}' }, restoreCompleteBase: { english: @@ -3397,7 +5069,14 @@ export const localizations = { indonesian: 'Pemulihan selesai: {audioCopied} file audio disalin, {audioSkippedDueToError} dilewatkan karena kesalahan', nepali: - 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹: {audioCopied} เค…เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒเคนเคฐเฅ‚ เค•เคชเฅ€ เค—เคฐเคฟเคฏเฅ‹, {audioSkippedDueToError} เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚เค•เคพ เค•เคพเคฐเคฃ เค›เฅ‹เคกเคฟเคฏเฅ‹' + 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹: {audioCopied} เค…เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒเคนเคฐเฅ‚ เค•เคชเฅ€ เค—เคฐเคฟเคฏเฅ‹, {audioSkippedDueToError} เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚เค•เคพ เค•เคพเคฐเคฃ เค›เฅ‹เคกเคฟเคฏเฅ‹', + hindi: + 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคชเฅ‚เคฐเฅเคฃ: {audioCopied} เค‘เคกเคฟเคฏเฅ‹ เคซเคผเคพเค‡เคฒเฅ‡เค‚ เค•เฅ‰เคชเฅ€ เค•เฅ€ เค—เคˆเค‚, {audioSkippedDueToError} เคคเฅเคฐเฅเคŸเคฟเคฏเฅ‹เค‚ เค•เฅ‡ เค•เคพเคฐเคฃ เค›เฅ‹เคกเคผ เคฆเฅ€ เค—เคˆเค‚', + burmese: + 'แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€แ€ผแ€„แ€บแ€ธ แ€•แ€ผแ€ฎแ€ธแ€…แ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ: {audioCopied} แ€กแ€žแ€ถแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธ แ€€แ€ฐแ€ธแ€šแ€ฐแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแŠ {audioSkippedDueToError} แ€€แ€ญแ€ฏ แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ผแ€ฑแ€ฌแ€„แ€ทแ€บ แ€€แ€ปแ€ฑแ€ฌแ€บแ€žแ€ฝแ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธเธนเน‰เธ„เธทเธ™เน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™: เธ„เธฑเธ”เธฅเธญเธเน„เธŸเธฅเนŒเน€เธชเธตเธขเธ‡ {audioCopied} เน„เธŸเธฅเนŒ เธ‚เน‰เธฒเธก {audioSkippedDueToError} เน„เธŸเธฅเนŒเน€เธ™เธทเนˆเธญเธ‡เธˆเธฒเธเธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”', + mandarin: + 'ๆขๅคๅฎŒๆˆ: ๅทฒๅคๅˆถ {audioCopied} ไธช้Ÿณ้ข‘ๆ–‡ไปถ๏ผŒ็”ฑไบŽ้”™่ฏฏ่ทณ่ฟ‡ไบ† {audioSkippedDueToError} ไธช' }, restoreSkippedLocallyPart: { english: ', {audioSkippedLocally} skipped (already exists)', @@ -3405,7 +5084,12 @@ export const localizations = { brazilian_portuguese: ', {audioSkippedLocally} ignorados (jรก existem)', tok_pisin: ', {audioSkippedLocally} i skip long local.', indonesian: ', {audioSkippedLocally} dilewatkan (sudah ada)', - nepali: ', {audioSkippedLocally} เค›เฅ‹เคกเคฟเคฏเฅ‹ (เคชเคนเคฟเคฒเฅ‡ เคจเฅˆ เค…เคตเคธเฅเคฅเคฟเคค เค›)' + nepali: ', {audioSkippedLocally} เค›เฅ‹เคกเคฟเคฏเฅ‹ (เคชเคนเคฟเคฒเฅ‡ เคจเฅˆ เค…เคตเคธเฅเคฅเคฟเคค เค›)', + hindi: ', {audioSkippedLocally} เค›เฅ‹เคกเคผ เคฆเคฟเคฏเคพ เค—เคฏเคพ (เคชเคนเคฒเฅ‡ เคธเฅ‡ เคฎเฅŒเคœเฅ‚เคฆ เคนเฅˆ)', + burmese: + ', {audioSkippedLocally} แ€€แ€ญแ€ฏ แ€€แ€ปแ€ฑแ€ฌแ€บแ€žแ€ฝแ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บ (แ€กแ€›แ€„แ€บแ€€แ€แ€Šแ€บแ€ธแ€€ แ€›แ€พแ€ญแ€”แ€ฑแ€•แ€ซแ€žแ€Šแ€บ)', + thai: ', เธ‚เน‰เธฒเธก {audioSkippedLocally} เน„เธŸเธฅเนŒ (เธกเธตเธญเธขเธนเนˆเนเธฅเน‰เธง)', + mandarin: '๏ผŒ่ทณ่ฟ‡ไบ† {audioSkippedLocally} ไธช๏ผˆๅทฒๅญ˜ๅœจ๏ผ‰' }, restoreCompleteTitle: { english: 'Restore Complete', @@ -3413,7 +5097,11 @@ export const localizations = { brazilian_portuguese: 'Restauraรงรฃo Concluรญda', tok_pisin: 'Restore Complete', indonesian: 'Pemulihan Selesai', - nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹' + nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹', + hindi: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€แ€ผแ€„แ€บแ€ธ แ€•แ€ผแ€ฎแ€ธแ€…แ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธเธนเน‰เธ„เธทเธ™เน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™', + mandarin: 'ๆขๅคๅฎŒๆˆ' }, restoreFailedTitle: { english: 'Restore Failed: {error}', @@ -3421,7 +5109,11 @@ export const localizations = { brazilian_portuguese: 'Restauraรงรฃo Falhou: {error}', tok_pisin: 'Restore i no: {error}', indonesian: 'Pemulihan Gagal: {error}', - nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค…เคธเคซเคฒ: {error}' + nepali: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค…เคธเคซเคฒ: {error}', + hindi: 'เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคตเคฟเคซเคฒ: {error}', + burmese: 'แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ: {error}', + thai: 'เธเธนเน‰เธ„เธทเธ™เน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ: {error}', + mandarin: 'ๆขๅคๅคฑ่ดฅ: {error}' }, projectInvitationTitle: { english: 'Project Invitation', @@ -3429,7 +5121,11 @@ export const localizations = { brazilian_portuguese: 'Convite para o Projeto', tok_pisin: 'Project Invitation', indonesian: 'Undangan Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค†เคฎเคจเฅเคคเฅเคฐเคฃ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค†เคฎเคจเฅเคคเฅเคฐเคฃ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค†เคฎเค‚เคคเฅเคฐเคฃ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ', + thai: 'เธ„เธณเน€เธŠเธดเธเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้กน็›ฎ้‚€่ฏท' }, joinRequestTitle: { english: 'Join Request', @@ -3437,7 +5133,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo de Adesรฃo', tok_pisin: 'Join Request', indonesian: 'Permintaan Bergabung', - nepali: 'เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅ‡ เค…เคจเฅเคฐเฅ‹เคง' + nepali: 'เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅ‡ เค…เคจเฅเคฐเฅ‹เคง', + hindi: 'เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง', + burmese: 'แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ', + thai: 'เธ„เธณเธ‚เธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธก', + mandarin: 'ๅŠ ๅ…ฅ่ฏทๆฑ‚' }, invitedYouToJoin: { english: '{sender} invited you to join "{project}" as {role}', @@ -3449,7 +5149,13 @@ export const localizations = { indonesian: '{sender} mengundang Anda untuk bergabung dengan proyek "{project}" sebagai {role}', nepali: - '{sender} เคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเคพเคˆ "{project}" เคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจเฅเคญเคฏเฅ‹' + '{sender} เคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเคพเคˆ "{project}" เคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเฅเคจเฅเคญเคฏเฅ‹', + hindi: + '{sender} เคจเฅ‡ เค†เคชเค•เฅ‹ "{project}" เคฎเฅ‡เค‚ {role} เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฟเคฏเคพ เคนเฅˆ', + burmese: + '{sender} แ€žแ€Šแ€บ แ€žแ€„แ€ทแ€บแ€กแ€ฌแ€ธ "{project}" แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ {role} แ€กแ€–แ€ผแ€…แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: '{sender} เน„เธ”เน‰เน€เธŠเธดเธเธ„เธธเธ“เน€เธ‚เน‰เธฒเธฃเนˆเธงเธก "{project}" เนƒเธ™เธเธฒเธ™เธฐ {role}', + mandarin: '{sender} ๅทฒ้‚€่ฏทๆ‚จไปฅ {role} ่บซไปฝๅŠ ๅ…ฅ "{project}"' }, requestedToJoin: { english: '{sender} requested to join "{project}" as {role}', @@ -3461,7 +5167,13 @@ export const localizations = { indonesian: '{sender} meminta untuk bergabung dengan proyek "{project}" sebagai {role}', nepali: - '{sender} เคฒเฅ‡ "{project}" เคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคญเคฏเฅ‹' + '{sender} เคฒเฅ‡ "{project}" เคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคญเคฏเฅ‹', + hindi: + '{sender} เคจเฅ‡ "{project}" เคฎเฅ‡เค‚ {role} เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฟเคฏเคพ เคนเฅˆ', + burmese: + '{sender} แ€žแ€Šแ€บ "{project}" แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ {role} แ€กแ€–แ€ผแ€…แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ', + thai: '{sender} เน„เธ”เน‰เธ‚เธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธก "{project}" เนƒเธ™เธเธฒเธ™เธฐ {role}', + mandarin: '{sender} ๅทฒ่ฏทๆฑ‚ไปฅ {role} ่บซไปฝๅŠ ๅ…ฅ "{project}"' }, downloadProjectLabel: { english: 'Download Project', @@ -3469,7 +5181,11 @@ export const localizations = { brazilian_portuguese: 'Baixar Projeto', tok_pisin: 'Download Project', indonesian: 'Unduh Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: 'ไธ‹่ฝฝ้กน็›ฎ' }, projectNotAvailableOfflineWarning: { english: 'Project will not be available offline without download', @@ -3477,7 +5193,12 @@ export const localizations = { brazilian_portuguese: 'O projeto nรฃo estarรก disponรญel offline sem download', tok_pisin: 'Project i no pinis long download', indonesian: 'Proyek tidak akan tersedia secara offline tanpa unduhan', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคฌเคฟเคจเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค…เคซเคฒเคพเค‡เคจ เค‰เคชเคฒเคฌเฅเคง เคนเฅเคจเฅ‡ เค›เฅˆเคจ' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคฌเคฟเคจเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค…เคซเคฒเคพเค‡เคจ เค‰เคชเคฒเคฌเฅเคง เคนเฅเคจเฅ‡ เค›เฅˆเคจ', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เฅ‡ เคฌเคฟเคจเคพ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค‘เคซเคฒเคพเค‡เคจ เค‰เคชเคฒเคฌเฅเคง เคจเคนเฅ€เค‚ เคนเฅ‹เค—เฅ€', + burmese: + 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธแ€™แ€›แ€พแ€ญแ€˜แ€ฒ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€กแ€ฑแ€ฌแ€ทแ€–แ€บแ€œแ€ญแ€ฏแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บ แ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธˆเธฐเน„เธกเนˆเธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™เนเธšเธšเธญเธญเธŸเน„เธฅเธ™เนŒเธซเธฒเธเน„เธกเนˆเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”', + mandarin: 'ไธไธ‹่ฝฝ้กน็›ฎๅฐ†ๆ— ๆณ•็ฆป็บฟไฝฟ็”จ' }, noNotificationsTitle: { english: 'No Notifications', @@ -3485,7 +5206,11 @@ export const localizations = { brazilian_portuguese: 'Sem Notificaรงรตes', tok_pisin: 'No Notification', indonesian: 'Tidak Ada Notifikasi', - nepali: 'เค•เฅเคจเฅˆ เคธเฅ‚เคšเคจเคพ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคธเฅ‚เคšเคจเคพ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคธเฅ‚เคšเคจเคพเคเค‚ เคจเคนเฅ€เค‚', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€แ€ปแ€€แ€บ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™', + mandarin: 'ๆ— ้€š็Ÿฅ' }, noNotificationsMessage: { english: "You'll see project invitations and join requests here", @@ -3497,7 +5222,12 @@ export const localizations = { indonesian: 'Anda akan melihat undangan ke proyek dan permintaan bergabung di sini', nepali: - 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฏเคนเคพเค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค†เคฎเคจเฅเคคเฅเคฐเคฃเคนเคฐเฅ‚ เคฐ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅ‡ เค…เคจเฅเคฐเฅ‹เคงเคนเคฐเฅ‚ เคฆเฅ‡เค–เฅเคจเฅเคนเฅเคจเฅ‡เค›' + 'เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฏเคนเคพเค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค†เคฎเคจเฅเคคเฅเคฐเคฃเคนเคฐเฅ‚ เคฐ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅ‡ เค…เคจเฅเคฐเฅ‹เคงเคนเคฐเฅ‚ เคฆเฅ‡เค–เฅเคจเฅเคนเฅเคจเฅ‡เค›', + hindi: 'เค†เคช เคฏเคนเคพเค‚ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค†เคฎเค‚เคคเฅเคฐเคฃ เค”เคฐ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เค…เคจเฅเคฐเฅ‹เคง เคฆเฅ‡เค–เฅ‡เค‚เค—เฅ‡', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€คแ€”แ€ฑแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌแ€™แ€ปแ€ฌแ€ธ แ€”แ€พแ€„แ€ทแ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€™แ€ผแ€„แ€บแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธˆเธฐเน€เธซเน‡เธ™เธ„เธณเน€เธŠเธดเธเน‚เธ„เธฃเธ‡เธเธฒเธฃเนเธฅเธฐเธ„เธณเธ‚เธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเธ—เธตเนˆเธ™เธตเนˆ', + mandarin: 'ๆ‚จๅฐ†ๅœจๆญคๅค„็œ‹ๅˆฐ้กน็›ฎ้‚€่ฏทๅ’ŒๅŠ ๅ…ฅ่ฏทๆฑ‚' }, invitationAcceptedSuccessfully: { english: 'Invitation accepted successfully', @@ -3505,7 +5235,11 @@ export const localizations = { brazilian_portuguese: 'Convite aceito com sucesso', tok_pisin: 'Invitation i accept gut', indonesian: 'Undangan diterima dengan sukses', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฒเคฟเคฏเคพ เค—เคฏเคพ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€œแ€€แ€บแ€แ€ถแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธขเธญเธกเธฃเธฑเธšเธ„เธณเน€เธŠเธดเธเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '้‚€่ฏทๅทฒๆˆๅŠŸๆŽฅๅ—' }, invitationDeclinedSuccessfully: { english: 'Invitation declined', @@ -3513,7 +5247,11 @@ export const localizations = { brazilian_portuguese: 'Convite recusado', tok_pisin: 'Invitation i no', indonesian: 'Undangan ditolak', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เฅƒเคค' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เฅƒเคค', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฆเคฟเคฏเคพ เค—เคฏเคพ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเน€เธŠเธดเธ', + mandarin: '้‚€่ฏทๅทฒๆ‹’็ป' }, failedToAcceptInvite: { english: 'Failed to accept invitation', @@ -3521,7 +5259,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao aceitar convite', tok_pisin: 'I no inap accept invitation', indonesian: 'Gagal menerima undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌแ€€แ€ญแ€ฏ แ€œแ€€แ€บแ€แ€ถแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธขเธญเธกเธฃเธฑเธšเธ„เธณเน€เธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆŽฅๅ—้‚€่ฏทๅคฑ่ดฅ' }, failedToDeclineInvite: { english: 'Failed to decline invitation', @@ -3529,7 +5271,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao recusar convite', tok_pisin: 'I no inap decline invitation', indonesian: 'Gagal menolak undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเน€เธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆ‹’็ป้‚€่ฏทๅคฑ่ดฅ' }, invitationAcceptedDownloadFailed: { english: 'Invitation accepted but download failed', @@ -3537,7 +5283,11 @@ export const localizations = { brazilian_portuguese: 'Convite aceito mas o download falhou', tok_pisin: 'Invitation i accept but i no inap download', indonesian: 'Undangan diterima tapi unduhan gagal', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹ เคคเคฐ เคกเคพเค‰เคจเคฒเฅ‹เคก เค…เคธเคซเคฒ เคญเคฏเฅ‹' + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเคฟเคฏเฅ‹ เคคเคฐ เคกเคพเค‰เคจเคฒเฅ‹เคก เค…เคธเคซเคฒ เคญเคฏเฅ‹', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐ เคฒเคฟเคฏเคพ เค—เคฏเคพ เคฒเฅ‡เค•เคฟเคจ เคกเคพเค‰เคจเคฒเฅ‹เคก เคตเคฟเคซเคฒ เคฐเคนเคพ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€…แ€ฌ แ€œแ€€แ€บแ€แ€ถแ€•แ€ซแ€•แ€ผแ€ฎ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธขเธญเธกเธฃเธฑเธšเธ„เธณเน€เธŠเธดเธเนเธฅเน‰เธง เนเธ•เนˆเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธฅเน‰เธกเน€เธซเธฅเธง', + mandarin: '้‚€่ฏทๅทฒๆŽฅๅ—๏ผŒไฝ†ไธ‹่ฝฝๅคฑ่ดฅ' }, unknownProject: { english: 'Unknown Project', @@ -3545,7 +5295,11 @@ export const localizations = { brazilian_portuguese: 'Projeto Desconhecido', tok_pisin: 'Unknown Project', indonesian: 'Proyek Tidak Dikenal', - nepali: 'เค…เคœเฅเคžเคพเคค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ' + nepali: 'เค…เคœเฅเคžเคพเคค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ', + hindi: 'เค…เคœเฅเคžเคพเคค เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ', + burmese: 'แ€™แ€žแ€ญแ€žแ€ฑแ€ฌ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ—เธตเนˆเน„เธกเนˆเธฃเธนเน‰เธˆเธฑเธ', + mandarin: 'ๆœช็Ÿฅ้กน็›ฎ' }, ownerRole: { english: 'owner', @@ -3553,7 +5307,11 @@ export const localizations = { brazilian_portuguese: 'proprietรกrio', tok_pisin: 'owner', indonesian: 'pemilik', - nepali: 'เคฎเคพเคฒเคฟเค•' + nepali: 'เคฎเคพเคฒเคฟเค•', + hindi: 'เคฎเคพเคฒเคฟเค•', + burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€›แ€พแ€„แ€บ', + thai: 'เน€เธˆเน‰เธฒเธ‚เธญเธ‡', + mandarin: 'ๆ‰€ๆœ‰่€…' }, memberRole: { english: 'member', @@ -3561,7 +5319,11 @@ export const localizations = { brazilian_portuguese: 'membro', tok_pisin: 'member', indonesian: 'anggota', - nepali: 'เคธเคฆเคธเฅเคฏ' + nepali: 'เคธเคฆเคธเฅเคฏ', + hindi: 'เคธเคฆเคธเฅเคฏ', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บ', + thai: 'เธชเธกเธฒเธŠเธดเธ', + mandarin: 'ๆˆๅ‘˜' }, offlineNotificationMessage: { english: @@ -3575,7 +5337,13 @@ export const localizations = { indonesian: 'Anda sedang offline. Perubahan apa pun yang Anda buat akan disinkronkan ketika Anda kembali online.', nepali: - 'เคคเคชเคพเคˆเค‚ เค…เคซเคฒเคพเค‡เคจ เคนเฅเคจเฅเคนเฅเคจเฅเค›เฅค เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค—เคฐเฅเคจเฅเคญเคเค•เคพ เค•เฅเคจเฅˆ เคชเคจเคฟ เคชเคฐเคฟเคตเคฐเฅเคคเคจเคนเคฐเฅ‚ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคซเคฐเฅเค•เคฟเคเคฆเคพ เคธเคฟเค™เฅเค• เคนเฅเคจเฅ‡เค›เคจเฅเฅค' + 'เคคเคชเคพเคˆเค‚ เค…เคซเคฒเคพเค‡เคจ เคนเฅเคจเฅเคนเฅเคจเฅเค›เฅค เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค—เคฐเฅเคจเฅเคญเคเค•เคพ เค•เฅเคจเฅˆ เคชเคจเคฟ เคชเคฐเคฟเคตเคฐเฅเคคเคจเคนเคฐเฅ‚ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคซเคฐเฅเค•เคฟเคเคฆเคพ เคธเคฟเค™เฅเค• เคนเฅเคจเฅ‡เค›เคจเฅเฅค', + hindi: + 'เค†เคช เค‘เคซเคฒเคพเค‡เคจ เคนเฅˆเค‚เฅค เค†เคชเค•เฅ‡ เคฆเฅเคตเคพเคฐเคพ เค•เคฟเค เค—เค เค•เฅ‹เคˆ เคญเฅ€ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เคคเคฌ เคธเคฟเค‚เค• เคนเฅ‹เค‚เค—เฅ‡ เคœเคฌ เค†เคช เคตเคพเคชเคธ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เค‚เค—เฅ‡เฅค', + burmese: + 'แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€ฑแ€ฌแ€ทแ€–แ€บแ€œแ€ญแ€ฏแ€„แ€บแ€ธ แ€–แ€ผแ€…แ€บแ€”แ€ฑแ€žแ€Šแ€บแ‹ แ€žแ€„แ€บแ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€žแ€ฑแ€ฌ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บ แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏแ€™แ€†แ€ญแ€ฏ แ€žแ€„แ€บแ€•แ€ผแ€”แ€บแ€œแ€Šแ€บ แ€กแ€ฝแ€”แ€บแ€œแ€ญแ€ฏแ€„แ€บแ€ธแ€–แ€ผแ€…แ€บแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธ„เธธเธ“เธญเธญเธŸเน„เธฅเธ™เนŒเธญเธขเธนเนˆ เธเธฒเธฃเน€เธ›เธฅเธตเนˆเธขเธ™เนเธ›เธฅเธ‡เนƒเธ”เน† เธ—เธตเนˆเธ„เธธเธ“เธ—เธณเธˆเธฐเธ‹เธดเธ‡เธ„เนŒเน€เธกเธทเนˆเธญเธ„เธธเธ“เธเธฅเธฑเธšเธกเธฒเธญเธญเธ™เน„เธฅเธ™เนŒ', + mandarin: 'ๆ‚จๅค„ไบŽ็ฆป็บฟ็Šถๆ€ใ€‚ๆ‚จๆ‰€ๅš็š„ไปปไฝ•ๆ›ดๆ”นๅฐ†ๅœจๆ‚จ้‡ๆ–ฐไธŠ็บฟๆ—ถๅŒๆญฅใ€‚' }, filesDownloaded: { english: 'files downloaded', @@ -3583,7 +5351,11 @@ export const localizations = { brazilian_portuguese: 'arquivos baixados', tok_pisin: 'ol fail i download pinis', indonesian: 'file diunduh', - nepali: 'เคซเคพเค‡เคฒเคนเคฐเฅ‚ เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคฏเฅ‹' + nepali: 'เคซเคพเค‡เคฒเคนเคฐเฅ‚ เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคฏเฅ‹', + hindi: 'เคซเคผเคพเค‡เคฒเฅ‡เค‚ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เฅ€ เค—เคˆเค‚', + burmese: 'แ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธŸเธฅเนŒเนเธฅเน‰เธง', + mandarin: 'ๆ–‡ไปถๅทฒไธ‹่ฝฝ' }, downloading: { english: 'downloading', @@ -3591,7 +5363,11 @@ export const localizations = { brazilian_portuguese: 'baixando', tok_pisin: 'i download nau', indonesian: 'mengunduh', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”', + mandarin: 'ๆญฃๅœจไธ‹่ฝฝ' }, uploading: { english: 'uploading', @@ -3599,7 +5375,11 @@ export const localizations = { brazilian_portuguese: 'enviando', tok_pisin: 'i upload nau', indonesian: 'mengunggah', - nepali: 'เค…เคชเคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ' + nepali: 'เค…เคชเคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ', + hindi: 'เค…เคชเคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€กแ€•แ€บแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธญเธฑเธ›เน‚เธซเธฅเธ”', + mandarin: 'ๆญฃๅœจไธŠไผ ' }, files: { english: 'files', @@ -3607,7 +5387,11 @@ export const localizations = { brazilian_portuguese: 'arquivos', tok_pisin: 'ol fail', indonesian: 'file', - nepali: 'เคซเคพเค‡เคฒเคนเคฐเฅ‚' + nepali: 'เคซเคพเค‡เคฒเคนเคฐเฅ‚', + hindi: 'เคซเคผเคพเค‡เคฒเฅ‡เค‚', + burmese: 'แ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เน„เธŸเธฅเนŒ', + mandarin: 'ๆ–‡ไปถ' }, syncingDatabase: { english: 'syncing database', @@ -3615,7 +5399,11 @@ export const localizations = { brazilian_portuguese: 'sincronizando banco de dados', tok_pisin: 'i sync database nau', indonesian: 'mengosinkronkan basis data', - nepali: 'เคกเคพเคŸเคพเคฌเฅ‡เคธ เคธเคฟเค™เฅเค• เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคกเคพเคŸเคพเคฌเฅ‡เคธ เคธเคฟเค™เฅเค• เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคธเคฟเค‚เค• เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บ แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ‹เธดเธ‡เธ„เนŒเธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ', + mandarin: 'ๆญฃๅœจๅŒๆญฅๆ•ฐๆฎๅบ“' }, lastSync: { english: 'last sync', @@ -3623,7 +5411,11 @@ export const localizations = { brazilian_portuguese: 'รบltima sincronizaรงรฃo', tok_pisin: 'las sync', indonesian: 'sinkron terakhir', - nepali: 'เค…เคจเฅเคคเคฟเคฎ เคธเคฟเค™เฅเค•' + nepali: 'เค…เคจเฅเคคเคฟเคฎ เคธเคฟเค™เฅเค•', + hindi: 'เค…เค‚เคคเคฟเคฎ เคธเคฟเค‚เค•', + burmese: 'แ€”แ€ฑแ€ฌแ€€แ€บแ€†แ€ฏแ€ถแ€ธ แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธ‹เธดเธ‡เธ„เนŒเธฅเนˆเธฒเธชเธธเธ”', + mandarin: 'ไธŠๆฌกๅŒๆญฅ' }, never: { english: 'Never', @@ -3631,7 +5423,11 @@ export const localizations = { brazilian_portuguese: 'Nunca', tok_pisin: 'Nogat', indonesian: 'Tidak pernah', - nepali: 'เค•เคนเคฟเคฒเฅเคฏเฅˆ เคนเฅ‹เค‡เคจ' + nepali: 'เค•เคนเคฟเคฒเฅเคฏเฅˆ เคนเฅ‹เค‡เคจ', + hindi: 'เค•เคญเฅ€ เคจเคนเฅ€เค‚', + burmese: 'แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ซแ€™แ€ปแ€พ', + thai: 'เน„เธกเนˆเน€เธ„เธข', + mandarin: 'ไปŽไธ' }, unknown: { english: 'unknown', @@ -3639,7 +5435,11 @@ export const localizations = { brazilian_portuguese: 'desconhecido', tok_pisin: 'mi no save', indonesian: 'tidak dikenal', - nepali: 'เค…เคœเฅเคžเคพเคค' + nepali: 'เค…เคœเฅเคžเคพเคค', + hindi: 'เค…เคœเฅเคžเคพเคค', + burmese: 'แ€™แ€žแ€ญแ€žแ€ฑแ€ฌ', + thai: 'เน„เธกเนˆเธ—เธฃเธฒเธš', + mandarin: 'ๆœช็Ÿฅ' }, notSynced: { english: 'not synced', @@ -3647,7 +5447,11 @@ export const localizations = { brazilian_portuguese: 'nรฃo sincronizado', tok_pisin: 'i no sync yet', indonesian: 'tidak disinkronkan', - nepali: 'เคธเคฟเค™เฅเค• เคญเคเค•เฅ‹ เค›เฅˆเคจ' + nepali: 'เคธเคฟเค™เฅเค• เคญเคเค•เฅ‹ เค›เฅˆเคจ', + hindi: 'เคธเคฟเค‚เค• เคจเคนเฅ€เค‚ เคนเฅเค†', + burmese: 'แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€™แ€‘แ€ฌแ€ธแ€žแ€ฑแ€ธแ€•แ€ซ', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเน„เธ”เน‰เธ‹เธดเธ‡เธ„เนŒ', + mandarin: 'ๆœชๅŒๆญฅ' }, connecting: { english: 'connecting', @@ -3655,7 +5459,11 @@ export const localizations = { brazilian_portuguese: 'conectando', tok_pisin: 'i try long connect', indonesian: 'menghubungkan', - nepali: 'เคœเคกเคพเคจ เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคœเคกเคพเคจ เค—เคฐเฅเคฆเฅˆ', + hindi: 'เค•เคจเฅ‡เค•เฅเคŸ เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญ', + mandarin: 'ๆญฃๅœจ่ฟžๆŽฅ' }, disconnected: { english: 'disconnected', @@ -3663,7 +5471,11 @@ export const localizations = { brazilian_portuguese: 'desconectado', tok_pisin: 'i no connect', indonesian: 'terputus', - nepali: 'เคตเคฟเคšเฅเค›เฅ‡เคฆ เคญเคฏเฅ‹' + nepali: 'เคตเคฟเคšเฅเค›เฅ‡เคฆ เคญเคฏเฅ‹', + hindi: 'เคกเคฟเคธเฅเค•เคจเฅ‡เค•เฅเคŸ เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€™แ€พแ€ฏ แ€•แ€ผแ€แ€บแ€แ€ฑแ€ฌแ€€แ€บแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ•เธฑเธ”เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญ', + mandarin: 'ๅทฒๆ–ญๅผ€่ฟžๆŽฅ' }, syncingAttachments: { english: 'syncing attachments', @@ -3671,7 +5483,11 @@ export const localizations = { brazilian_portuguese: 'sincronizando anexos', tok_pisin: 'i sync ol attachment', indonesian: 'mengosinkronkan lampiran', - nepali: 'เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคฟเค™เฅเค• เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคฟเค™เฅเค• เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคฟเค‚เค• เคนเฅ‹ เคฐเคนเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธ แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ‹เธดเธ‡เธ„เนŒเน„เธŸเธฅเนŒเนเธ™เธš', + mandarin: 'ๆญฃๅœจๅŒๆญฅ้™„ไปถ' }, attachmentSync: { english: 'attachment sync', @@ -3679,7 +5495,11 @@ export const localizations = { brazilian_portuguese: 'sincronizaรงรฃo de anexos', tok_pisin: 'attachment sync', indonesian: 'sinkron lampiran', - nepali: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคฟเค™เฅเค•' + nepali: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคฟเค™เฅเค•', + hindi: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคฟเค‚เค•', + burmese: 'แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธ แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเน„เธŸเธฅเนŒเนเธ™เธš', + mandarin: '้™„ไปถๅŒๆญฅ' }, databaseSyncError: { english: 'database sync error', @@ -3687,7 +5507,11 @@ export const localizations = { brazilian_portuguese: 'erro de sincronizaรงรฃo de banco de dados', tok_pisin: 'database sync i gat problem', indonesian: 'kesalahan sinkron basis data', - nepali: 'เคกเคพเคŸเคพเคฌเฅ‡เคธ เคธเคฟเค™เฅเค• เคคเฅเคฐเฅเคŸเคฟ' + nepali: 'เคกเคพเคŸเคพเคฌเฅ‡เคธ เคธเคฟเค™เฅเค• เคคเฅเคฐเฅเคŸเคฟ', + hindi: 'เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟ', + burmese: 'แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บ แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ', + mandarin: 'ๆ•ฐๆฎๅบ“ๅŒๆญฅ้”™่ฏฏ' }, attachmentSyncError: { english: 'attachment sync error', @@ -3695,7 +5519,11 @@ export const localizations = { brazilian_portuguese: 'erro de sincronizaรงรฃo de anexos', tok_pisin: 'attachment sync i gat problem', indonesian: 'kesalahan sinkron lampiran', - nepali: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคฟเค™เฅเค• เคคเฅเคฐเฅเคŸเคฟ' + nepali: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคฟเค™เฅเค• เคคเฅเคฐเฅเคŸเคฟ', + hindi: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟ', + burmese: 'แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธ แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเน„เธŸเธฅเนŒเนเธ™เธš', + mandarin: '้™„ไปถๅŒๆญฅ้”™่ฏฏ' }, uploadingData: { english: 'uploading data', @@ -3703,7 +5531,11 @@ export const localizations = { brazilian_portuguese: 'enviando dados', tok_pisin: 'i upload data', indonesian: 'mengunggah data', - nepali: 'เคกเคพเคŸเคพ เค…เคชเคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคกเคพเคŸเคพ เค…เคชเคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคกเฅ‡เคŸเคพ เค…เคชเคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€’แ€ฑแ€แ€ฌ แ€กแ€•แ€บแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธญเธฑเธ›เน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅ', + mandarin: 'ๆญฃๅœจไธŠไผ ๆ•ฐๆฎ' }, downloadingData: { english: 'downloading data', @@ -3711,7 +5543,11 @@ export const localizations = { brazilian_portuguese: 'baixando dados', tok_pisin: 'i download data', indonesian: 'mengunduh data', - nepali: 'เคกเคพเคŸเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคกเคพเคŸเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคกเฅ‡เคŸเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€’แ€ฑแ€แ€ฌ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ‚เน‰เธญเธกเธนเธฅ', + mandarin: 'ๆญฃๅœจไธ‹่ฝฝๆ•ฐๆฎ' }, syncError: { english: 'sync error', @@ -3719,7 +5555,11 @@ export const localizations = { brazilian_portuguese: 'erro de sincronizaรงรฃo', tok_pisin: 'sync i gat problem', indonesian: 'kesalahan sinkron', - nepali: 'เคธเคฟเค™เฅเค• เคคเฅเคฐเฅเคŸเคฟ' + nepali: 'เคธเคฟเค™เฅเค• เคคเฅเคฐเฅเคŸเคฟ', + hindi: 'เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟ', + burmese: 'แ€กแ€„แ€บแ€แ€ปแ€ฏแ€”แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒ', + mandarin: 'ๅŒๆญฅ้”™่ฏฏ' }, tapForDetails: { english: 'tap for details', @@ -3727,7 +5567,11 @@ export const localizations = { brazilian_portuguese: 'toque para detalhes', tok_pisin: 'presim long lukim moa', indonesian: 'ketuk untuk detail', - nepali: 'เคตเคฟเคตเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เคŸเฅเคฏเคพเคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคตเคฟเคตเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เคŸเฅเคฏเคพเคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคตเคฟเคตเคฐเคฃ เค•เฅ‡ เคฒเคฟเค เคŸเฅˆเคช เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€žแ€ฑแ€ธแ€…แ€ญแ€แ€บแ€™แ€ปแ€ฌแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€‘แ€ญแ€•แ€ซ', + thai: 'เนเธ•เธฐเน€เธžเธทเนˆเธญเธ”เธนเธฃเธฒเธขเธฅเธฐเน€เธญเธตเธขเธ”', + mandarin: '็‚นๅ‡ปๆŸฅ็œ‹่ฏฆๆƒ…' }, downloadComplete: { english: 'download complete', @@ -3735,7 +5579,11 @@ export const localizations = { brazilian_portuguese: 'download completo', tok_pisin: 'download i pinis', indonesian: 'unduhan selesai', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธ แ€•แ€ผแ€ฎแ€ธแ€…แ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธชเธฃเน‡เธˆเธชเธดเน‰เธ™', + mandarin: 'ไธ‹่ฝฝๅฎŒๆˆ' }, queued: { english: 'queued', @@ -3743,7 +5591,11 @@ export const localizations = { brazilian_portuguese: 'em fila', tok_pisin: 'i wet long lain', indonesian: 'dalam antrian', - nepali: 'เคชเค™เฅเค•เฅเคคเคฟเคฎเคพ เค›' + nepali: 'เคชเค™เฅเค•เฅเคคเคฟเคฎเคพ เค›', + hindi: 'เค•เคคเคพเคฐ เคฎเฅ‡เค‚', + burmese: 'แ€แ€”แ€บแ€ธแ€…แ€ฎแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธญเธขเธนเนˆเนƒเธ™เธ„เธดเธง', + mandarin: 'ๅทฒๆŽ’้˜Ÿ' }, queuedForDownload: { english: 'queued for download', @@ -3751,7 +5603,11 @@ export const localizations = { brazilian_portuguese: 'em fila para baixar', tok_pisin: 'i wet long lain long download', indonesian: 'dalam antrian untuk unduhan', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคกเค•เฅ‹ เคฒเคพเค—เคฟ เคชเค™เฅเค•เฅเคคเคฟเคฎเคพ' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคกเค•เฅ‹ เคฒเคพเค—เคฟ เคชเค™เฅเค•เฅเคคเคฟเคฎเคพ', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เฅ‡ เคฒเคฟเค เค•เคคเคพเคฐ เคฎเฅ‡เค‚', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€แ€”แ€บแ€ธแ€…แ€ฎแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธญเธขเธนเนˆเนƒเธ™เธ„เธดเธงเธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”', + mandarin: 'ๅทฒๆŽ’้˜Ÿ็ญ‰ๅพ…ไธ‹่ฝฝ' }, complete: { english: 'complete', @@ -3759,7 +5615,11 @@ export const localizations = { brazilian_portuguese: 'completo', tok_pisin: 'pinis', indonesian: 'selesai', - nepali: 'เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹' + nepali: 'เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹', + hindi: 'เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€•แ€ผแ€ฎแ€ธแ€…แ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน€เธชเธฃเน‡เธˆเธชเธกเธšเธนเธฃเธ“เนŒ', + mandarin: 'ๅฎŒๆˆ' }, loadMore: { english: 'load more', @@ -3767,7 +5627,11 @@ export const localizations = { brazilian_portuguese: 'carregar mais', tok_pisin: 'bringim moa', indonesian: 'muat lebih banyak', - nepali: 'เคฅเคช เคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฅเคช เคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค”เคฐ เคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ญแ€ฏแ€™แ€ญแ€ฏแ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน‚เธซเธฅเธ”เน€เธžเธดเนˆเธกเน€เธ•เธดเธก', + mandarin: 'ๅŠ ่ฝฝๆ›ดๅคš' }, loading: { english: 'loading', @@ -3775,7 +5639,11 @@ export const localizations = { brazilian_portuguese: 'carregando', tok_pisin: 'loadim', indonesian: 'memuat', - nepali: 'เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€–แ€ฝแ€„แ€ทแ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เน‚เธซเธฅเธ”', + mandarin: 'ๅŠ ่ฝฝไธญ' }, assetMadeInvisibleAllQuests: { english: 'The asset has been made invisible for all quests', @@ -3783,7 +5651,11 @@ export const localizations = { brazilian_portuguese: 'O asset foi feito invisรญvel para todas as quests', tok_pisin: 'Asset i make invisible long all quest', indonesian: 'Asset dibuat tidak terlihat untuk semua quest', - nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคเคธเฅ‡เคŸ เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€™แ€™แ€ผแ€„แ€บแ€›แ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน„เธกเนˆเน€เธซเน‡เธ™เธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: '่ฏฅ่ต„ไบงๅทฒๅฏนๆ‰€ๆœ‰ไปปๅŠก่ฎพไธบไธๅฏ่ง' }, assetMadeVisibleAllQuests: { english: 'The asset has been made visible for all quests', @@ -3791,7 +5663,12 @@ export const localizations = { brazilian_portuguese: 'O asset foi feito visรญvel para todas as quests', tok_pisin: 'Asset i make visible long all quest', indonesian: 'Asset dibuat terlihat untuk semua quest', - nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคเคธเฅ‡เคŸ เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: + 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: '่ฏฅ่ต„ไบงๅทฒๅฏนๆ‰€ๆœ‰ไปปๅŠก่ฎพไธบๅฏ่ง' }, assetMadeInactiveAllQuests: { english: 'The asset has been made inactive for all quests', @@ -3799,7 +5676,12 @@ export const localizations = { brazilian_portuguese: 'O asset foi feito inativo para todas as quests', tok_pisin: 'Asset i make inactive long all quest', indonesian: 'Asset dibuat tidak aktif untuk semua quest', - nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคเคธเฅ‡เคŸ เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: + 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€™แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ—เธณเนƒเธซเน‰เน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: '่ฏฅ่ต„ไบงๅทฒๅฏนๆ‰€ๆœ‰ไปปๅŠก่ฎพไธบ้žๆดปๅŠจ' }, assetMadeActiveAllQuests: { english: 'The asset has been made active for all quests', @@ -3807,7 +5689,12 @@ export const localizations = { brazilian_portuguese: 'O asset foi feito ativo para todas as quests', tok_pisin: 'Asset i make active long all quest', indonesian: 'Asset dibuat aktif untuk semua quest', - nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคเคธเฅ‡เคŸ เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: + 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ—เธณเนƒเธซเน‰เนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰เธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: '่ฏฅ่ต„ไบงๅทฒๅฏนๆ‰€ๆœ‰ไปปๅŠก่ฎพไธบๆดปๅŠจ' }, failedToUpdateAssetSettings: { english: 'Failed to update asset settings', @@ -3815,7 +5702,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao atualizar os ajustes do asset', tok_pisin: 'I no inap update asset settings', indonesian: 'Gagal mengupdate pengaturan asset', - nepali: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค‚เค— เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธญเธฑเธ›เน€เธ”เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เน„เธ”เน‰', + mandarin: 'ๆ›ดๆ–ฐ่ต„ไบง่ฎพ็ฝฎๅคฑ่ดฅ' }, assetMadeInvisibleQuest: { english: 'The asset has been made invisible for this quest', @@ -3823,7 +5714,11 @@ export const localizations = { brazilian_portuguese: 'O asset foi feito invisรญvel para esta quest', tok_pisin: 'Asset i make invisible long quest', indonesian: 'Asset dibuat tidak terlihat untuk quest ini', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเคธเฅ‡เคŸ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเคธเฅ‡เคŸ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคเคธเฅ‡เคŸ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€แ€ฝแ€€แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€™แ€™แ€ผแ€„แ€บแ€›แ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน„เธกเนˆเน€เธซเน‡เธ™เธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰', + mandarin: '่ฏฅ่ต„ไบงๅทฒๅฏนๆญคไปปๅŠก่ฎพไธบไธๅฏ่ง' }, assetMadeVisibleQuest: { english: 'The asset has been made visible for this quest', @@ -3831,7 +5726,11 @@ export const localizations = { brazilian_portuguese: 'O asset foi feito visรญvel para esta quest', tok_pisin: 'Asset i make visible long quest', indonesian: 'Asset dibuat terlihat untuk quest ini', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเคธเฅ‡เคŸ เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเคธเฅ‡เคŸ เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคเคธเฅ‡เคŸ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€แ€ฝแ€€แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰', + mandarin: '่ฏฅ่ต„ไบงๅทฒๅฏนๆญคไปปๅŠก่ฎพไธบๅฏ่ง' }, assetMadeInactiveQuest: { english: 'The asset has been made inactive for this quest', @@ -3839,7 +5738,11 @@ export const localizations = { brazilian_portuguese: 'O asset foi feito inativo para esta quest', tok_pisin: 'Asset i make inactive long quest', indonesian: 'Asset dibuat tidak aktif untuk quest ini', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเคธเฅ‡เคŸ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเคธเฅ‡เคŸ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคเคธเฅ‡เคŸ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€แ€ฝแ€€แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€™แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ—เธณเนƒเธซเน‰เน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰', + mandarin: '่ฏฅ่ต„ไบงๅทฒๅฏนๆญคไปปๅŠก่ฎพไธบ้žๆดปๅŠจ' }, assetMadeActiveQuest: { english: 'The asset has been made active for this quest', @@ -3847,7 +5750,11 @@ export const localizations = { brazilian_portuguese: 'O asset foi feito ativo para esta quest', tok_pisin: 'Asset i make active long quest', indonesian: 'Asset dibuat aktif untuk quest ini', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเคธเฅ‡เคŸ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคเคธเฅ‡เคŸ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคเคธเฅ‡เคŸ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€แ€ฝแ€€แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ—เธณเนƒเธซเน‰เนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰เธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰', + mandarin: '่ฏฅ่ต„ไบงๅทฒๅฏนๆญคไปปๅŠก่ฎพไธบๆดปๅŠจ' }, assetSettings: { english: 'Asset Settings', @@ -3855,7 +5762,11 @@ export const localizations = { brazilian_portuguese: 'Ajustes do Asset', tok_pisin: 'Asset Settings', indonesian: 'Pengaturan Asset', - nepali: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚' + nepali: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚', + hindi: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค‚เค—', + burmese: 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™', + mandarin: '่ต„ไบง่ฎพ็ฝฎ' }, assetSettingsLoadError: { english: 'Error loading asset settings.', @@ -3863,7 +5774,11 @@ export const localizations = { brazilian_portuguese: 'Erro ao carregar as configuraรงรตes do asset.', tok_pisin: 'I no inap load asset settings', indonesian: 'Gagal memuat pengaturan asset.', - nepali: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเคพ เคคเฅเคฐเฅเคŸเคฟเฅค' + nepali: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเคพ เคคเฅเคฐเฅเคŸเคฟเฅค', + hindi: 'เคเคธเฅ‡เคŸ เคธเฅ‡เคŸเคฟเค‚เค— เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคคเฅเคฐเฅเคŸเคฟเฅค', + burmese: 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€กแ€™แ€พแ€ฌแ€ธแ€กแ€šแ€ฝแ€„แ€บแ€ธแ‹', + thai: 'เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเน‚เธซเธฅเธ”เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™', + mandarin: 'ๅŠ ่ฝฝ่ต„ไบง่ฎพ็ฝฎๆ—ถๅ‡บ้”™ใ€‚' }, general: { english: 'General', @@ -3871,7 +5786,11 @@ export const localizations = { brazilian_portuguese: 'Geral', tok_pisin: 'General', indonesian: 'Umum', - nepali: 'เคธเคพเคฎเคพเคจเฅเคฏ' + nepali: 'เคธเคพเคฎเคพเคจเฅเคฏ', + hindi: 'เคธเคพเคฎเคพเคจเฅเคฏ', + burmese: 'แ€กแ€‘แ€ฝแ€ฑแ€‘แ€ฝแ€ฑ', + thai: 'เธ—เธฑเนˆเธงเน„เธ›', + mandarin: 'ๅธธ่ง„' }, currentQuest: { english: 'Current Quest', @@ -3879,7 +5798,11 @@ export const localizations = { brazilian_portuguese: 'Quest Atual', tok_pisin: 'Current Quest', indonesian: 'Quest Saat Ini', - nepali: 'เคนเคพเคฒเค•เฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ' + nepali: 'เคนเคพเคฒเค•เฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ', + hindi: 'เคตเคฐเฅเคคเคฎเคพเคจ เค•เฅเคตเฅ‡เคธเฅเคŸ', + burmese: 'แ€œแ€€แ€บแ€›แ€พแ€ญ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บ', + thai: 'เน€เธ„เธงเธชเธ•เนŒเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™', + mandarin: 'ๅฝ“ๅ‰ไปปๅŠก' }, visibility: { english: 'Visibility', @@ -3887,7 +5810,11 @@ export const localizations = { brazilian_portuguese: 'Visibilidade', tok_pisin: 'Visibility', indonesian: 'Visibilitas', - nepali: 'เคฆเฅƒเคถเฅเคฏเคคเคพ' + nepali: 'เคฆเฅƒเคถเฅเคฏเคคเคพ', + hindi: 'เคฆเฅƒเคถเฅเคฏเคคเคพ', + burmese: 'แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ', + thai: 'เธเธฒเธฃเธกเธญเธ‡เน€เธซเน‡เธ™', + mandarin: 'ๅฏ่งๆ€ง' }, active: { english: 'Active', @@ -3895,7 +5822,11 @@ export const localizations = { brazilian_portuguese: 'Ativo', tok_pisin: 'Active', indonesian: 'Aktif', - nepali: 'เคธเค•เฅเคฐเคฟเคฏ' + nepali: 'เคธเค•เฅเคฐเคฟเคฏ', + hindi: 'เคธเค•เฅเคฐเคฟเคฏ', + burmese: 'แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เนƒเธŠเน‰เธ‡เธฒเธ™', + mandarin: 'ๆดปๅŠจ' }, visibilityDescription: { english: @@ -3908,7 +5839,13 @@ export const localizations = { indonesian: 'Asset terlihat secara default di semua quest, kecuali disembunyikan secara individual.', nepali: - 'เคเคธเฅ‡เคŸ เคชเฅ‚เคฐเฅเคตเคจเคฟเคฐเฅเคงเคพเคฐเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เคฆเฅ‡เค–เคฟเคจเฅเค›, เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคชเคฎเคพ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค' + 'เคเคธเฅ‡เคŸ เคชเฅ‚เคฐเฅเคตเคจเคฟเคฐเฅเคงเคพเคฐเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เคฆเฅ‡เค–เคฟเคจเฅเค›, เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคชเคฎเคพ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค', + hindi: + 'เคเคธเฅ‡เคŸ เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ เคฐเฅ‚เคช เคธเฅ‡ เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคนเฅˆ, เคœเคฌ เคคเค• เค•เคฟ เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคช เคธเฅ‡ เค›เฅเคชเคพเคฏเคพ เคจ เคœเคพเคเฅค', + burmese: + 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€žแ€Šแ€บ แ€•แ€ฏแ€ถแ€™แ€พแ€”แ€บแ€กแ€ฌแ€ธแ€–แ€ผแ€„แ€ทแ€บ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€แ€ฝแ€„แ€บ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแŠ แ€แ€…แ€บแ€แ€ฏแ€แ€ปแ€„แ€บแ€ธแ€…แ€ฎ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€™แ€พแ€žแ€ฌ แ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ€€แ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธˆเธฐเธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เน‚เธ”เธขเธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ” เน€เธงเน‰เธ™เนเธ•เนˆเธˆเธฐเธ‹เนˆเธญเธ™เน€เธ›เน‡เธ™เธฃเธฒเธขเธเธฒเธฃ', + mandarin: '่ต„ไบง้ป˜่ฎคๅœจๆ‰€ๆœ‰ไปปๅŠกไธญๅฏ่ง๏ผŒ้™ค้žๅ•็‹ฌ้š่—ใ€‚' }, activeDescription: { english: @@ -3922,7 +5859,13 @@ export const localizations = { indonesian: 'Asset aktif dan dapat digunakan di semua quest, kecuali dinonaktifkan secara individual.', nepali: - 'เคเคธเฅ‡เคŸ เคธเค•เฅเคฐเคฟเคฏ เค› เคฐ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›, เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคชเคฎเคพ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคชเคพเคฐเคฟเคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค' + 'เคเคธเฅ‡เคŸ เคธเค•เฅเคฐเคฟเคฏ เค› เคฐ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›, เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคชเคฎเคพ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคชเคพเคฐเคฟเคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค', + hindi: + 'เคเคธเฅ‡เคŸ เคธเค•เฅเคฐเคฟเคฏ เคนเฅˆ เค”เคฐ เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เค‰เคชเคฏเฅ‹เค— เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพ เคนเฅˆ, เคœเคฌ เคคเค• เค•เคฟ เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคช เคธเฅ‡ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคจ เค•เคฟเคฏเคพ เคœเคพเคเฅค', + burmese: + 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€žแ€Šแ€บ แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€”แ€ฑแ€•แ€ผแ€ฎแ€ธ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€แ€ฝแ€„แ€บ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแŠ แ€แ€…แ€บแ€แ€ฏแ€แ€ปแ€„แ€บแ€ธแ€…แ€ฎ แ€•แ€ญแ€แ€บแ€‘แ€ฌแ€ธแ€™แ€พแ€žแ€ฌ แ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ€€แ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰เนเธฅเธฐเธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เน„เธ”เน‰ เน€เธงเน‰เธ™เนเธ•เนˆเธˆเธฐเธ›เธดเธ”เธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™เน€เธ›เน‡เธ™เธฃเธฒเธขเธเธฒเธฃ', + mandarin: '่ต„ไบงๅค„ไบŽๆดปๅŠจ็Šถๆ€๏ผŒๅฏๅœจๆ‰€ๆœ‰ไปปๅŠกไธญไฝฟ็”จ๏ผŒ้™ค้žๅ•็‹ฌๅœ็”จใ€‚' }, visibilityDescriptionQuest: { english: @@ -3935,7 +5878,13 @@ export const localizations = { indonesian: 'Asset terlihat secara default di quest ini, kecuali disembunyikan secara individual.', nepali: - 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เคชเฅ‚เคฐเฅเคตเคจเคฟเคฐเฅเคงเคพเคฐเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคฆเฅ‡เค–เคฟเคจเฅเค›, เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคชเคฎเคพ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค' + 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เคชเฅ‚เคฐเฅเคตเคจเคฟเคฐเฅเคงเคพเคฐเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคฆเฅ‡เค–เคฟเคจเฅเค›, เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคชเคฎเคพ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค', + hindi: + 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เคเคธเฅ‡เคŸ เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ เคฐเฅ‚เคช เคธเฅ‡ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคนเฅˆ, เคœเคฌ เคคเค• เค•เคฟ เคตเฅเคฏเค•เฅเคคเคฟเค—เคค เคฐเฅ‚เคช เคธเฅ‡ เค›เฅเคชเคพเคฏเคพ เคจ เคœเคพเคเฅค', + burmese: + 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€แ€ฝแ€„แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€žแ€Šแ€บ แ€•แ€ฏแ€ถแ€™แ€พแ€”แ€บแ€กแ€ฌแ€ธแ€–แ€ผแ€„แ€ทแ€บ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแŠ แ€แ€…แ€บแ€แ€ฏแ€แ€ปแ€„แ€บแ€ธแ€…แ€ฎ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€™แ€พแ€žแ€ฌ แ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ€€แ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธˆเธฐเธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เน‚เธ”เธขเธ„เนˆเธฒเน€เธฃเธดเนˆเธกเธ•เน‰เธ™เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰ เน€เธงเน‰เธ™เนเธ•เนˆเธˆเธฐเธ‹เนˆเธญเธ™เน€เธ›เน‡เธ™เธฃเธฒเธขเธเธฒเธฃ', + mandarin: '่ต„ไบง้ป˜่ฎคๅœจๆญคไปปๅŠกไธญๅฏ่ง๏ผŒ้™ค้žๅ•็‹ฌ้š่—ใ€‚' }, assetHiddenAllQuests: { english: @@ -3948,7 +5897,13 @@ export const localizations = { 'Asset i hait long olgeta quest na yu no ken mekim save long wanpela.', indonesian: 'Asset disembunyikan di semua quest dan tidak dapat dibuat terlihat di salah satunya.', - nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค› เคฐ เค•เฅเคจเฅˆเคฎเคพ เคชเคจเคฟ เคฆเฅ‡เค–เคพเค‰เคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค› เคฐ เค•เฅเคจเฅˆเคฎเคพ เคชเคจเคฟ เคฆเฅ‡เค–เคพเค‰เคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: + 'เคเคธเฅ‡เคŸ เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เค›เฅเคชเคพเคฏเคพ เค—เคฏเคพ เคนเฅˆ เค”เคฐ เค•เคฟเคธเฅ€ เคฎเฅ‡เค‚ เคญเฅ€ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคจเคนเฅ€เค‚ เคฌเคจเคพเคฏเคพ เคœเคพ เคธเค•เคคเคพเฅค', + burmese: + 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€žแ€Šแ€บ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€แ€ฝแ€„แ€บ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€•แ€ผแ€ฎแ€ธ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€แ€…แ€บแ€แ€ฏแ€แ€ฝแ€„แ€บแ€™แ€พ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€กแ€ฑแ€ฌแ€„แ€บ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ‹เนˆเธญเธ™เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เนเธฅเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเนƒเธ”เน†', + mandarin: '่ต„ไบงๅœจๆ‰€ๆœ‰ไปปๅŠกไธญ้š่—๏ผŒๆ— ๆณ•ๅœจไปปไฝ•ไปปๅŠกไธญ่ฎพไธบๅฏ่งใ€‚' }, assetDisabledAllQuests: { english: @@ -3961,7 +5916,12 @@ export const localizations = { 'Asset i stop long olgeta quest na yu no ken usim long wanpela hap.', indonesian: 'Asset dinonaktifkan di semua quest dan tidak dapat digunakan di mana pun.', - nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เค…เคธเค•เฅเคทเคฎ เค› เคฐ เค•เคนเฅ€เค เคชเคจเคฟ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + nepali: 'เคเคธเฅ‡เคŸ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เค…เคธเค•เฅเคทเคฎ เค› เคฐ เค•เคนเฅ€เค เคชเคจเคฟ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: 'เคเคธเฅ‡เคŸ เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เค…เค•เฅเคทเคฎ เคนเฅˆ เค”เคฐ เค•เคนเฅ€เค‚ เคญเฅ€ เค‰เคชเคฏเฅ‹เค— เคจเคนเฅ€เค‚ เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพเฅค', + burmese: + 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€žแ€Šแ€บ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ญแ€แ€บแ€‘แ€ฌแ€ธแ€•แ€ผแ€ฎแ€ธ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€”แ€ฑแ€›แ€ฌแ€แ€ฝแ€„แ€บแ€™แ€พ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ›เธดเธ”เธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เนเธฅเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰เธ—เธธเธเธ—เธตเนˆ', + mandarin: '่ต„ไบงๅœจๆ‰€ๆœ‰ไปปๅŠกไธญๅทฒ็ฆ็”จ๏ผŒๆ— ๆณ•ๅœจไปปไฝ•ๅœฐๆ–นไฝฟ็”จใ€‚' }, assetGeneralSettingsDescription: { english: 'These settings affect how the asset behaves across all quests.', @@ -3973,7 +5933,12 @@ export const localizations = { 'Ol dispela setting i senisim how asset i wok long olgeta quest.', indonesian: 'Pengaturan ini mempengaruhi bagaimana asset berperilaku di semua quest.', - nepali: 'เคฏเฅ€ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚เคฒเฅ‡ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เคเคธเฅ‡เคŸเค•เฅ‹ เคตเฅเคฏเคตเคนเคพเคฐเคฒเคพเคˆ เคชเฅเคฐเคญเคพเคต เคชเคพเคฐเฅเค›เคจเฅเฅค' + nepali: 'เคฏเฅ€ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚เคฒเฅ‡ เคธเคฌเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚เคฎเคพ เคเคธเฅ‡เคŸเค•เฅ‹ เคตเฅเคฏเคตเคนเคพเคฐเคฒเคพเคˆ เคชเฅเคฐเคญเคพเคต เคชเคพเคฐเฅเค›เคจเฅเฅค', + hindi: 'เคฏเฅ‡ เคธเฅ‡เคŸเคฟเค‚เค— เคธเคญเฅ€ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เคเคธเฅ‡เคŸ เค•เฅ‡ เคตเฅเคฏเคตเคนเคพเคฐ เค•เฅ‹ เคชเฅเคฐเคญเคพเคตเคฟเคค เค•เคฐเคคเฅ€ เคนเฅˆเค‚เฅค', + burmese: + 'แ€คแ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€žแ€Šแ€บ แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€แ€ฝแ€„แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€•แ€ฏแ€ถแ€€แ€ญแ€ฏ แ€žแ€€แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€™แ€พแ€ฏแ€›แ€พแ€ญแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธชเนˆเธ‡เธœเธฅเธ•เนˆเธญเธžเธคเธ•เธดเธเธฃเธฃเธกเธ‚เธญเธ‡เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: '่ฟ™ไบ›่ฎพ็ฝฎไผšๅฝฑๅ“่ต„ไบงๅœจๆ‰€ๆœ‰ไปปๅŠกไธญ็š„่กŒไธบใ€‚' }, questSpecificSettingsDescription: { english: @@ -3986,7 +5951,14 @@ export const localizations = { 'Ol dispela setting i senisim how asset i wok long dispela quest.', indonesian: 'Pengaturan ini mempengaruhi bagaimana asset berperilaku di quest spesifik ini.', - nepali: 'เคฏเฅ€ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚เคฒเฅ‡ เคฏเฅ‹ เคตเคฟเคถเฅ‡เคท เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸเค•เฅ‹ เคตเฅเคฏเคตเคนเคพเคฐเคฒเคพเคˆ เคชเฅเคฐเคญเคพเคต เคชเคพเคฐเฅเค›เคจเฅเฅค' + nepali: + 'เคฏเฅ€ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚เคฒเฅ‡ เคฏเฅ‹ เคตเคฟเคถเฅ‡เคท เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸเค•เฅ‹ เคตเฅเคฏเคตเคนเคพเคฐเคฒเคพเคˆ เคชเฅเคฐเคญเคพเคต เคชเคพเคฐเฅเค›เคจเฅเฅค', + hindi: + 'เคฏเฅ‡ เคธเฅ‡เคŸเคฟเค‚เค— เค‡เคธ เคตเคฟเคถเคฟเคทเฅเคŸ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เคเคธเฅ‡เคŸ เค•เฅ‡ เคตเฅเคฏเคตเคนเคพเคฐ เค•เฅ‹ เคชเฅเคฐเคญเคพเคตเคฟเคค เค•เคฐเคคเฅ€ เคนเฅˆเค‚เฅค', + burmese: + 'แ€คแ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€žแ€Šแ€บ แ€คแ€กแ€‘แ€ฐแ€ธแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€แ€ฝแ€„แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€•แ€ฏแ€ถแ€€แ€ญแ€ฏ แ€žแ€€แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€™แ€พแ€ฏแ€›แ€พแ€ญแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธชเนˆเธ‡เธœเธฅเธ•เนˆเธญเธžเธคเธ•เธดเธเธฃเธฃเธกเธ‚เธญเธ‡เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเน€เธ‰เธžเธฒเธฐเธ™เธตเน‰', + mandarin: '่ฟ™ไบ›่ฎพ็ฝฎไผšๅฝฑๅ“่ต„ไบงๅœจๆญค็‰นๅฎšไปปๅŠกไธญ็š„่กŒไธบใ€‚' }, assetDisabledWarning: { english: @@ -4000,7 +5972,13 @@ export const localizations = { indonesian: 'Asset ini dinonaktifkan secara global. Anda tidak dapat mengubah pengaturannya untuk quest ini.', nepali: - 'เคฏเฅ‹ เคเคธเฅ‡เคŸ เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เค…เคธเค•เฅเคทเคฎ เค›เฅค เคคเคชเคพเคˆเค‚ เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคฏเคธเค•เฅ‹ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจเฅค' + 'เคฏเฅ‹ เคเคธเฅ‡เคŸ เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เค…เคธเค•เฅเคทเคฎ เค›เฅค เคคเคชเคพเคˆเค‚ เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคฒเคพเค—เคฟ เคฏเคธเค•เฅ‹ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจเฅค', + hindi: + 'เคฏเคน เคเคธเฅ‡เคŸ เคตเฅˆเคถเฅเคตเคฟเค• เคฐเฅ‚เคช เคธเฅ‡ เค…เค•เฅเคทเคฎ เคนเฅˆเฅค เค†เคช เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‡ เคฒเคฟเค เค‡เคธเค•เฅ€ เคธเฅ‡เคŸเคฟเค‚เค— เคฌเคฆเคฒ เคจเคนเฅ€เค‚ เคธเค•เคคเฅ‡เฅค', + burmese: + 'แ€คแ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€žแ€Šแ€บ แ€€แ€™แ€นแ€˜แ€ฌแ€แ€…แ€บแ€แ€พแ€™แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ญแ€แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บแ‹ แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€กแ€แ€ฝแ€€แ€บ แŽแ€„แ€บแ€ธแแ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€žแ€„แ€บแ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€œแ€ฒแแ€™แ€›แ€•แ€ซแ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ™เธตเน‰เธ–เธนเธเธ›เธดเธ”เธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™เธ—เธฑเนˆเธงเน‚เธฅเธ เธ„เธธเธ“เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธฅเธตเนˆเธขเธ™เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธชเธณเธซเธฃเธฑเธšเน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰เน„เธ”เน‰', + mandarin: 'ๆญค่ต„ไบงๅทฒๅœจๅ…จๅฑ€็ฆ็”จใ€‚ๆ‚จๆ— ๆณ•ๆ›ดๆ”นๆญคไปปๅŠก็š„่ฎพ็ฝฎใ€‚' }, assetVisibleThisQuest: { english: 'The asset is shown in this quest. Unless hidden globally.', @@ -4012,7 +5990,13 @@ export const localizations = { 'Asset i save long dispela quest. Sapos i no hait long olgeta hap.', indonesian: 'Asset ditampilkan di quest ini. Kecuali disembunyikan secara global.', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เคฆเฅ‡เค–เคพเค‡เคเค•เฅ‹ เค›เฅค เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เคฆเฅ‡เค–เคพเค‡เคเค•เฅ‹ เค›เฅค เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค', + hindi: + 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เคเคธเฅ‡เคŸ เคฆเคฟเค–เคพเคฏเคพ เค—เคฏเคพ เคนเฅˆเฅค เคœเคฌ เคคเค• เค•เคฟ เคตเฅˆเคถเฅเคตเคฟเค• เคฐเฅ‚เคช เคธเฅ‡ เค›เฅเคชเคพเคฏเคพ เคจ เค—เคฏเคพ เคนเฅ‹เฅค', + burmese: + 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€แ€ฝแ€„แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€•แ€ผแ€žแ€‘แ€ฌแ€ธแ€žแ€Šแ€บแ‹ แ€€แ€™แ€นแ€˜แ€ฌแ€แ€…แ€บแ€แ€พแ€™แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€™แ€พแ€žแ€ฌ แ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ€€แ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธˆเธฐเนเธชเธ”เธ‡เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰ เน€เธงเน‰เธ™เนเธ•เนˆเธˆเธฐเธ‹เนˆเธญเธ™เน„เธงเน‰เธ—เธฑเนˆเธงเน‚เธฅเธ', + mandarin: '่ต„ไบงๅœจๆญคไปปๅŠกไธญๆ˜พ็คบใ€‚้™ค้žๅœจๅ…จๅฑ€้š่—ใ€‚' }, assetHiddenThisQuest: { english: 'The asset is hidden in this quest.', @@ -4020,7 +6004,11 @@ export const localizations = { brazilian_portuguese: 'O asset estรก oculto nesta quest.', tok_pisin: 'Asset i hait long dispela quest.', indonesian: 'Asset disembunyikan di quest ini.', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค›เฅค' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค›เฅค', + hindi: 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เคเคธเฅ‡เคŸ เค›เฅเคชเคพเคฏเคพ เค—เคฏเคพ เคนเฅˆเฅค', + burmese: 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€แ€ฝแ€„แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บแ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธ–เธนเธเธ‹เนˆเธญเธ™เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰', + mandarin: '่ต„ไบงๅœจๆญคไปปๅŠกไธญ้š่—ใ€‚' }, assetActiveThisQuest: { english: @@ -4034,7 +6022,13 @@ export const localizations = { indonesian: 'Asset dapat digunakan di quest ini. Kecuali dinonaktifkan secara global.', nepali: - 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคชเคพเคฐเคฟเคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค' + 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคชเคพเคฐเคฟเคเค•เฅ‹ เคฌเคพเคนเฅ‡เค•เฅค', + hindi: + 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เคเคธเฅ‡เคŸ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพ เคนเฅˆเฅค เคœเคฌ เคคเค• เค•เคฟ เคตเฅˆเคถเฅเคตเคฟเค• เคฐเฅ‚เคช เคธเฅ‡ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคจ เค•เคฟเคฏเคพ เค—เคฏเคพ เคนเฅ‹เฅค', + burmese: + 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€แ€ฝแ€„แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€€แ€ญแ€ฏ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹ แ€€แ€™แ€นแ€˜แ€ฌแ€แ€…แ€บแ€แ€พแ€™แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ญแ€แ€บแ€‘แ€ฌแ€ธแ€™แ€พแ€žแ€ฌ แ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ€€แ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰เน„เธ”เน‰ เน€เธงเน‰เธ™เนเธ•เนˆเธˆเธฐเธ›เธดเธ”เธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™เธ—เธฑเนˆเธงเน‚เธฅเธ', + mandarin: '่ต„ไบงๅฏๅœจๆญคไปปๅŠกไธญไฝฟ็”จใ€‚้™ค้žๅœจๅ…จๅฑ€ๅœ็”จใ€‚' }, assetInactiveThisQuest: { english: 'The asset is not available in this quest.', @@ -4042,7 +6036,11 @@ export const localizations = { brazilian_portuguese: 'O asset nรฃo estรก disponรญvel nesta quest.', tok_pisin: 'Asset i no stap long dispela quest.', indonesian: 'Asset tidak tersedia di quest ini.', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจเฅค' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸเคฎเคพ เคเคธเฅ‡เคŸ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจเฅค', + hindi: 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฎเฅ‡เค‚ เคเคธเฅ‡เคŸ เค‰เคชเคฒเคฌเฅเคง เคจเคนเฅ€เค‚ เคนเฅˆเฅค', + burmese: 'แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€แ€ฝแ€„แ€บ แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏ แ€™แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', + thai: 'เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™เน„เธกเนˆเธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™เนƒเธ™เน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰', + mandarin: '่ต„ไบงๅœจๆญคไปปๅŠกไธญไธๅฏ็”จใ€‚' }, downloadProjectConfirmation: { english: 'Download this project for offline use?', @@ -4050,7 +6048,12 @@ export const localizations = { brazilian_portuguese: 'Baixar este projeto para uso offline?', tok_pisin: 'Daunim dispela project long usim taim i no gat internet?', indonesian: 'Unduh proyek ini untuk penggunaan offline?', - nepali: 'เค…เคซเคฒเคพเค‡เคจ เคชเฅเคฐเคฏเฅ‹เค—เค•เฅ‹ เคฒเคพเค—เคฟ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅ‡?' + nepali: 'เค…เคซเคฒเคพเค‡เคจ เคชเฅเคฐเคฏเฅ‹เค—เค•เฅ‹ เคฒเคพเค—เคฟ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅ‡?', + hindi: 'เค‘เคซเคฒเคพเค‡เคจ เค‰เคชเคฏเฅ‹เค— เค•เฅ‡ เคฒเคฟเค เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เฅ‹ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚?', + burmese: + 'แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌ แ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€›แ€”แ€บ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€™แ€Šแ€บแ€œแ€ฌแ€ธ?', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธŠเน‰เธ‡เธฒเธ™เนเธšเธšเธญเธญเธŸเน„เธฅเธ™เนŒ?', + mandarin: 'ไธ‹่ฝฝๆญค้กน็›ฎไปฅไพ›็ฆป็บฟไฝฟ็”จ๏ผŸ' }, downloadQuestConfirmation: { english: 'Download this quest for offline use?', @@ -4058,7 +6061,12 @@ export const localizations = { brazilian_portuguese: 'Baixar esta quest para uso offline?', tok_pisin: 'Daunim dispela quest long usim taim i no gat internet?', indonesian: 'Unduh quest ini untuk penggunaan offline?', - nepali: 'เค…เคซเคฒเคพเค‡เคจ เคชเฅเคฐเคฏเฅ‹เค—เค•เฅ‹ เคฒเคพเค—เคฟ เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅ‡?' + nepali: 'เค…เคซเคฒเคพเค‡เคจ เคชเฅเคฐเคฏเฅ‹เค—เค•เฅ‹ เคฒเคพเค—เคฟ เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅ‡?', + hindi: 'เค‘เคซเคฒเคพเค‡เคจ เค‰เคชเคฏเฅ‹เค— เค•เฅ‡ เคฒเคฟเค เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‹ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚?', + burmese: + 'แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌ แ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€›แ€”แ€บ แ€คแ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€™แ€Šแ€บแ€œแ€ฌแ€ธ?', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธ„เธงเธชเธ•เนŒเธ™เธตเน‰เน€เธžเธทเนˆเธญเนƒเธŠเน‰เธ‡เธฒเธ™เนเธšเธšเธญเธญเธŸเน„เธฅเธ™เนŒ?', + mandarin: 'ไธ‹่ฝฝๆญคไปปๅŠกไปฅไพ›็ฆป็บฟไฝฟ็”จ๏ผŸ' }, thisWillDownload: { english: 'This will download:', @@ -4066,7 +6074,11 @@ export const localizations = { brazilian_portuguese: 'Isso baixarรก:', tok_pisin: 'Dispela bai daunim:', indonesian: 'Ini akan mengunduh:', - nepali: 'เคฏเคธเคฒเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅ‡เค›:' + nepali: 'เคฏเคธเคฒเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅ‡เค›:', + hindi: 'เคฏเคน เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค—เคพ:', + burmese: 'แ€คแ€กแ€›แ€ฌแ€žแ€Šแ€บ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€™แ€Šแ€บ:', + thai: 'เธชเธดเนˆเธ‡เธ™เธตเน‰เธˆเธฐเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”:', + mandarin: '่ฟ™ๅฐ†ไธ‹่ฝฝ๏ผš' }, translations: { english: 'Translations', @@ -4074,7 +6086,11 @@ export const localizations = { brazilian_portuguese: 'Traduรงรตes', tok_pisin: 'Ol Translation', indonesian: 'Terjemahan', - nepali: 'เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚' + nepali: 'เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚', + hindi: 'เค…เคจเฅเคตเคพเคฆ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเนเธ›เธฅ', + mandarin: '็ฟป่ฏ‘' }, doRecord: { english: 'Record', @@ -4082,7 +6098,11 @@ export const localizations = { brazilian_portuguese: 'Gravar', tok_pisin: 'Rekodem', indonesian: 'Rekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€•แ€ซ', + thai: 'เธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅฝ•ๅˆถ' }, isRecording: { english: 'Recording...', @@ -4090,7 +6110,11 @@ export const localizations = { brazilian_portuguese: 'Gravando...', tok_pisin: 'Recording...', indonesian: 'Merekam...', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค—...', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธšเธฑเธ™เธ—เธถเธ...', + mandarin: 'ๅฝ•ๅˆถไธญ...' }, recordTo: { english: 'Record to', @@ -4098,7 +6122,11 @@ export const localizations = { brazilian_portuguese: 'Gravar em', tok_pisin: 'Rekodem long', indonesian: 'Rekam ke', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ', + thai: 'เธšเธฑเธ™เธ—เธถเธเน„เธ›เธขเธฑเธ‡', + mandarin: 'ๅฝ•ๅˆถๅˆฐ' }, noLabelSelected: { english: 'No label selected', @@ -4106,7 +6134,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum rรณtulo selecionado', tok_pisin: 'No label i stap', indonesian: 'Tidak ada label dipilih', - nepali: 'เค•เฅเคจเฅˆ เคฒเฅ‡เคฌเคฒ เคšเคฏเคจ เค—เคฐเคฟเคเค•เฅ‹ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคฒเฅ‡เคฌเคฒ เคšเคฏเคจ เค—เคฐเคฟเคเค•เฅ‹ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคฒเฅ‡เคฌเคฒ เคšเคฏเคจเคฟเคค เคจเคนเฅ€เค‚', + burmese: 'แ€กแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€แ€ถแ€†แ€ญแ€•แ€บ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€‘แ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเน„เธ”เน‰เน€เธฅเธทเธญเธเธ›เน‰เธฒเธขเธเธณเธเธฑเธš', + mandarin: 'ๆœช้€‰ๆ‹ฉๆ ‡็ญพ' }, startRecordingSession: { english: 'Start Recording Session', @@ -4114,7 +6146,11 @@ export const localizations = { brazilian_portuguese: 'Iniciar Sessรฃo de Gravaรงรฃo', tok_pisin: 'Stat Rekodem Taim', indonesian: 'Mulai Sesi Rekaman', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเคคเฅเคฐ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเคคเฅเคฐ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคธเคคเฅเคฐ เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€…แ€Šแ€บแ€ธแ€กแ€แ€ฑแ€ธแ€€แ€ญแ€ฏ แ€…แ€แ€„แ€บแ€•แ€ซ', + thai: 'เน€เธฃเธดเนˆเธกเน€เธ‹เธชเธŠเธฑเธ™เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅผ€ๅง‹ๅฝ•ๅˆถไผš่ฏ' }, typeToConfirm: { english: 'Type {text} to confirm', @@ -4122,7 +6158,11 @@ export const localizations = { brazilian_portuguese: 'Digite {text} para confirmar', tok_pisin: 'Raitim {text} bilong siaim', indonesian: 'Ketik {text} untuk mengkonfirmasi', - nepali: 'เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจ {text} เคŸเคพเค‡เคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจ {text} เคŸเคพเค‡เคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅเคทเฅเคŸเคฟ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค {text} เคŸเคพเค‡เคช เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€›แ€”แ€บ {text} แ€€แ€ญแ€ฏ แ€›แ€ญแ€ฏแ€€แ€บแ€‘แ€Šแ€ทแ€บแ€•แ€ซ', + thai: 'เธžเธดเธกเธžเนŒ {text} เน€เธžเธทเนˆเธญเธขเธทเธ™เธขเธฑเธ™', + mandarin: '่พ“ๅ…ฅ {text} ไปฅ็กฎ่ฎค' }, confirmDeletion: { english: 'Confirm Deletion', @@ -4130,7 +6170,11 @@ export const localizations = { brazilian_portuguese: 'Confirmar Exclusรฃo', tok_pisin: 'Siaim Rausim', indonesian: 'Konfirmasi Penghapusan', - nepali: 'เคฎเฅ‡เคŸเคพเค‰เคจเฅ‡ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเฅ‡เคŸเคพเค‰เคจเฅ‡ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคนเคŸเคพเคจเฅ‡ เค•เฅ€ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + burmese: 'แ€–แ€ปแ€€แ€บแ€แ€ผแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธขเธทเธ™เธขเธฑเธ™เธเธฒเธฃเธฅเธš', + mandarin: '็กฎ่ฎคๅˆ ้™ค' }, deleting: { english: 'Deleting...', @@ -4138,7 +6182,11 @@ export const localizations = { brazilian_portuguese: 'Excluindo...', tok_pisin: 'Rausim nau...', indonesian: 'Menghapus...', - nepali: 'เคฎเฅ‡เคŸเคพเค‰เคเคฆเฅˆ...' + nepali: 'เคฎเฅ‡เคŸเคพเค‰เคเคฆเฅˆ...', + hindi: 'เคนเคŸเคพ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€–แ€ปแ€€แ€บแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธฅเธš...', + mandarin: 'ๆญฃๅœจๅˆ ้™ค...' }, audioSegments: { english: 'Audio Segments', @@ -4146,7 +6194,11 @@ export const localizations = { brazilian_portuguese: 'Pistas de รudio', tok_pisin: 'Ol audio track', indonesian: 'Trek audio', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ', + burmese: 'แ€กแ€žแ€ถแ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธชเนˆเธงเธ™เน€เธชเธตเธขเธ‡', + mandarin: '้Ÿณ้ข‘็‰‡ๆฎต' }, audioSegment: { english: 'Audio Segment', @@ -4154,7 +6206,11 @@ export const localizations = { brazilian_portuguese: 'Pista de รudio', tok_pisin: 'Ol audio track', indonesian: 'Trek audio', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคก' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคก', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ', + burmese: 'แ€กแ€žแ€ถแ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธ', + thai: 'เธชเนˆเธงเธ™เน€เธชเธตเธขเธ‡', + mandarin: '้Ÿณ้ข‘็‰‡ๆฎต' }, asAssets: { english: 'as Assets', @@ -4162,7 +6218,11 @@ export const localizations = { brazilian_portuguese: 'como Assets', tok_pisin: 'as Assets', indonesian: 'sebagai Assets', - nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ' + nepali: 'เคเคธเฅ‡เคŸเคนเคฐเฅ‚เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ', + hindi: 'เคเคธเฅ‡เคŸ เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚', + burmese: 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€™แ€ปแ€ฌแ€ธแ€กแ€–แ€ผแ€…แ€บ', + thai: 'เน€เธ›เน‡เธ™เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™', + mandarin: 'ไฝœไธบ่ต„ไบง' }, asAsset: { english: 'as Asset', @@ -4170,7 +6230,11 @@ export const localizations = { brazilian_portuguese: 'como Asset', tok_pisin: 'as Asset', indonesian: 'sebagai Asset', - nepali: 'เคเคธเฅ‡เคŸเค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ' + nepali: 'เคเคธเฅ‡เคŸเค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ', + hindi: 'เคเคธเฅ‡เคŸ เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚', + burmese: 'แ€กแ€›แ€ฌแ€แ€แ€นแ€‘แ€ฏแ€กแ€–แ€ผแ€…แ€บ', + thai: 'เน€เธ›เน‡เธ™เธ—เธฃเธฑเธžเธขเนŒเธชเธดเธ™', + mandarin: 'ไฝœไธบ่ต„ไบง' }, save: { english: 'Save', @@ -4178,7 +6242,11 @@ export const localizations = { brazilian_portuguese: 'Salvar', tok_pisin: 'Save', indonesian: 'Simpan', - nepali: 'เคธเฅเคฐเค•เฅเคทเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเฅเคฐเค•เฅเคทเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคนเฅ‡เคœเฅ‡เค‚', + burmese: 'แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซ', + thai: 'เธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ไฟๅญ˜' }, projectDirectory: { english: 'Project Directory', @@ -4186,7 +6254,11 @@ export const localizations = { brazilian_portuguese: 'Diretรณrio de Projeto', tok_pisin: 'Project Directory', indonesian: 'Direktori Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‡เคฐเฅ‡เค•เฅเคŸเคฐเฅ€' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‡เคฐเฅ‡เค•เฅเคŸเคฐเฅ€', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคฐเฅเคฆเฅ‡เคถเคฟเค•เคพ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒ', + thai: 'เน„เธ”เน€เธฃเธเธ—เธญเธฃเธตเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้กน็›ฎ็›ฎๅฝ•' }, projectMadePublic: { english: 'The project has been made public', @@ -4194,7 +6266,11 @@ export const localizations = { brazilian_portuguese: 'O projeto foi tornado pรบblico', tok_pisin: 'Project i mekim public nau', indonesian: 'Proyek telah dibuat publik', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคฌเคจเคพเค‡เคฏเฅ‹' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคฌเคจเคพเค‡เคฏเฅ‹', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคฌเคจเคพ เคฆเฅ€ เค—เคˆ เคนเฅˆ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€กแ€™แ€ปแ€ฌแ€ธแ€•แ€ผแ€Šแ€บแ€žแ€ฐแ€žแ€ญแ€ฏแ€ท แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ–เธนเธเธ—เธณเนƒเธซเน‰เน€เธ›เน‡เธ™เธชเธฒเธ˜เธฒเธฃเธ“เธฐเนเธฅเน‰เธง', + mandarin: '้กน็›ฎๅทฒ่ฎพไธบๅ…ฌๅผ€' }, projectMadePrivate: { english: 'The project has been made private', @@ -4202,7 +6278,11 @@ export const localizations = { brazilian_portuguese: 'O projeto foi tornado privado', tok_pisin: 'Project i mekim private nau', indonesian: 'Proyek telah dibuat pribadi', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เคฌเคจเคพเค‡เคฏเฅ‹' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคœเฅ€ เคฌเคจเคพเค‡เคฏเฅ‹', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคœเฅ€ เคฌเคจเคพ เคฆเฅ€ เค—เคˆ เคนเฅˆ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€€แ€ญแ€ฏแ€šแ€บแ€•แ€ญแ€ฏแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ–เธนเธเธ—เธณเนƒเธซเน‰เน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธงเนเธฅเน‰เธง', + mandarin: '้กน็›ฎๅทฒ่ฎพไธบ็งๆœ‰' }, projectMadeInvisible: { english: 'The project has been made invisible', @@ -4210,7 +6290,11 @@ export const localizations = { brazilian_portuguese: 'O projeto foi tornado invisรญvel', tok_pisin: 'Project i mekim hait nau', indonesian: 'Proyek telah dibuat tidak terlihat', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพ เคฆเฅ€ เค—เคˆ เคนเฅˆ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€™แ€™แ€ผแ€„แ€บแ€›แ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน„เธกเนˆเน€เธซเน‡เธ™เนเธฅเน‰เธง', + mandarin: '้กน็›ฎๅทฒ่ฎพไธบไธๅฏ่ง' }, projectMadeVisible: { english: 'The project has been made visible', @@ -4218,7 +6302,11 @@ export const localizations = { brazilian_portuguese: 'O projeto foi tornado visรญvel', tok_pisin: 'Project i mekim save nau', indonesian: 'Proyek telah dibuat terlihat', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคฌเคจเคพ เคฆเฅ€ เค—เคˆ เคนเฅˆ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เนเธฅเน‰เธง', + mandarin: '้กน็›ฎๅทฒ่ฎพไธบๅฏ่ง' }, projectMadeInactive: { english: 'The project has been made inactive', @@ -4226,7 +6314,11 @@ export const localizations = { brazilian_portuguese: 'O projeto foi tornado inativo', tok_pisin: 'Project i mekim stop nau', indonesian: 'Proyek telah dibuat tidak aktif', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเฅ€ เค—เคˆ เคนเฅˆ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€™แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ–เธนเธเธ—เธณเนƒเธซเน‰เน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เนเธฅเน‰เธง', + mandarin: '้กน็›ฎๅทฒ่ฎพไธบ้žๆดปๅŠจ' }, projectMadeActive: { english: 'The project has been made active', @@ -4234,7 +6326,11 @@ export const localizations = { brazilian_portuguese: 'O projeto foi tornado ativo', tok_pisin: 'Project i mekim active nau', indonesian: 'Proyek telah dibuat aktif', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเฅ€ เค—เคˆ เคนเฅˆ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ–เธนเธเธ—เธณเนƒเธซเน‰เนƒเธŠเน‰เธ‡เธฒเธ™เน„เธ”เน‰เนเธฅเน‰เธง', + mandarin: '้กน็›ฎๅทฒ่ฎพไธบๆดปๅŠจ' }, failedToUpdateProjectSettings: { english: 'Failed to update project settings', @@ -4242,7 +6338,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao atualizar as configuraรงรตes do projeto', tok_pisin: 'I no inap update project settings', indonesian: 'Gagal mengupdate pengaturan proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเฅ‡เคŸเคฟเค‚เค— เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธญเธฑเธ›เน€เธ”เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน‚เธ„เธฃเธ‡เธเธฒเธฃเน„เธ”เน‰', + mandarin: 'ๆ›ดๆ–ฐ้กน็›ฎ่ฎพ็ฝฎๅคฑ่ดฅ' }, failedToUpdateProjectVisibility: { english: 'Failed to update project visibility', @@ -4250,7 +6350,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao atualizar a visibilidade do projeto', tok_pisin: 'I no inap update project visibility', indonesian: 'Gagal mengupdate visibilitas proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฆเฅƒเคถเฅเคฏเคคเคพ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฆเฅƒเคถเฅเคฏเคคเคพ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฆเฅƒเคถเฅเคฏเคคเคพ เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธญเธฑเธ›เน€เธ”เธ•เธเธฒเธฃเธกเธญเธ‡เน€เธซเน‡เธ™เธ‚เธญเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเน„เธ”เน‰', + mandarin: 'ๆ›ดๆ–ฐ้กน็›ฎๅฏ่งๆ€งๅคฑ่ดฅ' }, failedToUpdateProjectActiveStatus: { english: 'Failed to update project active status', @@ -4258,7 +6362,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao atualizar o status ativo do projeto', tok_pisin: 'I no inap update project active status', indonesian: 'Gagal mengupdate status aktif proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเค•เฅเคฐเคฟเคฏ เคธเฅเคฅเคฟเคคเคฟ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเค•เฅเคฐเคฟเคฏ เคธเฅเคฅเคฟเคคเคฟ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเค•เฅเคฐเคฟเคฏ เคธเฅเคฅเคฟเคคเคฟ เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑแ€€แ€ญแ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธญเธฑเธ›เน€เธ”เธ•เธชเธ–เธฒเธ™เธฐเธเธฒเธฃเนƒเธŠเน‰เธ‡เธฒเธ™เธ‚เธญเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเน„เธ”เน‰', + mandarin: 'ๆ›ดๆ–ฐ้กน็›ฎๆดปๅŠจ็Šถๆ€ๅคฑ่ดฅ' }, projectSettingsLoadError: { english: 'Error loading quest settings.', @@ -4266,7 +6374,11 @@ export const localizations = { brazilian_portuguese: 'Erro ao carregar as configuraรงรตes da quest.', tok_pisin: 'I no inap load quest settings.', indonesian: 'Gagal memuat pengaturan quest.', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเคพ เคคเฅเคฐเฅเคŸเคฟเฅค' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเคพ เคคเฅเคฐเฅเคŸเคฟเฅค', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค‚เค— เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคคเฅเคฐเฅเคŸเคฟเฅค', + burmese: 'แ€…แ€ฝแ€™แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€Šแ€บ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€กแ€™แ€พแ€ฌแ€ธแ€กแ€šแ€ฝแ€„แ€บแ€ธแ‹', + thai: 'เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเน‚เธซเธฅเธ”เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ๅŠ ่ฝฝไปปๅŠก่ฎพ็ฝฎๆ—ถๅ‡บ้”™ใ€‚' }, projectSettings: { english: 'Project Settings', @@ -4274,7 +6386,11 @@ export const localizations = { brazilian_portuguese: 'Configuraรงรตes do Projeto', tok_pisin: 'Project Settings', indonesian: 'Pengaturan Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเฅ‡เคŸเคฟเค‚เค—', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '้กน็›ฎ่ฎพ็ฝฎ' }, publicProjectDescription: { english: 'Anyone can view and contribute to this project', @@ -4283,7 +6399,11 @@ export const localizations = { 'Qualquer pessoa pode ver e contribuir para este projeto', tok_pisin: 'Olgeta man i ken lukim na contributim long dispela project', indonesian: 'Siapa saja dapat melihat dan berkontribusi pada proyek ini', - nepali: 'เคœเฅ‹เคธเฅเค•เฅˆเคฒเฅ‡ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅ‡เคฐเฅเคจ เคฐ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ' + nepali: 'เคœเฅ‹เคธเฅเค•เฅˆเคฒเฅ‡ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅ‡เคฐเฅเคจ เคฐ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เคธเค•เฅเค›เคจเฅ', + hindi: 'เค•เฅ‹เคˆ เคญเฅ€ เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เฅ‹ เคฆเฅ‡เค– เค”เคฐ เคฏเฅ‹เค—เคฆเคพเคจ เค•เคฐ เคธเค•เคคเคพ เคนเฅˆ', + burmese: 'แ€™แ€Šแ€บแ€žแ€ฐแ€™แ€†แ€ญแ€ฏ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ผแ€ฎแ€ธ แ€•แ€ซแ€แ€„แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€ฝแ€€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธ—เธธเธเธ„เธ™เธชเธฒเธกเธฒเธฃเธ–เธ”เธนเนเธฅเธฐเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน„เธ”เน‰', + mandarin: 'ไปปไฝ•ไบบ้ƒฝๅฏไปฅๆŸฅ็œ‹ๅ’Œ่ดก็Œฎๆญค้กน็›ฎ' }, visibleProjectDescription: { english: @@ -4297,7 +6417,13 @@ export const localizations = { indonesian: 'Proyek ini muncul di daftar publik dan dapat ditemukan oleh semua pengguna.', nepali: - 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคธเฅ‚เคšเฅ€เคนเคฐเฅ‚เคฎเคพ เคฆเฅ‡เค–เคฟเคจเฅเค› เคฐ เคธเคฌเฅˆ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเฅ‡ เคซเฅ‡เคฒเคพ เคชเคพเคฐเฅเคจ เคธเค•เฅเค›เคจเฅเฅค' + 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคธเฅ‚เคšเฅ€เคนเคฐเฅ‚เคฎเคพ เคฆเฅ‡เค–เคฟเคจเฅเค› เคฐ เคธเคฌเฅˆ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเฅ‡ เคซเฅ‡เคฒเคพ เคชเคพเคฐเฅเคจ เคธเค•เฅเค›เคจเฅเฅค', + hindi: + 'เคฏเคน เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคธเฅ‚เคšเคฟเคฏเฅ‹เค‚ เคฎเฅ‡เค‚ เคฆเคฟเค–เคพเคˆ เคฆเฅ‡เคคเฅ€ เคนเฅˆ เค”เคฐ เคธเคญเฅ€ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เคฆเฅเคตเคพเคฐเคพ เค–เฅ‹เคœเฅ€ เคœเคพ เคธเค•เคคเฅ€ เคนเฅˆเฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€กแ€™แ€ปแ€ฌแ€ธแ€•แ€ผแ€Šแ€บแ€žแ€ฐ แ€…แ€ฌแ€›แ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ฑแ€ซแ€บแ€œแ€ฌแ€•แ€ผแ€ฎแ€ธ แ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€žแ€ฑแ€ฌ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€€ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เธˆเธฐเธ›เธฃเธฒเธเธเนƒเธ™เธฃเธฒเธขเธเธฒเธฃเธชเธฒเธ˜เธฒเธฃเธ“เธฐเนเธฅเธฐเธชเธฒเธกเธฒเธฃเธ–เธ„เน‰เธ™เธžเธšเน„เธ”เน‰เน‚เธ”เธขเธœเธนเน‰เนƒเธŠเน‰เธ—เธธเธเธ„เธ™', + mandarin: 'ๆญค้กน็›ฎไผšๅ‡บ็Žฐๅœจๅ…ฌๅ…ฑๅˆ—่กจไธญ๏ผŒๆ‰€ๆœ‰็”จๆˆท้ƒฝๅฏไปฅๅ‘็Žฐๅฎƒใ€‚' }, invisibleProjectDescription: { english: @@ -4310,7 +6436,13 @@ export const localizations = { 'Dispela project i no save long project directory olsem search result.', indonesian: 'Proyek ini tidak ditampilkan di direktori proyek atau hasil pencarian.', - nepali: 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‡เคฐเฅ‡เค•เฅเคŸเคฐเฅ€เคนเคฐเฅ‚ เคตเคพ เค–เฅ‹เคœ เคชเคฐเคฟเคฃเคพเคฎเคนเคฐเฅ‚เคฎเคพ เคฆเฅ‡เค–เคฟเคเคฆเฅˆเคจเฅค' + nepali: 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‡เคฐเฅ‡เค•เฅเคŸเคฐเฅ€เคนเคฐเฅ‚ เคตเคพ เค–เฅ‹เคœ เคชเคฐเคฟเคฃเคพเคฎเคนเคฐเฅ‚เคฎเคพ เคฆเฅ‡เค–เคฟเคเคฆเฅˆเคจเฅค', + hindi: + 'เคฏเคน เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคจเคฟเคฐเฅเคฆเฅ‡เคถเคฟเค•เคพเค“เค‚ เคฏเคพ เค–เฅ‹เคœ เคชเคฐเคฟเคฃเคพเคฎเฅ‹เค‚ เคฎเฅ‡เค‚ เคชเฅเคฐเคฆเคฐเฅเคถเคฟเคค เคจเคนเฅ€เค‚ เคนเฅ‹เคคเฅ€ เคนเฅˆเฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€™แ€ปแ€ฌแ€ธ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€™แ€พแ€ฏ แ€›แ€œแ€’แ€บแ€™แ€ปแ€ฌแ€ธแ€แ€ฝแ€„แ€บ แ€™แ€•แ€ผแ€žแ€•แ€ซแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เธˆเธฐเน„เธกเนˆเนเธชเธ”เธ‡เนƒเธ™เน„เธ”เน€เธฃเธเธ—เธญเธฃเธตเน‚เธ„เธฃเธ‡เธเธฒเธฃเธซเธฃเธทเธญเธœเธฅเธเธฒเธฃเธ„เน‰เธ™เธซเธฒ', + mandarin: 'ๆญค้กน็›ฎไธไผšๆ˜พ็คบๅœจ้กน็›ฎ็›ฎๅฝ•ๆˆ–ๆœ็ดข็ป“ๆžœไธญใ€‚' }, activeProjectDescription: { english: 'The project is currently open for viewing and contributions.', @@ -4320,7 +6452,12 @@ export const localizations = { 'O projeto estรก atualmente aberto para visualizaรงรฃo e contribuiรงรตes.', tok_pisin: 'Dispela project i open nau long lukim na contributim.', indonesian: 'Proyek saat ini terbuka untuk dilihat dan kontribusi.', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเคพเคฒ เคนเฅ‡เคฐเฅเคจ เคฐ เคฏเฅ‹เค—เคฆเคพเคจเค•เคพ เคฒเคพเค—เคฟ เค–เฅเคฒเคพ เค›เฅค' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเคพเคฒ เคนเฅ‡เคฐเฅเคจ เคฐ เคฏเฅ‹เค—เคฆเคพเคจเค•เคพ เคฒเคพเค—เคฟ เค–เฅเคฒเคพ เค›เฅค', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคตเคฐเฅเคคเคฎเคพเคจ เคฎเฅ‡เค‚ เคฆเฅ‡เค–เคจเฅ‡ เค”เคฐ เคฏเฅ‹เค—เคฆเคพเคจ เค•เฅ‡ เคฒเคฟเค เค–เฅเคฒเฅ€ เคนเฅˆเฅค', + burmese: + 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€œแ€€แ€บแ€›แ€พแ€ญแ€แ€ฝแ€„แ€บ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€แ€ผแ€„แ€บแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€•แ€ซแ€แ€„แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€ฝแ€€แ€บแ€แ€ผแ€„แ€บแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€–แ€ฝแ€„แ€ทแ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเน€เธ›เธดเธ”เนƒเธซเน‰เธ”เธนเนเธฅเธฐเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™เธ‚เธ“เธฐเธ™เธตเน‰', + mandarin: '้กน็›ฎ็›ฎๅ‰ๅผ€ๆ”พๆŸฅ็œ‹ๅ’Œ่ดก็Œฎใ€‚' }, inactiveProjectDescription: { english: @@ -4332,7 +6469,13 @@ export const localizations = { tok_pisin: 'Dispela project i no wok nau na i no acceptim contributim.', indonesian: 'Proyek ini saat ini tidak aktif dan tidak menerima kontribusi.', - nepali: 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเคพเคฒ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค› เคฐ เคฏเฅ‹เค—เคฆเคพเคจเคนเคฐเฅ‚ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคฆเฅˆเคจเฅค' + nepali: 'เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเคพเคฒ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค› เคฐ เคฏเฅ‹เค—เคฆเคพเคจเคนเคฐเฅ‚ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคฆเฅˆเคจเฅค', + hindi: + 'เคฏเคน เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคตเคฐเฅเคคเคฎเคพเคจ เคฎเฅ‡เค‚ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคนเฅˆ เค”เคฐ เคฏเฅ‹เค—เคฆเคพเคจ เคธเฅเคตเฅ€เค•เคพเคฐ เคจเคนเฅ€เค‚ เค•เคฐ เคฐเคนเฅ€ เคนเฅˆเฅค', + burmese: + 'แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€žแ€Šแ€บ แ€œแ€€แ€บแ€›แ€พแ€ญแ€แ€ฝแ€„แ€บ แ€™แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€”แ€ฑแ€•แ€ผแ€ฎแ€ธ แ€•แ€ซแ€แ€„แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€ฝแ€€แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€€แ€บแ€™แ€แ€ถแ€•แ€ซแ‹', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰เน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เนƒเธ™เธ‚เธ“เธฐเธ™เธตเน‰เนเธฅเธฐเน„เธกเนˆเธฃเธฑเธšเธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธก', + mandarin: 'ๆญค้กน็›ฎ็›ฎๅ‰ๅค„ไบŽ้žๆดปๅŠจ็Šถๆ€๏ผŒไธๆŽฅๅ—่ดก็Œฎใ€‚' }, loadingOptions: { english: 'Loading options...', @@ -4340,7 +6483,11 @@ export const localizations = { brazilian_portuguese: 'Carregando opรงรตes...', tok_pisin: 'I loadim ol option...', indonesian: 'Memuat opsi...', - nepali: 'เคตเคฟเค•เคฒเฅเคชเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคตเคฟเค•เคฒเฅเคชเคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคตเคฟเค•เคฒเฅเคช เคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€…แ€›แ€ฌแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เน‚เธซเธฅเธ”เธ•เธฑเธงเน€เธฅเธทเธญเธ...', + mandarin: 'ๆญฃๅœจๅŠ ่ฝฝ้€‰้กน...' }, loadingTagCategories: { english: 'Loading tag categories...', @@ -4348,7 +6495,11 @@ export const localizations = { brazilian_portuguese: 'Carregando categorias de etiquetas...', tok_pisin: 'I loadim ol tag category...', indonesian: 'Memuat kategori tag...', - nepali: 'เคŸเฅเคฏเคพเค— เคถเฅเคฐเฅ‡เคฃเฅ€เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคŸเฅเคฏเคพเค— เคถเฅเคฐเฅ‡เคฃเฅ€เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคŸเฅˆเค— เคถเฅเคฐเฅ‡เคฃเคฟเคฏเคพเค‚ เคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเฅ€ เคนเฅˆเค‚...', + burmese: 'แ€กแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€แ€ถแ€†แ€ญแ€•แ€บ แ€กแ€™แ€ปแ€ญแ€ฏแ€ธแ€กแ€…แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เน‚เธซเธฅเธ”เธซเธกเธงเธ”เธซเธกเธนเนˆเนเธ—เน‡เธ...', + mandarin: 'ๆญฃๅœจๅŠ ่ฝฝๆ ‡็ญพ็ฑปๅˆซ...' }, questSettings: { english: 'Quest Settings', @@ -4356,7 +6507,11 @@ export const localizations = { brazilian_portuguese: 'Configuraรงรตes da Missรฃo', tok_pisin: 'Quest Settings', indonesian: 'Pengaturan Quest', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ', + burmese: 'แ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธชเธ•เนŒ', + mandarin: 'ไปปๅŠก่ฎพ็ฝฎ' }, questSettingsLoadError: { english: 'Error loading quest settings.', @@ -4364,7 +6519,11 @@ export const localizations = { brazilian_portuguese: 'Erro ao carregar as configuraรงรตes da quest.', tok_pisin: 'I no inap load quest settings.', indonesian: 'Gagal memuat pengaturan quest.', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเคพ เคคเฅเคฐเฅเคŸเคฟเฅค' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเคพ เคคเฅเคฐเฅเคŸเคฟเฅค', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคคเฅเคฐเฅเคŸเคฟเฅค', + burmese: 'แ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€กแ€™แ€พแ€ฌแ€ธแ€กแ€šแ€ฝแ€„แ€บแ€ธแ‹', + thai: 'เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเน‚เธซเธฅเธ”เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธชเธ•เนŒ', + mandarin: 'ๅŠ ่ฝฝไปปๅŠก่ฎพ็ฝฎๆ—ถๅ‡บ้”™ใ€‚' }, visibleQuestDescription: { english: 'This quest is visible to users', @@ -4372,7 +6531,11 @@ export const localizations = { brazilian_portuguese: 'Esta missรฃo รฉ visรญvel para os usuรกrios', tok_pisin: 'Dispela quest i save long ol user', indonesian: 'Quest ini terlihat oleh pengguna', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคฆเฅ‡เค–เคฟเคจเฅเค›' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคฆเฅ‡เค–เคฟเคจเฅเค›', + hindi: 'เคฏเคน เค•เฅเคตเฅ‡เคธเฅเคŸ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เค•เฅ‹ เคฆเคฟเค–เคพเคˆ เคฆเฅ‡เคคเฅ€ เคนเฅˆ', + burmese: 'แ€คแ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บแ€žแ€Šแ€บ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธ„เธงเธชเธ•เนŒเธ™เธตเน‰เธชเธฒเธกเธฒเธฃเธ–เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เน‚เธ”เธขเธœเธนเน‰เนƒเธŠเน‰', + mandarin: 'ๆญคไปปๅŠกๅฏน็”จๆˆทๅฏ่ง' }, invisibleQuestDescription: { english: 'This quest is hidden from users', @@ -4380,7 +6543,11 @@ export const localizations = { brazilian_portuguese: 'Esta missรฃo estรก oculta dos usuรกrios', tok_pisin: 'Dispela quest i hait long ol user', indonesian: 'Quest ini disembunyikan dari pengguna', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฌเคพเคŸ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฌเคพเคŸ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เคฏเคน เค•เฅเคตเฅ‡เคธเฅเคŸ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เคธเฅ‡ เค›เฅเคชเคพเคˆ เค—เคˆ เคนเฅˆ', + burmese: 'แ€คแ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บแ€žแ€Šแ€บ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€‘แ€ถแ€™แ€พ แ€แ€พแ€€แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ„เธงเธชเธ•เนŒเธ™เธตเน‰เธ–เธนเธเธ‹เนˆเธญเธ™เธˆเธฒเธเธœเธนเน‰เนƒเธŠเน‰', + mandarin: 'ๆญคไปปๅŠกๅฏน็”จๆˆท้š่—' }, activeQuestDescription: { english: 'This quest is available for completion', @@ -4388,7 +6555,11 @@ export const localizations = { brazilian_portuguese: 'Esta missรฃo estรก disponรญvel para conclusรฃo', tok_pisin: 'Dispela quest i redi long pinisim', indonesian: 'Quest ini tersedia untuk diselesaikan', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคชเฅ‚เคฐเคพ เค—เคฐเฅเคจเค•เฅ‹ เคฒเคพเค—เคฟ เค‰เคชเคฒเคฌเฅเคง เค›' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคชเฅ‚เคฐเคพ เค—เคฐเฅเคจเค•เฅ‹ เคฒเคพเค—เคฟ เค‰เคชเคฒเคฌเฅเคง เค›', + hindi: 'เคฏเคน เค•เฅเคตเฅ‡เคธเฅเคŸ เคชเฅ‚เคฐเคพ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค‰เคชเคฒเคฌเฅเคง เคนเฅˆ', + burmese: 'แ€คแ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บแ€žแ€Šแ€บ แ€•แ€ผแ€ฎแ€ธแ€™แ€ผแ€ฑแ€ฌแ€€แ€บแ€›แ€”แ€บ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธ„เธงเธชเธ•เนŒเธ™เธตเน‰เธžเธฃเน‰เธญเธกเนƒเธซเน‰เธ—เธณเน€เธชเธฃเน‡เธˆ', + mandarin: 'ๆญคไปปๅŠกๅฏไพ›ๅฎŒๆˆ' }, inactiveQuestDescription: { english: 'This quest is temporarily disabled', @@ -4396,7 +6567,11 @@ export const localizations = { brazilian_portuguese: 'Esta missรฃo estรก temporariamente desabilitada', tok_pisin: 'Dispela quest i stop liklik taim', indonesian: 'Quest ini sementara dinonaktifkan', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เค…เคธเฅเคฅเคพเคฏเฅ€ เคฐเฅ‚เคชเคฎเคพ เค…เคธเค•เฅเคทเคฎ เค›' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เค…เคธเฅเคฅเคพเคฏเฅ€ เคฐเฅ‚เคชเคฎเคพ เค…เคธเค•เฅเคทเคฎ เค›', + hindi: 'เคฏเคน เค•เฅเคตเฅ‡เคธเฅเคŸ เค…เคธเฅเคฅเคพเคฏเฅ€ เคฐเฅ‚เคช เคธเฅ‡ เค…เค•เฅเคทเคฎ เคนเฅˆ', + burmese: 'แ€คแ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บแ€žแ€Šแ€บ แ€šแ€ฌแ€šแ€ฎแ€•แ€ญแ€แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ„เธงเธชเธ•เนŒเธ™เธตเน‰เธ–เธนเธเธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธŠเธฑเนˆเธงเธ„เธฃเธฒเธง', + mandarin: 'ๆญคไปปๅŠกๅทฒๆš‚ๆ—ถ็ฆ็”จ' }, questMadeInvisible: { english: 'The quest has been made invisible', @@ -4404,7 +6579,11 @@ export const localizations = { brazilian_portuguese: 'A missรฃo foi tornada invisรญvel', tok_pisin: 'Quest i mekim hait nau', indonesian: 'Quest telah dibuat tidak terlihat', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‹ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บแ€€แ€ญแ€ฏ แ€™แ€™แ€ผแ€„แ€บแ€›แ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ„เธงเธชเธ•เนŒเธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน„เธกเนˆเน€เธซเน‡เธ™', + mandarin: 'ไปปๅŠกๅทฒ่ฎพไธบไธๅฏ่ง' }, questMadeVisible: { english: 'The quest has been made visible', @@ -4412,7 +6591,11 @@ export const localizations = { brazilian_portuguese: 'A missรฃo foi tornada visรญvel', tok_pisin: 'Quest i mekim save nau', indonesian: 'Quest telah dibuat terlihat', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‹ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บแ€€แ€ญแ€ฏ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ„เธงเธชเธ•เนŒเธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰', + mandarin: 'ไปปๅŠกๅทฒ่ฎพไธบๅฏ่ง' }, questMadeInactive: { english: 'The quest has been made inactive', @@ -4420,7 +6603,11 @@ export const localizations = { brazilian_portuguese: 'A missรฃo foi tornada inativa', tok_pisin: 'Quest i mekim stop nau', indonesian: 'Quest telah dibuat tidak aktif', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‹ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บแ€€แ€ญแ€ฏ แ€•แ€ญแ€แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ„เธงเธชเธ•เนŒเธ–เธนเธเธ—เธณเนƒเธซเน‰เน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™', + mandarin: 'ไปปๅŠกๅทฒ่ฎพไธบ้žๆดปๅŠจ' }, questMadeActive: { english: 'The quest has been made active', @@ -4428,7 +6615,11 @@ export const localizations = { brazilian_portuguese: 'A missรฃo foi tornada ativa', tok_pisin: 'Quest i mekim active nau', indonesian: 'Quest telah dibuat aktif', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‹ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ„เธงเธชเธ•เนŒเธ–เธนเธเธ—เธณเนƒเธซเน‰เนƒเธŠเน‰เธ‡เธฒเธ™', + mandarin: 'ไปปๅŠกๅทฒ่ฎพไธบๆดปๅŠจ' }, failedToUpdateQuestSettings: { english: 'Failed to update quest settings', @@ -4436,7 +6627,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao atualizar as configuraรงรตes da missรฃo', tok_pisin: 'I no inap update quest settings', indonesian: 'Gagal mengupdate pengaturan quest', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€กแ€œแ€ฏแ€•แ€บแ€แ€ฌแ€แ€”แ€บ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธญเธฑเธ›เน€เธ”เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธ„เธงเธชเธ•เนŒเน„เธ”เน‰', + mandarin: 'ๆ›ดๆ–ฐไปปๅŠก่ฎพ็ฝฎๅคฑ่ดฅ' }, loadingAudio: { english: 'Loading audio...', @@ -4444,7 +6639,11 @@ export const localizations = { brazilian_portuguese: 'Carregando รกudio...', tok_pisin: 'I loadim audio...', indonesian: 'Memuat audio...', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เคฒเฅ‹เคก เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคฒเฅ‹เคก เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ...', + burmese: 'แ€กแ€žแ€ถแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เน‚เธซเธฅเธ”เน€เธชเธตเธขเธ‡...', + mandarin: 'ๆญฃๅœจๅŠ ่ฝฝ้Ÿณ้ข‘...' }, updateAvailable: { english: 'A new update is available!', @@ -4452,7 +6651,11 @@ export const localizations = { brazilian_portuguese: 'Uma nova atualizaรงรฃo estรก disponรญvel!', tok_pisin: 'Nupela update i stap!', indonesian: 'Pembaruan baru tersedia!', - nepali: 'เคจเคฏเคพเค เค…เคชเคกเฅ‡เคŸ เค‰เคชเคฒเคฌเฅเคง เค›!' + nepali: 'เคจเคฏเคพเค เค…เคชเคกเฅ‡เคŸ เค‰เคชเคฒเคฌเฅเคง เค›!', + hindi: 'เคเค• เคจเคฏเคพ เค…เคชเคกเฅ‡เคŸ เค‰เคชเคฒเคฌเฅเคง เคนเฅˆ!', + burmese: 'แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€กแ€žแ€…แ€บแ€แ€…แ€บแ€แ€ฏ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บ!', + thai: 'เธกเธตเธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เนƒเธซเธกเนˆเธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™!', + mandarin: 'ๆœ‰ๆ–ฐๆ›ดๆ–ฐๅฏ็”จ๏ผ' }, updateNow: { english: 'Update Now', @@ -4460,7 +6663,11 @@ export const localizations = { brazilian_portuguese: 'Atualizar Agora', tok_pisin: 'Update Nau', indonesian: 'Perbarui Sekarang', - nepali: 'เค…เคนเคฟเคฒเฅ‡ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคนเคฟเคฒเฅ‡ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคญเฅ€ เค…เคชเคกเฅ‡เคŸ เค•เคฐเฅ‡เค‚', + burmese: 'แ€šแ€แ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธญเธฑเธ›เน€เธ”เธ•เธ•เธญเธ™เธ™เธตเน‰', + mandarin: '็ซ‹ๅณๆ›ดๆ–ฐ' }, updateFailed: { english: 'Update failed', @@ -4468,7 +6675,11 @@ export const localizations = { brazilian_portuguese: 'Atualizaรงรฃo falhou', tok_pisin: 'Update i pundaun', indonesian: 'Pembaruan gagal', - nepali: 'เค…เคชเคกเฅ‡เคŸ เค…เคธเคซเคฒ เคญเคฏเฅ‹' + nepali: 'เค…เคชเคกเฅ‡เคŸ เค…เคธเคซเคฒ เคญเคฏเฅ‹', + hindi: 'เค…เคชเคกเฅ‡เคŸ เคตเคฟเคซเคฒ', + burmese: 'แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เธฅเน‰เธกเน€เธซเธฅเธง', + mandarin: 'ๆ›ดๆ–ฐๅคฑ่ดฅ' }, updateErrorTryAgain: { english: 'Please try again or dismiss', @@ -4476,7 +6687,11 @@ export const localizations = { brazilian_portuguese: 'Por favor tente novamente ou descarte', tok_pisin: 'Traim gen o rausim', indonesian: 'Silakan coba lagi atau abaikan', - nepali: 'เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคตเคพ เค–เคพเคฐเฅ‡เคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคตเคพ เค–เคพเคฐเฅ‡เคœ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚ เคฏเคพ เค–เคพเคฐเคฟเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€•แ€šแ€บแ€–แ€ปแ€€แ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡เธซเธฃเธทเธญเธ›เธดเธ”', + mandarin: '่ฏท้‡่ฏ•ๆˆ–ๅ…ณ้—ญ' }, retry: { english: 'Retry', @@ -4484,7 +6699,11 @@ export const localizations = { brazilian_portuguese: 'Tentar novamente', tok_pisin: 'Traim gen', indonesian: 'Coba lagi', - nepali: 'เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚', + burmese: 'แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซ', + thai: 'เธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: '้‡่ฏ•' }, enterCommentOptional: { english: 'Enter your comment (optional)', @@ -4492,7 +6711,11 @@ export const localizations = { brazilian_portuguese: 'Escreva seu comentรกrio (opcional)', tok_pisin: 'Raitim comment bilong yu (yu ken o nogat)', indonesian: 'Masukkan komentar Anda (opsional)', - nepali: 'เค†เคซเฅเคจเฅ‹ เคŸเคฟเคชเฅเคชเคฃเฅ€ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ (เคตเฅˆเค•เคฒเฅเคชเคฟเค•)' + nepali: 'เค†เคซเฅเคจเฅ‹ เคŸเคฟเคชเฅเคชเคฃเฅ€ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ (เคตเฅˆเค•เคฒเฅเคชเคฟเค•)', + hindi: 'เค…เคชเคจเฅ€ เคŸเคฟเคชเฅเคชเคฃเฅ€ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚ (เคตเฅˆเค•เคฒเฅเคชเคฟเค•)', + burmese: 'แ€žแ€„แ€บแแ€™แ€พแ€แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ (แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ)', + thai: 'เนƒเธชเนˆเธ„เธงเธฒเธกเธ„เธดเธ”เน€เธซเน‡เธ™เธ‚เธญเธ‡เธ„เธธเธ“ (เน„เธกเนˆเธšเธฑเธ‡เธ„เธฑเธš)', + mandarin: '่พ“ๅ…ฅๆ‚จ็š„่ฏ„่ฎบ๏ผˆๅฏ้€‰๏ผ‰' }, auth_init_error_title: { english: 'Initialization Error', @@ -4500,7 +6723,11 @@ export const localizations = { brazilian_portuguese: 'Erro de Inicializaรงรฃo', tok_pisin: 'Initialization Error', indonesian: 'Kesalahan Inisialisasi', - nepali: 'เคธเฅเคฐเฅเคตเคพเคค เคคเฅเคฐเฅเคŸเคฟ' + nepali: 'เคธเฅเคฐเฅเคตเคพเคค เคคเฅเคฐเฅเคŸเคฟ', + hindi: 'เค†เคฐเค‚เคญเฅ€เค•เคฐเคฃ เคคเฅเคฐเฅเคŸเคฟ', + burmese: 'แ€…แ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเน€เธฃเธดเนˆเธกเธ•เน‰เธ™', + mandarin: 'ๅˆๅง‹ๅŒ–้”™่ฏฏ' }, auth_init_error_message: { english: @@ -4513,7 +6740,12 @@ export const localizations = { indonesian: 'Gagal menginisialisasi aplikasi. Silakan coba logout dan login kembali.', nepali: - 'เคเคช เคธเฅเคฐเฅ เค—เคฐเฅเคจ เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เค•เฅƒเคชเคฏเคพ เคฒเค—เค†เค‰เคŸ เค—เคฐเฅ‡เคฐ เคชเฅเคจ: เคฒเค— เค‡เคจ เค—เคฐเฅเคจเฅ‡ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคเคช เคธเฅเคฐเฅ เค—เคฐเฅเคจ เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เค•เฅƒเคชเคฏเคพ เคฒเค—เค†เค‰เคŸ เค—เคฐเฅ‡เคฐ เคชเฅเคจ: เคฒเค— เค‡เคจ เค—เคฐเฅเคจเฅ‡ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคเคช เค•เฅ‹ เค†เคฐเค‚เคญ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคฒเฅ‰เค— เค†เค‰เคŸ เค•เคฐเค•เฅ‡ เคซเคฟเคฐ เคธเฅ‡ เคฒเฅ‰เค— เค‡เคจ เค•เคฐเคจเฅ‡ เค•เคพ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: 'แ€กแ€€แ€บแ€•แ€บแ€€แ€ญแ€ฏ แ€…แ€แ€„แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€ฝแ€€แ€บแ€•แ€ผแ€ฎแ€ธ แ€•แ€ผแ€”แ€บแ€แ€„แ€บแ€•แ€ซแ‹', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เน€เธฃเธดเนˆเธกเธ•เน‰เธ™เนเธญเธ›เน„เธ”เน‰ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธญเธเธˆเธฒเธเธฃเธฐเธšเธšเนเธฅเน‰เธงเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๅบ”็”จๅˆๅง‹ๅŒ–ๅคฑ่ดฅใ€‚่ฏทๅฐ่ฏ•้€€ๅ‡บๅนถ้‡ๆ–ฐ็™ปๅฝ•ใ€‚' }, auth_init_error_ok: { english: 'OK', @@ -4521,7 +6753,11 @@ export const localizations = { brazilian_portuguese: 'OK', tok_pisin: 'Orait', indonesian: 'OK', - nepali: 'เค เฅ€เค• เค›' + nepali: 'เค เฅ€เค• เค›', + hindi: 'เค เฅ€เค• เคนเฅˆ', + burmese: 'แ€กแ€ญแ€ฏแ€€แ€ฑ', + thai: 'เธ•เธเธฅเธ‡', + mandarin: '็กฎๅฎš' }, projectDownloaded: { english: 'Project downloaded', @@ -4529,7 +6765,11 @@ export const localizations = { brazilian_portuguese: 'Projeto baixado', tok_pisin: 'Project i daun pinis', indonesian: 'Proyek diunduh', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคฏเฅ‹' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคฏเฅ‹', + hindi: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคกเคพเค‰เคจเคฒเฅ‹เคก เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€•แ€›แ€ฑแ€ฌแ€‚แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน‚เธ›เธฃเน€เธˆเธเธ•เนŒเนเธฅเน‰เธง', + mandarin: '้กน็›ฎๅทฒไธ‹่ฝฝ' }, passwordMustBeAtLeast6Characters: { english: 'Password must be at least 6 characters', @@ -4537,7 +6777,11 @@ export const localizations = { brazilian_portuguese: 'A senha deve ter pelo menos 6 caracteres', tok_pisin: 'Password i mas gat 6 character o moa', indonesian: 'Kata sandi harus minimal 6 karakter', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค•เคฎเฅเคคเคฟเคฎเคพ เฅฌ เคตเคฐเฅเคฃเค•เฅ‹ เคนเฅเคจเฅเคชเคฐเฅเค›' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค•เคฎเฅเคคเคฟเคฎเคพ เฅฌ เคตเคฐเฅเคฃเค•เฅ‹ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เค•เคฎ เคธเฅ‡ เค•เคฎ 6 เคตเคฐเฅเคฃ เค•เคพ เคนเฅ‹เคจเคพ เคšเคพเคนเคฟเค', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€žแ€Šแ€บ แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธ แ† แ€œแ€ฏแ€ถแ€ธ แ€›แ€พแ€ญแ€›แ€™แ€Šแ€บ', + thai: 'เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธ•เน‰เธญเธ‡เธกเธตเธญเธขเนˆเธฒเธ‡เธ™เน‰เธญเธข 6 เธ•เธฑเธงเธญเธฑเธเธฉเธฃ', + mandarin: 'ๅฏ†็ ๅฟ…้กป่‡ณๅฐ‘6ไธชๅญ—็ฌฆ' }, passwordUpdateFailed: { english: 'Failed to update password', @@ -4545,7 +6789,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao atualizar a senha', tok_pisin: 'I no inap update password', indonesian: 'Gagal mengupdate kata sandi', - nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคชเคพเคธเคตเคฐเฅเคก เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคชเคพเคธเคตเคฐเฅเคก เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธญเธฑเธ›เน€เธ”เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เน„เธ”เน‰', + mandarin: 'ๆ›ดๆ–ฐๅฏ†็ ๅคฑ่ดฅ' }, clearCache: { english: 'Clear Cache', @@ -4553,7 +6801,11 @@ export const localizations = { brazilian_portuguese: 'Limpar cache', tok_pisin: 'Klinim Cache', indonesian: 'Hapus Cache', - nepali: 'เค•เฅเคฏเคพเคธ เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅเคฏเคพเคธ เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅˆเคถ เคธเคพเคซ เค•เคฐเฅ‡เค‚', + burmese: 'แ€€แ€€แ€บแ€›แ€พแ€บแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธฅเน‰เธฒเธ‡เนเธ„เธŠ', + mandarin: 'ๆธ…้™ค็ผ“ๅญ˜' }, clearCacheConfirmation: { english: 'Are you sure you want to clear all cached data?', @@ -4562,7 +6814,11 @@ export const localizations = { 'Tem certeza que deseja limpar todos os dados em cache?', tok_pisin: 'Yu sure long klinim olgeta cache data?', indonesian: 'Apakah Anda yakin ingin menghapus semua data cache?', - nepali: 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคธเคฌเฅˆ เค•เฅเคฏเคพเคธ เคกเคพเคŸเคพ เค–เคพเคฒเฅ€ เค—เคฐเฅเคจ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค›?' + nepali: 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เคธเคฌเฅˆ เค•เฅเคฏเคพเคธ เคกเคพเคŸเคพ เค–เคพเคฒเฅ€ เค—เคฐเฅเคจ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค›?', + hindi: 'เค•เฅเคฏเคพ เค†เคช เคตเคพเค•เคˆ เคธเคญเฅ€ เค•เฅˆเคถ เคกเฅ‡เคŸเคพ เคธเคพเคซ เค•เคฐเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚?', + burmese: 'แ€€แ€€แ€บแ€›แ€พแ€บแ€‘แ€ฒแ€›แ€พแ€ญ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€œแ€ญแ€ฏแ€žแ€Šแ€บแ€™แ€พแ€ฌ แ€žแ€ฑแ€แ€ปแ€ฌแ€•แ€ซแ€žแ€œแ€ฌแ€ธ?', + thai: 'เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเน‰เธฒเธ‡เธ‚เน‰เธญเธกเธนเธฅเนเธ„เธŠเธ—เธฑเน‰เธ‡เธซเธกเธ”?', + mandarin: 'ๆ‚จ็กฎๅฎš่ฆๆธ…้™คๆ‰€ๆœ‰็ผ“ๅญ˜ๆ•ฐๆฎๅ—๏ผŸ' }, cacheClearedSuccess: { english: 'Cache cleared successfully', @@ -4570,7 +6826,11 @@ export const localizations = { brazilian_portuguese: 'Cache limpa com sucesso', tok_pisin: 'Cache i klin gut pinis', indonesian: 'Cache berhasil dihapus', - nepali: 'เค•เฅเคฏเคพเคธ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เค–เคพเคฒเฅ€ เค—เคฐเคฟเคฏเฅ‹' + nepali: 'เค•เฅเคฏเคพเคธ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เค–เคพเคฒเฅ€ เค—เคฐเคฟเคฏเฅ‹', + hindi: 'เค•เฅˆเคถ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคพเคซ เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€€แ€€แ€บแ€›แ€พแ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธฅเน‰เธฒเธ‡เนเธ„เธŠเธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง', + mandarin: '็ผ“ๅญ˜ๆธ…้™คๆˆๅŠŸ' }, exportRequiresInternet: { english: 'This feature requires an internet connection', @@ -4579,7 +6839,11 @@ export const localizations = { 'Esta funcionalidade requer uma conexรฃo com a internet', tok_pisin: 'Dispela feature i nidim internet connection', indonesian: 'Fitur ini memerlukan koneksi internet', - nepali: 'เคฏเฅ‹ เคธเฅเคตเคฟเคงเคพเค•เฅ‹ เคฒเคพเค—เคฟ เค‡เคจเฅเคŸเคฐเคจเฅ‡เคŸ เคœเคกเคพเคจ เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคฏเฅ‹ เคธเฅเคตเคฟเคงเคพเค•เฅ‹ เคฒเคพเค—เคฟ เค‡เคจเฅเคŸเคฐเคจเฅ‡เคŸ เคœเคกเคพเคจ เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เค‡เคธ เคธเฅเคตเคฟเคงเคพ เค•เฅ‡ เคฒเคฟเค เค‡เค‚เคŸเคฐเคจเฅ‡เคŸ เค•เคจเฅ‡เค•เฅเคถเคจ เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€คแ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€žแ€Šแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€™แ€พแ€ฏ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บ', + thai: 'เธŸเธตเน€เธˆเธญเธฃเนŒเธ™เธตเน‰เธ•เน‰เธญเธ‡เนƒเธŠเน‰เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•', + mandarin: 'ๆญคๅŠŸ่ƒฝ้œ€่ฆไบ’่”็ฝ‘่ฟžๆŽฅ' }, exportDataComingSoon: { english: 'Data export feature coming soon', @@ -4587,7 +6851,11 @@ export const localizations = { brazilian_portuguese: 'A exportaรงรฃo de dados estรก prรณxima', tok_pisin: 'Data export feature i kam bihain', indonesian: 'Fitur ekspor data segera hadir', - nepali: 'เคกเคพเคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เคธเฅเคตเคฟเคงเคพ เค›เคฟเคŸเฅเคŸเฅˆ เค†เค‰เคเคฆเฅˆเค›' + nepali: 'เคกเคพเคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เคธเฅเคตเคฟเคงเคพ เค›เคฟเคŸเฅเคŸเฅˆ เค†เค‰เคเคฆเฅˆเค›', + hindi: 'เคกเฅ‡เคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เคธเฅเคตเคฟเคงเคพ เคœเคฒเฅเคฆ เคนเฅ€ เค† เคฐเคนเฅ€ เคนเฅˆ', + burmese: 'แ€’แ€ฑแ€แ€ฌ แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€แ€ผแ€„แ€บแ€ธ แ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บ แ€™แ€€แ€ผแ€ฌแ€™แ€ฎ แ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€พแ€ญแ€œแ€ฌแ€™แ€Šแ€บ', + thai: 'เธŸเธตเน€เธˆเธญเธฃเนŒเธชเนˆเธ‡เธญเธญเธเธ‚เน‰เธญเธกเธนเธฅเธˆเธฐเธกเธฒเน€เธฃเน‡เธงเน† เธ™เธตเน‰', + mandarin: 'ๆ•ฐๆฎๅฏผๅ‡บๅŠŸ่ƒฝๅณๅฐ†ๆŽจๅ‡บ' }, info: { english: 'Info', @@ -4595,7 +6863,11 @@ export const localizations = { brazilian_portuguese: 'Informaรงรฃo', tok_pisin: 'Info', indonesian: 'Info', - nepali: 'เคœเคพเคจเค•เคพเคฐเฅ€' + nepali: 'เคœเคพเคจเค•เคพเคฐเฅ€', + hindi: 'เคœเคพเคจเค•เคพเคฐเฅ€', + burmese: 'แ€กแ€แ€ปแ€€แ€บแ€กแ€œแ€€แ€บ', + thai: 'เธ‚เน‰เธญเธกเธนเธฅ', + mandarin: 'ไฟกๆฏ' }, enableNotifications: { english: 'Enable Notifications', @@ -4603,7 +6875,11 @@ export const localizations = { brazilian_portuguese: 'Habilitar notificaรงรตes', tok_pisin: 'Onim Notification', indonesian: 'Aktifkan Notifikasi', - nepali: 'เคธเฅ‚เคšเคจเคพเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเฅ‚เคšเคจเคพเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเฅ‚เคšเคจเคพเคเค‚ เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™', + mandarin: 'ๅฏ็”จ้€š็Ÿฅ' }, notificationsDescription: { english: 'Receive notifications for app updates and important information', @@ -4614,7 +6890,12 @@ export const localizations = { tok_pisin: 'Kisim notification long app update na important information', indonesian: 'Terima notifikasi untuk pembaruan aplikasi dan informasi penting', - nepali: 'เคเคช เค…เคชเคกเฅ‡เคŸ เคฐ เคฎเคนเคคเฅเคคเฅเคตเคชเฅ‚เคฐเฅเคฃ เคœเคพเคจเค•เคพเคฐเฅ€เค•เฅ‹ เคฒเคพเค—เคฟ เคธเฅ‚เคšเคจเคพเคนเคฐเฅ‚ เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคเคช เค…เคชเคกเฅ‡เคŸ เคฐ เคฎเคนเคคเฅเคคเฅเคตเคชเฅ‚เคฐเฅเคฃ เคœเคพเคจเค•เคพเคฐเฅ€เค•เฅ‹ เคฒเคพเค—เคฟ เคธเฅ‚เคšเคจเคพเคนเคฐเฅ‚ เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเคช เค…เคชเคกเฅ‡เคŸ เค”เคฐ เคฎเคนเคคเฅเคตเคชเฅ‚เคฐเฅเคฃ เคœเคพเคจเค•เคพเคฐเฅ€ เค•เฅ‡ เคฒเคฟเค เคธเฅ‚เคšเคจเคพเคเค‚ เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเฅ‡เค‚', + burmese: + 'แ€กแ€€แ€บแ€•แ€บแ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€กแ€›แ€ฑแ€ธแ€€แ€ผแ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€กแ€แ€ปแ€€แ€บแ€กแ€œแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ แ€›แ€šแ€ฐแ€•แ€ซ', + thai: 'เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเธญเธฑเธ›เน€เธ”เธ•เนเธญเธ›เนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธชเธณเธ„เธฑเธ', + mandarin: 'ๆŽฅๆ”ถๅบ”็”จๆ›ดๆ–ฐๅ’Œ้‡่ฆไฟกๆฏ็š„้€š็Ÿฅ' }, contentPreferences: { english: 'Content Preferences', @@ -4622,7 +6903,11 @@ export const localizations = { brazilian_portuguese: 'Preferรชncias de conteรบdo', tok_pisin: 'Content Preferences', indonesian: 'Preferensi Konten', - nepali: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเฅเคฐเคพเคฅเคฎเคฟเค•เคคเคพเคนเคฐเฅ‚' + nepali: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเฅเคฐเคพเคฅเคฎเคฟเค•เคคเคพเคนเคฐเฅ‚', + hindi: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเฅเคฐเคพเคฅเคฎเคฟเค•เคคเคพเคเค‚', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌ แ€ฆแ€ธแ€…แ€ฌแ€ธแ€•แ€ฑแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธชเธณเธซเธฃเธฑเธšเน€เธ™เธทเน‰เธญเธซเธฒ', + mandarin: 'ๅ†…ๅฎนๅๅฅฝ่ฎพ็ฝฎ' }, showHiddenContent: { english: 'Show Hidden Content', @@ -4630,7 +6915,11 @@ export const localizations = { brazilian_portuguese: 'Mostrar conteรบdo oculto', tok_pisin: 'Soim Hait Content', indonesian: 'Tampilkan Konten Tersembunyi', - nepali: 'เคฒเฅเค•เฅ‡เค•เฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฆเฅ‡เค–เคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฒเฅเค•เฅ‡เค•เฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฆเฅ‡เค–เคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค›เฅเคชเฅ€ เคนเฅเคˆ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฆเคฟเค–เคพเคเค‚', + burmese: 'แ€แ€พแ€€แ€บแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€•แ€ผแ€•แ€ซ', + thai: 'เนเธชเธ”เธ‡เน€เธ™เธทเน‰เธญเธซเธฒเธ—เธตเนˆเธ‹เนˆเธญเธ™เธญเธขเธนเนˆ', + mandarin: 'ๆ˜พ็คบ้š่—ๅ†…ๅฎน' }, showHiddenContentDescription: { english: 'Allow displaying content that has been marked as invisible', @@ -4640,7 +6929,11 @@ export const localizations = { tok_pisin: 'Larim soim content we ol i makim hait', indonesian: 'Izinkan menampilkan konten yang ditandai sebagai tidak terlihat', - nepali: 'เค…เคฆเฅƒเคถเฅเคฏ เคญเคจเฅ€ เคšเคฟเคจเฅเคน เคฒเค—เคพเค‡เคเค•เฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเฅเคฐเคฆเคฐเฅเคถเคจ เค—เคฐเฅเคจ เค…เคจเฅเคฎเคคเคฟ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคฆเฅƒเคถเฅเคฏ เคญเคจเฅ€ เคšเคฟเคจเฅเคน เคฒเค—เคพเค‡เคเค•เฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเฅเคฐเคฆเคฐเฅเคถเคจ เค—เคฐเฅเคจ เค…เคจเฅเคฎเคคเคฟ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคฆเฅƒเคถเฅเคฏ เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคšเคฟเคนเฅเคจเคฟเคค เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเฅเคฐเคฆเคฐเฅเคถเคฟเคค เค•เคฐเคจเฅ‡ เค•เฅ€ เค…เคจเฅเคฎเคคเคฟ เคฆเฅ‡เค‚', + burmese: 'แ€™แ€™แ€ผแ€„แ€บแ€›แ€กแ€ฑแ€ฌแ€„แ€บ แ€™แ€พแ€แ€บแ€žแ€ฌแ€ธแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€•แ€ผแ€แ€ฝแ€„แ€ทแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เนเธชเธ”เธ‡เน€เธ™เธทเน‰เธญเธซเธฒเธ—เธตเนˆเธ–เธนเธเธ—เธณเน€เธ„เธฃเธทเนˆเธญเธ‡เธซเธกเธฒเธขเธงเนˆเธฒเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰', + mandarin: 'ๅ…่ฎธๆ˜พ็คบๆ ‡่ฎฐไธบไธๅฏ่ง็š„ๅ†…ๅฎน' }, dataAndStorage: { english: 'Data & Storage', @@ -4648,7 +6941,11 @@ export const localizations = { brazilian_portuguese: 'Dados e armazenamento', tok_pisin: 'Data na Storage', indonesian: 'Data & Penyimpanan', - nepali: 'เคกเคพเคŸเคพ เคฐ เคญเคฃเฅเคกเคพเคฐเคฃ' + nepali: 'เคกเคพเคŸเคพ เคฐ เคญเคฃเฅเคกเคพเคฐเคฃ', + hindi: 'เคกเฅ‡เคŸเคพ เค”เคฐ เคญเค‚เคกเคพเคฐเคฃ', + burmese: 'แ€’แ€ฑแ€แ€ฌแ€”แ€พแ€„แ€ทแ€บ แ€žแ€ญแ€ฏแ€œแ€พแ€ฑแ€ฌแ€„แ€บแ€™แ€พแ€ฏ', + thai: 'เธ‚เน‰เธญเธกเธนเธฅเนเธฅเธฐเธเธฒเธฃเธˆเธฑเธ”เน€เธเน‡เธš', + mandarin: 'ๆ•ฐๆฎๅ’Œๅญ˜ๅ‚จ' }, downloadOnWifiOnly: { english: 'Download on WiFi Only', @@ -4656,7 +6953,11 @@ export const localizations = { brazilian_portuguese: 'Baixar apenas em WiFi', tok_pisin: 'Daunim long WiFi tasol', indonesian: 'Unduh hanya di WiFi', - nepali: 'WiFi เคฎเคพ เคฎเคพเคคเฅเคฐ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'WiFi เคฎเคพ เคฎเคพเคคเฅเคฐ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅ‡เคตเคฒ WiFi เคชเคฐ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'WiFi แ€แ€ฝแ€„แ€บแ€žแ€ฌ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธ‰เธžเธฒเธฐ WiFi เน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™', + mandarin: 'ไป…ๅœจWiFiไธŠไธ‹่ฝฝ' }, downloadOnWifiOnlyDescription: { english: 'Only download content when connected to WiFi', @@ -4665,7 +6966,11 @@ export const localizations = { 'Baixar conteรบdo apenas quando estiver conectado ร  WiFi', tok_pisin: 'Daunim content taim yu joinim WiFi tasol', indonesian: 'Hanya unduh konten saat terhubung ke WiFi', - nepali: 'WiFi เคฎเคพ เคœเคกเคพเคจ เคนเฅเคเคฆเคพ เคฎเคพเคคเฅเคฐ เคธเคพเคฎเค—เฅเคฐเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'WiFi เคฎเคพ เคœเคกเคพเคจ เคนเฅเคเคฆเคพ เคฎเคพเคคเฅเคฐ เคธเคพเคฎเค—เฅเคฐเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'WiFi เคธเฅ‡ เคœเฅเคกเคผเฅ‡ เคนเฅ‹เคจเฅ‡ เคชเคฐ เคนเฅ€ เคธเคพเคฎเค—เฅเคฐเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'WiFi แ€”แ€พแ€„แ€ทแ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌแ€กแ€แ€ซแ€™แ€พแ€žแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน€เธ™เธทเน‰เธญเธซเธฒเน€เธ‰เธžเธฒเธฐเน€เธกเธทเนˆเธญเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธเธฑเธš WiFi', + mandarin: 'ไป…ๅœจ่ฟžๆŽฅWiFiๆ—ถไธ‹่ฝฝๅ†…ๅฎน' }, autoBackup: { english: 'Auto Backup', @@ -4673,7 +6978,11 @@ export const localizations = { brazilian_portuguese: 'Backup automรกtico', tok_pisin: 'Auto Backup', indonesian: 'Backup Otomatis', - nepali: 'เคธเฅเคตเคค: เคฌเฅเคฏเคพเค•เค…เคช' + nepali: 'เคธเฅเคตเคค: เคฌเฅเคฏเคพเค•เค…เคช', + hindi: 'เคธเฅเคตเคšเคพเคฒเคฟเคค เคฌเฅˆเค•เค…เคช', + burmese: 'แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€˜แ€€แ€บแ€กแ€•แ€บ', + thai: 'เธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด', + mandarin: '่‡ชๅŠจๅค‡ไปฝ' }, autoBackupDescription: { english: 'Automatically backup your data to the cloud', @@ -4681,7 +6990,11 @@ export const localizations = { brazilian_portuguese: 'Fazer um backup automรกtico dos seus dados na nuvem', tok_pisin: 'Otomatik backup data bilong yu long cloud', indonesian: 'Secara otomatis backup data Anda ke cloud', - nepali: 'เค†เคซเฅเคจเฅ‹ เคกเคพเคŸเคพ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เคกเคพเคŸเคพ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคฌเฅเคฏเคพเค•เค…เคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเฅ‡ เคกเฅ‡เคŸเคพ เค•เฅ‹ เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคฌเฅˆเค•เค…เคช เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแแ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€€แ€œแ€ฑแ€ฌแ€€แ€บแ€’แ€บแ€žแ€ญแ€ฏแ€ท แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€˜แ€€แ€บแ€กแ€•แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธชเธณเธฃเธญเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ‚เธญเธ‡เธ„เธธเธ“เน„เธ›เธขเธฑเธ‡เธ„เธฅเธฒเธงเธ”เนŒเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด', + mandarin: '่‡ชๅŠจๅฐ†ๆ‚จ็š„ๆ•ฐๆฎๅค‡ไปฝๅˆฐไบ‘็ซฏ' }, clearCacheDescription: { english: 'Clear all cached data to free up storage space', @@ -4691,7 +7004,11 @@ export const localizations = { 'Limpar todos os dados em cache para liberar espaรงo de armazenamento', tok_pisin: 'Klinim olgeta cache data long mekim moa storage space', indonesian: 'Hapus semua data cache untuk mengosongkan ruang penyimpanan', - nepali: 'เคญเคฃเฅเคกเคพเคฐเคฃ เค เคพเค‰เค เค–เคพเคฒเฅ€ เค—เคฐเฅเคจ เคธเคฌเฅˆ เค•เฅเคฏเคพเคธ เคกเคพเคŸเคพ เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคญเคฃเฅเคกเคพเคฐเคฃ เค เคพเค‰เค เค–เคพเคฒเฅ€ เค—เคฐเฅเคจ เคธเคฌเฅˆ เค•เฅเคฏเคพเคธ เคกเคพเคŸเคพ เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคญเค‚เคกเคพเคฐเคฃ เคธเฅเคฅเคพเคจ เค–เคพเคฒเฅ€ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเคญเฅ€ เค•เฅˆเคถ เคกเฅ‡เคŸเคพ เคธเคพเคซ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€ญแ€ฏแ€œแ€พแ€ฑแ€ฌแ€„แ€บแ€™แ€พแ€ฏ แ€”แ€ฑแ€›แ€ฌแ€œแ€ฝแ€แ€บแ€›แ€›แ€”แ€บ แ€€แ€€แ€บแ€›แ€พแ€บแ€‘แ€ฒแ€›แ€พแ€ญ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธฅเน‰เธฒเธ‡เธ‚เน‰เธญเธกเธนเธฅเนเธ„เธŠเธ—เธฑเน‰เธ‡เธซเธกเธ”เน€เธžเธทเนˆเธญเน€เธžเธดเนˆเธกเธžเธทเน‰เธ™เธ—เธตเนˆเธˆเธฑเธ”เน€เธเน‡เธš', + mandarin: 'ๆธ…้™คๆ‰€ๆœ‰็ผ“ๅญ˜ๆ•ฐๆฎไปฅ้‡Šๆ”พๅญ˜ๅ‚จ็ฉบ้—ด' }, exportData: { english: 'Export Data', @@ -4699,7 +7016,11 @@ export const localizations = { brazilian_portuguese: 'Exportar dados', tok_pisin: 'Export Data', indonesian: 'Ekspor Data', - nepali: 'เคกเคพเคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคกเคพเคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคกเฅ‡เคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€’แ€ฑแ€แ€ฌ แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธญเธญเธเธ‚เน‰เธญเธกเธนเธฅ', + mandarin: 'ๅฏผๅ‡บๆ•ฐๆฎ' }, exportDataDescription: { english: 'Export your data for backup or transfer', @@ -4707,7 +7028,11 @@ export const localizations = { brazilian_portuguese: 'Exportar seus dados para backup ou transferรชncia', tok_pisin: 'Export data bilong yu long backup o transfer', indonesian: 'Ekspor data Anda untuk backup atau transfer', - nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคตเคพ เคธเฅเคฅเคพเคจเคพเคจเฅเคคเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เค†เคซเฅเคจเฅ‹ เคกเคพเคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเฅเคฏเคพเค•เค…เคช เคตเคพ เคธเฅเคฅเคพเคจเคพเคจเฅเคคเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เค†เคซเฅเคจเฅ‹ เคกเคพเคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเฅˆเค•เค…เคช เคฏเคพ เคธเฅเคฅเคพเคจเคพเค‚เคคเคฐเคฃ เค•เฅ‡ เคฒเคฟเค เค…เคชเคจเคพ เคกเฅ‡เคŸเคพ เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€˜แ€€แ€บแ€กแ€•แ€บแ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€œแ€ฝแ€พแ€ฒแ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€›แ€”แ€บแ€กแ€แ€ฝแ€€แ€บ แ€žแ€„แ€บแแ€’แ€ฑแ€แ€ฌแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธญเธญเธเธ‚เน‰เธญเธกเธนเธฅเธ‚เธญเธ‡เธ„เธธเธ“เน€เธžเธทเนˆเธญเธชเธณเธฃเธญเธ‡เธซเธฃเธทเธญเธ–เนˆเธฒเธขเน‚เธญเธ™', + mandarin: 'ๅฏผๅ‡บๆ‚จ็š„ๆ•ฐๆฎไปฅ่ฟ›่กŒๅค‡ไปฝๆˆ–ไผ ่พ“' }, support: { english: 'Support', @@ -4715,7 +7040,11 @@ export const localizations = { brazilian_portuguese: 'Suporte', tok_pisin: 'Support', indonesian: 'Dukungan', - nepali: 'เคธเคนเคพเคฏเคคเคพ' + nepali: 'เคธเคนเคพเคฏเคคเคพ', + hindi: 'เคธเคนเคพเคฏเคคเคพ', + burmese: 'แ€กแ€€แ€ฐแ€กแ€Šแ€ฎ', + thai: 'เธเธฒเธฃเธชเธ™เธฑเธšเธชเธ™เธธเธ™', + mandarin: 'ๆ”ฏๆŒ' }, helpCenter: { english: 'Help Center', @@ -4723,7 +7052,11 @@ export const localizations = { brazilian_portuguese: 'Centro de ajuda', tok_pisin: 'Help Center', indonesian: 'Pusat Bantuan', - nepali: 'เคธเคนเคพเคฏเคคเคพ เค•เฅ‡เคจเฅเคฆเฅเคฐ' + nepali: 'เคธเคนเคพเคฏเคคเคพ เค•เฅ‡เคจเฅเคฆเฅเคฐ', + hindi: 'เคธเคนเคพเคฏเคคเคพ เค•เฅ‡เค‚เคฆเฅเคฐ', + burmese: 'แ€กแ€€แ€ฐแ€กแ€Šแ€ฎแ€…แ€„แ€บแ€แ€ฌ', + thai: 'เธจเธนเธ™เธขเนŒเธŠเนˆเธงเธขเน€เธซเธฅเธทเธญ', + mandarin: 'ๅธฎๅŠฉไธญๅฟƒ' }, helpCenterComingSoon: { english: 'Help center feature coming soon', @@ -4731,7 +7064,11 @@ export const localizations = { brazilian_portuguese: 'O centro de ajuda estรก prรณximo', tok_pisin: 'Help center feature i kam bihain', indonesian: 'Fitur pusat bantuan segera hadir', - nepali: 'เคธเคนเคพเคฏเคคเคพ เค•เฅ‡เคจเฅเคฆเฅเคฐ เคธเฅเคตเคฟเคงเคพ เค›เคฟเคŸเฅเคŸเฅˆ เค†เค‰เคเคฆเฅˆเค›' + nepali: 'เคธเคนเคพเคฏเคคเคพ เค•เฅ‡เคจเฅเคฆเฅเคฐ เคธเฅเคตเคฟเคงเคพ เค›เคฟเคŸเฅเคŸเฅˆ เค†เค‰เคเคฆเฅˆเค›', + hindi: 'เคธเคนเคพเคฏเคคเคพ เค•เฅ‡เค‚เคฆเฅเคฐ เคธเฅเคตเคฟเคงเคพ เคœเคฒเฅเคฆ เคนเฅ€ เค† เคฐเคนเฅ€ เคนเฅˆ', + burmese: 'แ€กแ€€แ€ฐแ€กแ€Šแ€ฎแ€…แ€„แ€บแ€แ€ฌ แ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บ แ€™แ€€แ€ผแ€ฌแ€™แ€ฎ แ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€พแ€ญแ€œแ€ฌแ€™แ€Šแ€บ', + thai: 'เธŸเธตเน€เธˆเธญเธฃเนŒเธจเธนเธ™เธขเนŒเธŠเนˆเธงเธขเน€เธซเธฅเธทเธญเธˆเธฐเธกเธฒเน€เธฃเน‡เธงเน† เธ™เธตเน‰', + mandarin: 'ๅธฎๅŠฉไธญๅฟƒๅŠŸ่ƒฝๅณๅฐ†ๆŽจๅ‡บ' }, contactSupport: { english: 'Contact Support', @@ -4739,7 +7076,11 @@ export const localizations = { brazilian_portuguese: 'Contatar suporte', tok_pisin: 'Contact Support', indonesian: 'Hubungi Dukungan', - nepali: 'เคธเคนเคพเคฏเคคเคพเคธเคเค— เคธเคฎเฅเคชเคฐเฅเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคนเคพเคฏเคคเคพเคธเคเค— เคธเคฎเฅเคชเคฐเฅเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคนเคพเคฏเคคเคพ เคธเฅ‡ เคธเค‚เคชเคฐเฅเค• เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ฐแ€กแ€Šแ€ฎแ€€แ€ญแ€ฏ แ€†แ€€แ€บแ€žแ€ฝแ€šแ€บแ€•แ€ซ', + thai: 'เธ•เธดเธ”เธ•เนˆเธญเธเนˆเธฒเธขเธชเธ™เธฑเธšเธชเธ™เธธเธ™', + mandarin: '่”็ณปๆ”ฏๆŒ' }, contactSupportComingSoon: { english: 'Contact support feature coming soon', @@ -4748,7 +7089,11 @@ export const localizations = { 'A funcionalidade de contato com o suporte estรก prรณxima', tok_pisin: 'Contact support feature i kam bihain', indonesian: 'Fitur hubungi dukungan segera hadir', - nepali: 'เคธเคนเคพเคฏเคคเคพเคธเคเค— เคธเคฎเฅเคชเคฐเฅเค• เคธเฅเคตเคฟเคงเคพ เค›เคฟเคŸเฅเคŸเฅˆ เค†เค‰เคเคฆเฅˆเค›' + nepali: 'เคธเคนเคพเคฏเคคเคพเคธเคเค— เคธเคฎเฅเคชเคฐเฅเค• เคธเฅเคตเคฟเคงเคพ เค›เคฟเคŸเฅเคŸเฅˆ เค†เค‰เคเคฆเฅˆเค›', + hindi: 'เคธเคนเคพเคฏเคคเคพ เคธเฅ‡ เคธเค‚เคชเคฐเฅเค• เคธเฅเคตเคฟเคงเคพ เคœเคฒเฅเคฆ เคนเฅ€ เค† เคฐเคนเฅ€ เคนเฅˆ', + burmese: 'แ€กแ€€แ€ฐแ€กแ€Šแ€ฎแ€€แ€ญแ€ฏ แ€†แ€€แ€บแ€žแ€ฝแ€šแ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บ แ€™แ€€แ€ผแ€ฌแ€™แ€ฎ แ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€พแ€ญแ€œแ€ฌแ€™แ€Šแ€บ', + thai: 'เธŸเธตเน€เธˆเธญเธฃเนŒเธ•เธดเธ”เธ•เนˆเธญเธเนˆเธฒเธขเธชเธ™เธฑเธšเธชเธ™เธธเธ™เธˆเธฐเธกเธฒเน€เธฃเน‡เธงเน† เธ™เธตเน‰', + mandarin: '่”็ณปๆ”ฏๆŒๅŠŸ่ƒฝๅณๅฐ†ๆŽจๅ‡บ' }, termsAndConditions: { english: 'Terms & Conditions', @@ -4756,7 +7101,11 @@ export const localizations = { brazilian_portuguese: 'Termos e condiรงรตes', tok_pisin: 'Terms na Conditions', indonesian: 'Syarat & Ketentuan', - nepali: 'เคจเคฟเคฏเคฎ เคฐ เคธเคฐเฅเคคเคนเคฐเฅ‚' + nepali: 'เคจเคฟเคฏเคฎ เคฐ เคธเคฐเฅเคคเคนเคฐเฅ‚', + hindi: 'เคจเคฟเคฏเคฎ เค”เคฐ เคถเคฐเฅเคคเฅ‡เค‚', + burmese: 'แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€žแ€แ€บแ€™แ€พแ€แ€บแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚', + mandarin: 'ๆกๆฌพๅ’Œๆกไปถ' }, termsAndConditionsComingSoon: { english: 'Terms & Conditions feature coming soon', @@ -4764,7 +7113,12 @@ export const localizations = { brazilian_portuguese: 'A funcionalidade de termos e condiรงรตes estรก prรณxima', tok_pisin: 'Terms na Conditions feature i kam bihain', indonesian: 'Fitur Syarat & Ketentuan segera hadir', - nepali: 'เคจเคฟเคฏเคฎ เคฐ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคธเฅเคตเคฟเคงเคพ เค›เคฟเคŸเฅเคŸเฅˆ เค†เค‰เคเคฆเฅˆเค›' + nepali: 'เคจเคฟเคฏเคฎ เคฐ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคธเฅเคตเคฟเคงเคพ เค›เคฟเคŸเฅเคŸเฅˆ เค†เค‰เคเคฆเฅˆเค›', + hindi: 'เคจเคฟเคฏเคฎ เค”เคฐ เคถเคฐเฅเคคเฅ‡เค‚ เคธเฅเคตเคฟเคงเคพ เคœเคฒเฅเคฆ เคนเฅ€ เค† เคฐเคนเฅ€ เคนเฅˆ', + burmese: + 'แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€žแ€แ€บแ€™แ€พแ€แ€บแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ แ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บ แ€™แ€€แ€ผแ€ฌแ€™แ€ฎ แ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€พแ€ญแ€œแ€ฌแ€™แ€Šแ€บ', + thai: 'เธŸเธตเน€เธˆเธญเธฃเนŒเธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเน€เธ‡เธทเนˆเธญเธ™เน„เธ‚เธˆเธฐเธกเธฒเน€เธฃเน‡เธงเน† เธ™เธตเน‰', + mandarin: 'ๆกๆฌพๅ’ŒๆกไปถๅŠŸ่ƒฝๅณๅฐ†ๆŽจๅ‡บ' }, experimentalFeatures: { english: 'Experimental Features', @@ -4772,7 +7126,11 @@ export const localizations = { brazilian_portuguese: 'Recursos Experimentais', tok_pisin: 'Experimental Features', indonesian: 'Fitur Eksperimental', - nepali: 'เคชเฅเคฐเคฏเฅ‹เค—เคพเคคเฅเคฎเค• เคธเฅเคตเคฟเคงเคพเคนเคฐเฅ‚' + nepali: 'เคชเฅเคฐเคฏเฅ‹เค—เคพเคคเฅเคฎเค• เคธเฅเคตเคฟเคงเคพเคนเคฐเฅ‚', + hindi: 'เคชเฅเคฐเคฏเฅ‹เค—เคพเคคเฅเคฎเค• เคธเฅเคตเคฟเคงเคพเคเค‚', + burmese: 'แ€…แ€™แ€บแ€ธแ€žแ€•แ€บแ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธŸเธตเน€เธˆเธญเธฃเนŒเธ—เธ”เธฅเธญเธ‡', + mandarin: 'ๅฎž้ชŒๆ€งๅŠŸ่ƒฝ' }, aiSuggestions: { english: 'AI Suggestions', @@ -4780,7 +7138,11 @@ export const localizations = { brazilian_portuguese: 'Sugestรตes de IA', tok_pisin: 'AI Suggestions', indonesian: 'Saran AI', - nepali: 'เคเค†เคˆ เคธเฅเคเคพเคตเคนเคฐเฅ‚' + nepali: 'เคเค†เคˆ เคธเฅเคเคพเคตเคนเคฐเฅ‚', + hindi: 'เคเค†เคˆ เคธเฅเคเคพเคต', + burmese: 'AI แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ„เธณเนเธ™เธฐเธ™เธณเธˆเธฒเธ AI', + mandarin: 'AIๅปบ่ฎฎ' }, aiSuggestionsDescription: { english: @@ -4794,7 +7156,12 @@ export const localizations = { indonesian: 'Aktifkan saran terjemahan berbasis AI berdasarkan terjemahan terdekat', nepali: - 'เคจเคœเคฟเค•เค•เคพ เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚เคฎเคพ เค†เคงเคพเคฐเคฟเคค เคเค†เคˆ-เคธเค‚เคšเคพเคฒเคฟเคค เค…เคจเฅเคตเคพเคฆ เคธเฅเคเคพเคตเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + 'เคจเคœเคฟเค•เค•เคพ เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚เคฎเคพ เค†เคงเคพเคฐเคฟเคค เคเค†เคˆ-เคธเค‚เคšเคพเคฒเคฟเคค เค…เคจเฅเคตเคพเคฆ เคธเฅเคเคพเคตเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคจเคฟเค•เคŸเคตเคฐเฅเคคเฅ€ เค…เคจเฅเคตเคพเคฆเฅ‹เค‚ เค•เฅ‡ เค†เคงเคพเคฐ เคชเคฐ AI-เคธเค‚เคšเคพเคฒเคฟเคค เค…เคจเฅเคตเคพเคฆ เคธเฅเคเคพเคต เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚', + burmese: + 'แ€กแ€”แ€ฎแ€ธแ€กแ€”แ€ฌแ€ธแ€›แ€พแ€ญ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€กแ€•แ€ฑแ€ซแ€บ แ€กแ€แ€ผแ€ฑแ€แ€ถแ AI-แ€•แ€ซแ€แ€„แ€บแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ„เธณเนเธ™เธฐเธ™เธณเธเธฒเธฃเนเธ›เธฅเธ—เธตเนˆเธ‚เธฑเธšเน€เธ„เธฅเธทเนˆเธญเธ™เธ”เน‰เธงเธข AI เธ•เธฒเธกเธเธฒเธฃเนเธ›เธฅเธ—เธตเนˆเธญเธขเธนเนˆเนƒเธเธฅเน‰เน€เธ„เธตเธขเธ‡', + mandarin: 'ๅฏ็”จๅŸบไบŽ้™„่ฟ‘็ฟป่ฏ‘็š„AI้ฉฑๅŠจ็ฟป่ฏ‘ๅปบ่ฎฎ' }, playAll: { english: 'Play All Assets', @@ -4802,7 +7169,11 @@ export const localizations = { brazilian_portuguese: 'Reproduzir Todos os Recursos', tok_pisin: 'Playim Olgeta Assets', indonesian: 'Putar Semua Aset', - nepali: 'เคธเคฌเฅˆ เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคชเฅเคฒเฅ‡ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคฌเฅˆ เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคชเฅเคฒเฅ‡ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคญเฅ€ เคเคธเฅ‡เคŸ เคšเคฒเคพเคเค‚', + burmese: 'แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธฅเนˆเธ™เธ—เธฃเธฑเธžเธขเธฒเธเธฃเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: 'ๆ’ญๆ”พๆ‰€ๆœ‰่ต„ๆบ' }, playAllDescription: { english: @@ -4816,7 +7187,13 @@ export const localizations = { indonesian: 'Aktifkan fitur putar semua aset untuk memutar semua aset audio secara berurutan', nepali: - 'เคธเคฌเฅˆ เค…เคกเคฟเคฏเฅ‹ เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เค•เฅเคฐเคฎเคถเคƒ เคชเฅเคฒเฅ‡ เค—เคฐเฅเคจ เคธเคฌเฅˆ เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคชเฅเคฒเฅ‡ เค—เคฐเฅเคจเฅ‡ เคธเฅเคตเคฟเคงเคพ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + 'เคธเคฌเฅˆ เค…เคกเคฟเคฏเฅ‹ เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เค•เฅเคฐเคฎเคถเคƒ เคชเฅเคฒเฅ‡ เค—เคฐเฅเคจ เคธเคฌเฅˆ เคเคธเฅ‡เคŸเคนเคฐเฅ‚ เคชเฅเคฒเฅ‡ เค—เคฐเฅเคจเฅ‡ เคธเฅเคตเคฟเคงเคพ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: + 'เคธเคญเฅ€ เค‘เคกเคฟเคฏเฅ‹ เคเคธเฅ‡เคŸ เค•เฅ‹ เค•เฅเคฐเคฎ เคฎเฅ‡เค‚ เคšเคฒเคพเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเคญเฅ€ เคเคธเฅ‡เคŸ เคšเคฒเคพเคเค‚ เคธเฅเคตเคฟเคงเคพ เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚', + burmese: + 'แ€กแ€žแ€ถแ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€กแ€…แ€‰แ€บแ€กแ€แ€ญแ€ฏแ€„แ€บแ€ธ แ€–แ€ฝแ€„แ€ทแ€บแ€›แ€”แ€บ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธŸเธตเน€เธˆเธญเธฃเนŒเน€เธฅเนˆเธ™เธ—เธฃเธฑเธžเธขเธฒเธเธฃเธ—เธฑเน‰เธ‡เธซเธกเธ”เน€เธžเธทเนˆเธญเน€เธฅเนˆเธ™เธ—เธฃเธฑเธžเธขเธฒเธเธฃเน€เธชเธตเธขเธ‡เธ—เธฑเน‰เธ‡เธซเธกเธ”เธ•เธฒเธกเธฅเธณเธ”เธฑเธš', + mandarin: 'ๅฏ็”จๆ’ญๆ”พๆ‰€ๆœ‰่ต„ๆบๅŠŸ่ƒฝไปฅๆŒ‰้กบๅบๆ’ญๆ”พๆ‰€ๆœ‰้Ÿณ้ข‘่ต„ๆบ' }, advanced: { english: 'Advanced', @@ -4824,7 +7201,11 @@ export const localizations = { brazilian_portuguese: 'Avanรงado', tok_pisin: 'Advanced', indonesian: 'Lanjutan', - nepali: 'เค‰เคจเฅเคจเคค' + nepali: 'เค‰เคจเฅเคจเคค', + hindi: 'เค‰เคจเฅเคจเคค', + burmese: 'แ€กแ€†แ€„แ€ทแ€บแ€™แ€ผแ€„แ€ทแ€บ', + thai: 'เธ‚เธฑเน‰เธ™เธชเธนเธ‡', + mandarin: '้ซ˜็บง' }, debugMode: { english: 'Debug Mode', @@ -4832,7 +7213,11 @@ export const localizations = { brazilian_portuguese: 'Modo de depuraรงรฃo', tok_pisin: 'Debug Mode', indonesian: 'Mode Debug', - nepali: 'เคกเคฟเคฌเค— เคฎเฅ‹เคก' + nepali: 'เคกเคฟเคฌเค— เคฎเฅ‹เคก', + hindi: 'เคกเคฟเคฌเค— เคฎเฅ‹เคก', + burmese: 'แ€’แ€ฎแ€˜แ€แ€บแ€แ€บแ€™แ€ฏแ€’แ€บ', + thai: 'เน‚เธซเธกเธ”เธ”เธตเธšเธฑเธ', + mandarin: '่ฐƒ่ฏ•ๆจกๅผ' }, debugModeDescription: { english: 'Enable debug mode for development features', @@ -4841,7 +7226,11 @@ export const localizations = { 'Habilitar modo de depuraรงรฃo para funcionalidades de desenvolvimento', tok_pisin: 'Onim debug mode long development features', indonesian: 'Aktifkan mode debug untuk fitur pengembangan', - nepali: 'เคตเคฟเค•เคพเคธ เคธเฅเคตเคฟเคงเคพเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคกเคฟเคฌเค— เคฎเฅ‹เคก เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคตเคฟเค•เคพเคธ เคธเฅเคตเคฟเคงเคพเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคกเคฟเคฌเค— เคฎเฅ‹เคก เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคตเคฟเค•เคพเคธ เคธเฅเคตเคฟเคงเคพเค“เค‚ เค•เฅ‡ เคฒเคฟเค เคกเคฟเคฌเค— เคฎเฅ‹เคก เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚', + burmese: 'แ€–แ€ฝแ€ถแ€ทแ€–แ€ผแ€ญแ€ฏแ€ธแ€แ€ญแ€ฏแ€ธแ€แ€€แ€บแ€™แ€พแ€ฏ แ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€™แ€ปแ€ฌแ€ธแ€กแ€แ€ฝแ€€แ€บ แ€’แ€ฎแ€˜แ€แ€บแ€แ€บแ€™แ€ฏแ€’แ€บแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เน‚เธซเธกเธ”เธ”เธตเธšเธฑเธเธชเธณเธซเธฃเธฑเธšเธŸเธตเน€เธˆเธญเธฃเนŒเธเธฒเธฃเธžเธฑเธ’เธ™เธฒ', + mandarin: 'ไธบๅผ€ๅ‘ๅŠŸ่ƒฝๅฏ็”จ่ฐƒ่ฏ•ๆจกๅผ' }, settingsRequireInternet: { english: 'Some settings require an internet connection', @@ -4850,7 +7239,11 @@ export const localizations = { 'Algumas configuraรงรตes requerem uma conexรฃo com a internet', tok_pisin: 'Sampela settings i nidim internet connection', indonesian: 'Beberapa pengaturan memerlukan koneksi internet', - nepali: 'เค•เฅ‡เคนเฅ€ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚เคฒเคพเคˆ เค‡เคจเฅเคŸเคฐเคจเฅ‡เคŸ เคœเคกเคพเคจ เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เค•เฅ‡เคนเฅ€ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚เคฒเคพเคˆ เค‡เคจเฅเคŸเคฐเคจเฅ‡เคŸ เคœเคกเคพเคจ เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เค•เฅเค› เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ เค•เฅ‡ เคฒเคฟเค เค‡เค‚เคŸเคฐเคจเฅ‡เคŸ เค•เคจเฅ‡เค•เฅเคถเคจ เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€†แ€€แ€บแ€แ€„แ€บแ€กแ€แ€ปแ€ญแ€ฏแ€ทแ€žแ€Šแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€™แ€พแ€ฏ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บ', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธšเธฒเธ‡เธญเธขเนˆเธฒเธ‡เธ•เน‰เธญเธ‡เนƒเธŠเน‰เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•', + mandarin: 'ๆŸไบ›่ฎพ็ฝฎ้œ€่ฆไบ’่”็ฝ‘่ฟžๆŽฅ' }, internetConnectionRequired: { english: 'Internet connection required', @@ -4858,7 +7251,11 @@ export const localizations = { brazilian_portuguese: 'Conexรฃo com a internet necessรกria', tok_pisin: 'Internet connection i mas', indonesian: 'Koneksi internet diperlukan', - nepali: 'เค‡เคจเฅเคŸเคฐเคจเฅ‡เคŸ เคœเคกเคพเคจ เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เค‡เคจเฅเคŸเคฐเคจเฅ‡เคŸ เคœเคกเคพเคจ เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เค‡เค‚เคŸเคฐเคจเฅ‡เคŸ เค•เคจเฅ‡เค•เฅเคถเคจ เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€™แ€พแ€ฏ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธ™เน‡เธ•', + mandarin: '้œ€่ฆไบ’่”็ฝ‘่ฟžๆŽฅ' }, clear: { english: 'Clear', @@ -4866,7 +7263,11 @@ export const localizations = { brazilian_portuguese: 'Limpar', tok_pisin: 'Klinim', indonesian: 'Hapus', - nepali: 'เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคพเคซ เค•เคฐเฅ‡เค‚', + burmese: 'แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธฅเน‰เธฒเธ‡', + mandarin: 'ๆธ…้™ค' }, unnamedAsset: { english: 'Unnamed Asset', @@ -4874,7 +7275,11 @@ export const localizations = { brazilian_portuguese: 'Atividade sem nome', tok_pisin: 'Asset i no gat nem', indonesian: 'Asset Tanpa Nama', - nepali: 'เคจเคพเคฎ เคจเคญเคเค•เฅ‹ เคเคธเฅ‡เคŸ' + nepali: 'เคจเคพเคฎ เคจเคญเคเค•เฅ‹ เคเคธเฅ‡เคŸ', + hindi: 'เค…เคจเคพเคฎเคฟเคค เคเคธเฅ‡เคŸ', + burmese: 'แ€กแ€™แ€Šแ€บแ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บ', + thai: 'เธ—เธฃเธฑเธžเธขเธฒเธเธฃเธ—เธตเนˆเน„เธกเนˆเธกเธตเธŠเธทเนˆเธญ', + mandarin: 'ๆœชๅ‘ฝๅ่ต„ๆบ' }, noAssetSelected: { english: 'No Asset Selected', @@ -4882,7 +7287,11 @@ export const localizations = { brazilian_portuguese: 'Nenhuma atividade selecionada', tok_pisin: 'Yu no makim wanpela asset', indonesian: 'Tidak Ada Asset yang Dipilih', - nepali: 'เค•เฅเคจเฅˆ เคเคธเฅ‡เคŸ เค›เคพเคจเคฟเคเค•เฅ‹ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคเคธเฅ‡เคŸ เค›เคพเคจเคฟเคเค•เฅ‹ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคเคธเฅ‡เคŸ เคšเคฏเคจเคฟเคค เคจเคนเฅ€เค‚', + burmese: 'แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€‘แ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเน„เธ”เน‰เน€เธฅเธทเธญเธเธ—เธฃเธฑเธžเธขเธฒเธเธฃ', + mandarin: 'ๆœช้€‰ๆ‹ฉ่ต„ๆบ' }, assetNotAvailableOffline: { english: 'Asset not available offline', @@ -4890,7 +7299,11 @@ export const localizations = { brazilian_portuguese: 'A atividade nรฃo estรก disponรญvel offline', tok_pisin: 'Asset i no stap taim i no gat internet', indonesian: 'Asset tidak tersedia offline', - nepali: 'เคเคธเฅ‡เคŸ เค…เคซเคฒเคพเค‡เคจ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ' + nepali: 'เคเคธเฅ‡เคŸ เค…เคซเคฒเคพเค‡เคจ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ', + hindi: 'เคเคธเฅ‡เคŸ เค‘เคซเคฒเคพเค‡เคจ เค‰เคชเคฒเคฌเฅเคง เคจเคนเฅ€เค‚ เคนเฅˆ', + burmese: 'แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€žแ€Šแ€บ แ€กแ€ฑแ€ฌแ€ทแ€–แ€บแ€œแ€ญแ€ฏแ€„แ€บแ€ธ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซ', + thai: 'เธ—เธฃเธฑเธžเธขเธฒเธเธฃเน„เธกเนˆเธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™เนเธšเธšเธญเธญเธŸเน„เธฅเธ™เนŒ', + mandarin: '่ต„ๆบ็ฆป็บฟไธๅฏ็”จ' }, cloudError: { english: 'Cloud error: {error}', @@ -4898,7 +7311,11 @@ export const localizations = { brazilian_portuguese: 'Erro na nuvem: {error}', tok_pisin: 'Cloud error: {error}', indonesian: 'Kesalahan cloud: {error}', - nepali: 'เค•เฅเคฒเคพเค‰เคก เคคเฅเคฐเฅเคŸเคฟ: {error}' + nepali: 'เค•เฅเคฒเคพเค‰เคก เคคเฅเคฐเฅเคŸเคฟ: {error}', + hindi: 'เค•เฅเคฒเคพเค‰เคก เคคเฅเคฐเฅเคŸเคฟ: {error}', + burmese: 'แ€€แ€œแ€ฑแ€ฌแ€€แ€บแ€’แ€บ แ€กแ€™แ€พแ€ฌแ€ธ: {error}', + thai: 'เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เธ‚เธญเธ‡เธ„เธฅเธฒเธงเธ”เนŒ: {error}', + mandarin: 'ไบ‘้”™่ฏฏ: {error}' }, assetNotFoundOnline: { english: 'Asset not found online', @@ -4906,7 +7323,11 @@ export const localizations = { brazilian_portuguese: 'A atividade nรฃo foi encontrada online', tok_pisin: 'Asset i no stap long internet', indonesian: 'Asset tidak ditemukan online', - nepali: 'เคเคธเฅ‡เคŸ เค…เคจเคฒเคพเค‡เคจ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ' + nepali: 'เคเคธเฅ‡เคŸ เค…เคจเคฒเคพเค‡เคจ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ', + hindi: 'เคเคธเฅ‡เคŸ เค‘เคจเคฒเคพเค‡เคจ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเคพ', + burmese: 'แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€€แ€ญแ€ฏ แ€กแ€ฝแ€”แ€บแ€œแ€ญแ€ฏแ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธžเธšเธ—เธฃเธฑเธžเธขเธฒเธเธฃเธญเธญเธ™เน„เธฅเธ™เนŒ', + mandarin: 'ๅœจ็บฟๆœชๆ‰พๅˆฐ่ต„ๆบ' }, trySwitchingToCloudDataSource: { english: 'Try switching to Cloud data source above', @@ -4914,7 +7335,11 @@ export const localizations = { brazilian_portuguese: 'Tente mudar para a fonte de dados na nuvem', tok_pisin: 'Traim senisim long Cloud data source antap', indonesian: 'Coba beralih ke sumber data Cloud di atas', - nepali: 'เคฎเคพเคฅเคฟ เค•เฅเคฒเคพเค‰เคก เคกเคพเคŸเคพ เคธเฅเคฐเฅ‹เคคเคฎเคพ เคธเฅเคตเคฟเคš เค—เคฐเฅเคจเฅ‡ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเคพเคฅเคฟ เค•เฅเคฒเคพเค‰เคก เคกเคพเคŸเคพ เคธเฅเคฐเฅ‹เคคเคฎเคพ เคธเฅเคตเคฟเคš เค—เคฐเฅเคจเฅ‡ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคŠเคชเคฐ เค•เฅเคฒเคพเค‰เคก เคกเฅ‡เคŸเคพ เคธเฅเคฐเฅ‹เคค เคชเคฐ เคธเฅเคตเคฟเคš เค•เคฐเคจเฅ‡ เค•เคพ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€‘แ€€แ€บแ€›แ€พแ€ญ แ€€แ€œแ€ฑแ€ฌแ€€แ€บแ€’แ€บ แ€’แ€ฑแ€แ€ฌ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€žแ€ญแ€ฏแ€ท แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€›แ€”แ€บ แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซ', + thai: 'เธฅเธญเธ‡เน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ›เนƒเธŠเน‰เนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ„เธฅเธฒเธงเธ”เนŒเธ”เน‰เธฒเธ™เธšเธ™', + mandarin: 'ๅฐ่ฏ•ๅˆ‡ๆขๅˆฐไธŠๆ–น็š„ไบ‘ๆ•ฐๆฎๆบ' }, trySwitchingToOfflineDataSource: { english: 'Try switching to Offline data source above', @@ -4922,7 +7347,11 @@ export const localizations = { brazilian_portuguese: 'Tente mudar para a fonte de datos offline', tok_pisin: 'Traim senisim long Offline data source antap', indonesian: 'Coba beralih ke sumber data Offline di atas', - nepali: 'เคฎเคพเคฅเคฟ เค…เคซเคฒเคพเค‡เคจ เคกเคพเคŸเคพ เคธเฅเคฐเฅ‹เคคเคฎเคพ เคธเฅเคตเคฟเคš เค—เคฐเฅเคจเฅ‡ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเคพเคฅเคฟ เค…เคซเคฒเคพเค‡เคจ เคกเคพเคŸเคพ เคธเฅเคฐเฅ‹เคคเคฎเคพ เคธเฅเคตเคฟเคš เค—เคฐเฅเคจเฅ‡ เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคŠเคชเคฐ เค‘เคซเคฒเคพเค‡เคจ เคกเฅ‡เคŸเคพ เคธเฅเคฐเฅ‹เคค เคชเคฐ เคธเฅเคตเคฟเคš เค•เคฐเคจเฅ‡ เค•เคพ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€‘แ€€แ€บแ€›แ€พแ€ญ แ€กแ€ฑแ€ฌแ€ทแ€–แ€บแ€œแ€ญแ€ฏแ€„แ€บแ€ธ แ€’แ€ฑแ€แ€ฌ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€žแ€ญแ€ฏแ€ท แ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€›แ€”แ€บ แ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซ', + thai: 'เธฅเธญเธ‡เน€เธ›เธฅเธตเนˆเธขเธ™เน„เธ›เนƒเธŠเน‰เนเธซเธฅเนˆเธ‡เธ‚เน‰เธญเธกเธนเธฅเธญเธญเธŸเน„เธฅเธ™เนŒเธ”เน‰เธฒเธ™เธšเธ™', + mandarin: 'ๅฐ่ฏ•ๅˆ‡ๆขๅˆฐไธŠๆ–น็š„็ฆป็บฟๆ•ฐๆฎๆบ' }, assetMayNotBeSynchronized: { english: 'This asset may not be synchronized or may not exist', @@ -4931,7 +7360,11 @@ export const localizations = { 'Esta atividade pode nรฃo estar sincronizada ou pode nรฃo existir', tok_pisin: 'Dispela asset i no sync o i no stap', indonesian: 'Asset ini mungkin tidak tersinkronisasi atau tidak ada', - nepali: 'เคฏเฅ‹ เคเคธเฅ‡เคŸ เคธเคฟเค‚เค•เฅเคฐเฅ‹เคจเคพเค‡เคœ เคจเคญเคเค•เฅ‹ เคตเคพ เค…เคตเคธเฅเคฅเคฟเคค เคจเคนเฅเคจ เคธเค•เฅเค›' + nepali: 'เคฏเฅ‹ เคเคธเฅ‡เคŸ เคธเคฟเค‚เค•เฅเคฐเฅ‹เคจเคพเค‡เคœ เคจเคญเคเค•เฅ‹ เคตเคพ เค…เคตเคธเฅเคฅเคฟเคค เคจเคนเฅเคจ เคธเค•เฅเค›', + hindi: 'เคฏเคน เคเคธเฅ‡เคŸ เคธเคฟเค‚เค•เฅเคฐเคจเคพเค‡เคœเคผ เคจเคนเฅ€เค‚ เคนเฅ‹ เคธเค•เคคเคพ เคนเฅˆ เคฏเคพ เคฎเฅŒเคœเฅ‚เคฆ เคจเคนเฅ€เค‚ เคนเฅ‹ เคธเค•เคคเคพ เคนเฅˆ', + burmese: 'แ€คแ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€žแ€Šแ€บ แ€…แ€„แ€ทแ€บแ€แ€ปแ€›แ€”แ€บแ€™แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€ฑแ€ฌ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€™แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซ', + thai: 'เธ—เธฃเธฑเธžเธขเธฒเธเธฃเธ™เธตเน‰เธญเธฒเธˆเน„เธกเนˆเน„เธ”เน‰เธ‹เธดเธ‡เธ„เนŒเธซเธฃเธทเธญเธญเธฒเธˆเน„เธกเนˆเธกเธตเธญเธขเธนเนˆ', + mandarin: 'ๆญค่ต„ๆบๅฏ่ƒฝๆœชๅŒๆญฅๆˆ–ๅฏ่ƒฝไธๅญ˜ๅœจ' }, noContentAvailable: { english: 'No content available', @@ -4939,7 +7372,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum conteรบdo disponรญvel', tok_pisin: 'I no gat content', indonesian: 'Tidak ada konten tersedia', - nepali: 'เค•เฅเคจเฅˆ เคธเคพเคฎเค—เฅเคฐเฅ€ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคธเคพเคฎเค—เฅเคฐเฅ€ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคธเคพเคฎเค—เฅเคฐเฅ€ เค‰เคชเคฒเคฌเฅเคง เคจเคนเฅ€เค‚ เคนเฅˆ', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌ แ€™แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเน€เธ™เธทเน‰เธญเธซเธฒ', + mandarin: 'ๆ— ๅฏ็”จๅ†…ๅฎน' }, audioReady: { english: 'Audio ready', @@ -4947,7 +7384,11 @@ export const localizations = { brazilian_portuguese: 'รudio pronto', tok_pisin: 'Audio i redi', indonesian: 'Audio siap', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เคคเคฏเคพเคฐ เค›' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เคคเคฏเคพเคฐ เค›', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคคเฅˆเคฏเคพเคฐ', + burmese: 'แ€กแ€žแ€ถ แ€กแ€†แ€„แ€บแ€žแ€„แ€ทแ€บแ€–แ€ผแ€…แ€บแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน€เธชเธตเธขเธ‡เธžเธฃเน‰เธญเธก', + mandarin: '้Ÿณ้ข‘ๅฐฑ็ปช' }, audioNotAvailable: { english: 'Audio not available', @@ -4955,7 +7396,11 @@ export const localizations = { brazilian_portuguese: 'รudio nรฃo disponรญvel', tok_pisin: 'Audio i no stap', indonesian: 'Audio tidak tersedia', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เค‰เคชเคฒเคฌเฅเคง เคจเคนเฅ€เค‚ เคนเฅˆ', + burmese: 'แ€กแ€žแ€ถ แ€™แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซ', + thai: 'เน€เธชเธตเธขเธ‡เน„เธกเนˆเธžเธฃเน‰เธญเธกเนƒเธŠเน‰เธ‡เธฒเธ™', + mandarin: '้Ÿณ้ข‘ไธๅฏ็”จ' }, imagesAvailable: { english: 'Images available', @@ -4963,7 +7408,11 @@ export const localizations = { brazilian_portuguese: 'Imagens disponรญveis', tok_pisin: 'Ol piksa i stap', indonesian: 'Gambar tersedia', - nepali: 'เคคเคธเฅเคฌเคฟเคฐเคนเคฐเฅ‚ เค‰เคชเคฒเคฌเฅเคง เค›เคจเฅ' + nepali: 'เคคเคธเฅเคฌเคฟเคฐเคนเคฐเฅ‚ เค‰เคชเคฒเคฌเฅเคง เค›เคจเฅ', + hindi: 'เค›เคตเคฟเคฏเคพเค‚ เค‰เคชเคฒเคฌเฅเคง เคนเฅˆเค‚', + burmese: 'แ€›แ€ฏแ€•แ€บแ€•แ€ฏแ€ถแ€™แ€ปแ€ฌแ€ธ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธกเธตเธฃเธนเธ›เธ เธฒเธž', + mandarin: 'ๅ›พๅƒๅฏ็”จ' }, language: { english: 'Language', @@ -4971,7 +7420,11 @@ export const localizations = { brazilian_portuguese: 'Idioma', tok_pisin: 'Tokples', indonesian: 'Bahasa', - nepali: 'เคญเคพเคทเคพ' + nepali: 'เคญเคพเคทเคพ', + hindi: 'เคญเคพเคทเคพ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ', + thai: 'เธ เธฒเธฉเธฒ', + mandarin: '่ฏญ่จ€' }, template: { english: 'Template', @@ -4979,7 +7432,11 @@ export const localizations = { brazilian_portuguese: 'Plantilla', tok_pisin: 'Template', indonesian: 'Template', - nepali: 'เคŸเฅ‡เคฎเฅเคชเฅเคฒเฅ‡เคŸ' + nepali: 'เคŸเฅ‡เคฎเฅเคชเฅเคฒเฅ‡เคŸ', + hindi: 'เคŸเฅ‡เคฎเฅเคชเฅเคฒเฅ‡เคŸ', + burmese: 'แ€•แ€ฏแ€ถแ€…แ€ถ', + thai: 'เน€เธ—เธกเน€เธžเธฅเธ•', + mandarin: 'ๆจกๆฟ' }, // template options bible: { @@ -4988,7 +7445,11 @@ export const localizations = { brazilian_portuguese: 'Bรญblia', tok_pisin: 'Bible', indonesian: 'Alkitab', - nepali: 'เคฌเคพเค‡เคฌเคฒ' + nepali: 'เคฌเคพเค‡เคฌเคฒ', + hindi: 'เคฌเคพเค‡เคฌเคฒ', + burmese: 'แ€žแ€™แ€นแ€™แ€ฌแ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ', + thai: 'เธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒ', + mandarin: 'ๅœฃ็ป' }, unstructured: { english: 'Unstructured', @@ -4996,7 +7457,11 @@ export const localizations = { brazilian_portuguese: 'Nรฃo estruturado', tok_pisin: 'Unstructured', indonesian: 'Tidak terstruktur', - nepali: 'เคธเค‚เคฐเคšเคจเคพ เคจเคญเคเค•เฅ‹' + nepali: 'เคธเค‚เคฐเคšเคจเคพ เคจเคญเคเค•เฅ‹', + hindi: 'เค…เคธเค‚เคฐเคšเคฟเคค', + burmese: 'แ€–แ€ฝแ€ฒแ€ทแ€…แ€Šแ€บแ€ธแ€™แ€พแ€ฏ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌ', + thai: 'เน„เธกเนˆเธกเธตเน‚เธ„เธฃเธ‡เธชเธฃเน‰เธฒเธ‡', + mandarin: '้ž็ป“ๆž„ๅŒ–' }, audioTracks: { english: 'Audio tracks', @@ -5004,7 +7469,11 @@ export const localizations = { brazilian_portuguese: 'Pistas de รกudio', tok_pisin: 'Ol audio track', indonesian: 'Trek audio', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเฅเคฏเคพเค•เคนเคฐเฅ‚' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเฅเคฏเคพเค•เคนเคฐเฅ‚', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเฅˆเค•', + burmese: 'แ€กแ€žแ€ถแ€‘แ€ฝแ€€แ€บแ€œแ€™แ€บแ€ธแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เนเธ—เธฃเน‡เธเน€เธชเธตเธขเธ‡', + mandarin: '้Ÿณ้ข‘่ฝจ้“' }, membersOnly: { english: 'Members Only', @@ -5012,7 +7481,11 @@ export const localizations = { brazilian_portuguese: 'Sรณ para membros', tok_pisin: 'Member tasol', indonesian: 'Khusus Anggota', - nepali: 'เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคฎเคพเคคเฅเคฐ' + nepali: 'เคธเคฆเคธเฅเคฏเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เคฎเคพเคคเฅเคฐ', + hindi: 'เค•เฅ‡เคตเคฒ เคธเคฆเคธเฅเคฏ', + burmese: 'แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€žแ€ฌ', + thai: 'เธชเธกเธฒเธŠเธดเธเน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™', + mandarin: 'ไป…้™ๆˆๅ‘˜' }, cloud: { english: 'Cloud', @@ -5020,7 +7493,11 @@ export const localizations = { brazilian_portuguese: 'Nuvem', tok_pisin: 'Cloud', indonesian: 'Cloud', - nepali: 'เค•เฅเคฒเคพเค‰เคก' + nepali: 'เค•เฅเคฒเคพเค‰เคก', + hindi: 'เค•เฅเคฒเคพเค‰เคก', + burmese: 'Cloud', + thai: 'เธ„เธฅเธฒเธงเธ”เนŒ', + mandarin: 'ไบ‘็ซฏ' }, syncing: { english: 'Syncing', @@ -5028,7 +7505,11 @@ export const localizations = { brazilian_portuguese: 'Sincronizando', tok_pisin: 'I sync', indonesian: 'Sinkronisasi', - nepali: 'เคธเคฟเค™เฅเค• เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคธเคฟเค™เฅเค• เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคธเคฟเค‚เค• เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€กแ€„แ€บแ€แ€ปแ€ญแ€”แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ‹เธดเธ‡เธ„เนŒ', + mandarin: 'ๆญฃๅœจๅŒๆญฅ' }, synced: { english: 'Synced', @@ -5036,7 +7517,11 @@ export const localizations = { brazilian_portuguese: 'Sincronizado', tok_pisin: 'Sync pinis', indonesian: 'Tersinkronisasi', - nepali: 'เคธเคฟเค™เฅเค• เคญเคฏเฅ‹' + nepali: 'เคธเคฟเค™เฅเค• เคญเคฏเฅ‹', + hindi: 'เคธเคฟเค‚เค• เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€กแ€„แ€บแ€แ€ปแ€ญแ€”แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ผแ€ฎ', + thai: 'เธ‹เธดเธ‡เธ„เนŒเนเธฅเน‰เธง', + mandarin: 'ๅทฒๅŒๆญฅ' }, questSyncedToCloud: { english: 'Quest is synced to cloud', @@ -5044,7 +7529,11 @@ export const localizations = { brazilian_portuguese: 'A missรฃo estรก sincronizada na nuvem', tok_pisin: 'Quest i sync pinis long cloud', indonesian: 'Quest telah disinkronkan ke cloud', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเคฟเค™เฅเค• เคญเคเค•เฅ‹ เค›' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅเคฒเคพเค‰เคกเคฎเคพ เคธเคฟเค™เฅเค• เคญเคเค•เฅ‹ เค›', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅเคฒเคพเค‰เคก เคฎเฅ‡เค‚ เคธเคฟเค‚เค• เคนเฅ‹ เค—เคฏเคพ เคนเฅˆ', + burmese: 'Quest แ€žแ€Šแ€บ cloud แ€žแ€ญแ€ฏแ€ท แ€กแ€„แ€บแ€แ€ปแ€ญแ€”แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ผแ€ฎ', + thai: 'เน€เธ„เธงเธชเธ•เนŒเธ–เธนเธเธ‹เธดเธ‡เธ„เนŒเน„เธ›เธขเธฑเธ‡เธ„เธฅเธฒเธงเธ”เนŒเนเธฅเน‰เธง', + mandarin: 'ไปปๅŠกๅทฒๅŒๆญฅๅˆฐไบ‘็ซฏ' }, failed: { english: 'Failed', @@ -5052,7 +7541,11 @@ export const localizations = { brazilian_portuguese: 'Falhado', tok_pisin: 'I pail', indonesian: 'Gagal', - nepali: 'เค…เคธเคซเคฒ เคญเคฏเฅ‹' + nepali: 'เค…เคธเคซเคฒ เคญเคฏเฅ‹', + hindi: 'เค…เคธเคซเคฒ', + burmese: 'แ€€แ€ปแ€›แ€พแ€ฏแ€ถแ€ธแ€žแ€Šแ€บ', + thai: 'เธฅเน‰เธกเน€เธซเธฅเธง', + mandarin: 'ๅคฑ่ดฅ' }, state: { english: 'State', @@ -5060,7 +7553,11 @@ export const localizations = { brazilian_portuguese: 'Estado', tok_pisin: 'State', indonesian: 'Status', - nepali: 'เค…เคตเคธเฅเคฅเคพ' + nepali: 'เค…เคตเคธเฅเคฅเคพ', + hindi: 'เค…เคตเคธเฅเคฅเคพ', + burmese: 'แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑ', + thai: 'เธชเธ–เธฒเธ™เธฐ', + mandarin: '็Šถๆ€' }, noQuestSelected: { english: 'No Quest Selected', @@ -5068,7 +7565,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum projeto selecionado', tok_pisin: 'Yu no makim wanpela quest', indonesian: 'Tidak Ada Quest yang Dipilih', - nepali: 'เค•เฅเคจเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เค›เคพเคจเคฟเคเค•เฅ‹ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เค›เคพเคจเคฟเคเค•เฅ‹ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เคšเคฏเคจเคฟเคค เคจเคนเฅ€เค‚', + burmese: 'Quest แ€€แ€ญแ€ฏ แ€™แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€‘แ€ฌแ€ธแ€•แ€ซ', + thai: 'เน„เธกเนˆเน„เธ”เน‰เน€เธฅเธทเธญเธเน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ๆœช้€‰ๆ‹ฉไปปๅŠก' }, liveAttachmentStates: { english: 'Live Attachment States', @@ -5076,7 +7577,11 @@ export const localizations = { brazilian_portuguese: 'Estados de anexos em tempo real', tok_pisin: 'Live Attachment States', indonesian: 'Status Lampiran Langsung', - nepali: 'เคชเฅเคฐเคคเฅเคฏเค•เฅเคท เคธเค‚เคฒเค—เฅเคจเค• เค…เคตเคธเฅเคฅเคพเคนเคฐเฅ‚' + nepali: 'เคชเฅเคฐเคคเฅเคฏเค•เฅเคท เคธเค‚เคฒเค—เฅเคจเค• เค…เคตเคธเฅเคฅเคพเคนเคฐเฅ‚', + hindi: 'เคฒเคพเค‡เคต เคธเค‚เคฒเค—เฅเคจเค• เค…เคตเคธเฅเคฅเคพเคเค‚', + burmese: 'แ€แ€ญแ€ฏแ€€แ€บแ€›แ€ญแ€ฏแ€€แ€บแ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธชเธ–เธฒเธ™เธฐเน„เธŸเธฅเนŒเนเธ™เธšเนเธšเธšเธชเธ”', + mandarin: 'ๅฎžๆ—ถ้™„ไปถ็Šถๆ€' }, searching: { english: 'Searching', @@ -5084,7 +7589,11 @@ export const localizations = { brazilian_portuguese: 'Buscando', tok_pisin: 'I painim', indonesian: 'Mencari', - nepali: 'เค–เฅ‹เคœเฅเคฆเฅˆ' + nepali: 'เค–เฅ‹เคœเฅเคฆเฅˆ', + hindi: 'เค–เฅ‹เคœ เคฐเคนเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€›แ€พแ€ฌแ€–แ€ฝแ€ฑแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธ„เน‰เธ™เธซเธฒ', + mandarin: 'ๆญฃๅœจๆœ็ดข' }, translationSubmittedSuccessfully: { english: 'Translation submitted successfully', @@ -5092,7 +7601,11 @@ export const localizations = { brazilian_portuguese: 'Traduรงรฃo enviada com sucesso', tok_pisin: 'Translation i go gut pinis', indonesian: 'Terjemahan berhasil dikirim', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅ‡เคถ เค—เคฐเคฟเคฏเฅ‹' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅ‡เคถ เค—เคฐเคฟเคฏเฅ‹', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคฌเคฎเคฟเคŸ เค•เคฟเคฏเคพ เค—เคฏเคพ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€แ€„แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ผแ€ฎ', + thai: 'เธชเนˆเธ‡เธ„เธณเนเธ›เธฅเธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง', + mandarin: '็ฟป่ฏ‘ๆไบคๆˆๅŠŸ' }, transcriptionSubmittedSuccessfully: { english: 'Transcription submitted successfully', @@ -5100,7 +7613,11 @@ export const localizations = { brazilian_portuguese: 'Transcriรงรฃo enviada com sucesso', tok_pisin: 'Transcription i go gut pinis', indonesian: 'Transkripsi berhasil dikirim', - nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅ‡เคถ เค—เคฐเคฟเคฏเฅ‹' + nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅ‡เคถ เค—เคฐเคฟเคฏเฅ‹', + hindi: 'เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคœเคฎเคพ เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€แ€„แ€บแ€™แ€ผแ€พแ€ฑแ€ฌแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธชเนˆเธ‡เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง', + mandarin: '่ฝฌๅฝ•ๅทฒๆˆๅŠŸๆไบค' }, text: { english: 'Text', @@ -5108,7 +7625,11 @@ export const localizations = { brazilian_portuguese: 'Texto', tok_pisin: 'Text', indonesian: 'Teks', - nepali: 'เคชเคพเค ' + nepali: 'เคชเคพเค ', + hindi: 'เคชเคพเค ', + burmese: 'แ€…แ€ฌแ€žแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธ„เธงเธฒเธก', + mandarin: 'ๆ–‡ๆœฌ' }, audio: { english: 'Audio', @@ -5116,7 +7637,11 @@ export const localizations = { brazilian_portuguese: 'รudio', tok_pisin: 'Audio', indonesian: 'Audio', - nepali: 'เค…เคกเคฟเคฏเฅ‹' + nepali: 'เค…เคกเคฟเคฏเฅ‹', + hindi: 'เค‘เคกเคฟเคฏเฅ‹', + burmese: 'แ€กแ€žแ€ถ', + thai: 'เน€เธชเธตเธขเธ‡', + mandarin: '้Ÿณ้ข‘' }, targetLanguage: { english: 'Target Language', @@ -5124,7 +7649,11 @@ export const localizations = { brazilian_portuguese: 'Idioma de destino', tok_pisin: 'Target Tokples', indonesian: 'Bahasa Target', - nepali: 'เคฒเค•เฅเคทเคฟเคค เคญเคพเคทเคพ' + nepali: 'เคฒเค•เฅเคทเคฟเคค เคญเคพเคทเคพ', + hindi: 'เคฒเค•เฅเคทเฅเคฏ เคญเคพเคทเคพ', + burmese: 'แ€•แ€…แ€บแ€™แ€พแ€แ€บแ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ', + thai: 'เธ เธฒเธฉเธฒเธ›เธฅเธฒเธขเธ—เธฒเธ‡', + mandarin: '็›ฎๆ ‡่ฏญ่จ€' }, sourceLanguage: { english: 'Source Language', @@ -5132,7 +7661,11 @@ export const localizations = { brazilian_portuguese: 'Idioma de origem', tok_pisin: 'Source Tokples', indonesian: 'Bahasa Sumber', - nepali: 'เคธเฅเคฐเฅ‹เคค เคญเคพเคทเคพ' + nepali: 'เคธเฅเคฐเฅ‹เคค เคญเคพเคทเคพ', + hindi: 'เคธเฅเคฐเฅ‹เคค เคญเคพเคทเคพ', + burmese: 'แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ', + thai: 'เธ เธฒเธฉเธฒเธ•เน‰เธ™เธ—เธฒเธ‡', + mandarin: 'ๆบ่ฏญ่จ€' }, your: { english: 'Your', @@ -5140,7 +7673,11 @@ export const localizations = { brazilian_portuguese: 'Seu', tok_pisin: 'Bilong yu', indonesian: 'Anda', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹' + nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹', + hindi: 'เค†เคชเค•เคพ', + burmese: 'แ€žแ€„แ€บแ', + thai: 'เธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: 'ๆ‚จ็š„' }, translation: { english: 'Translation', @@ -5148,7 +7685,11 @@ export const localizations = { brazilian_portuguese: 'Traduรงรฃo', tok_pisin: 'Translation', indonesian: 'Terjemahan', - nepali: 'เค…เคจเฅเคตเคพเคฆ' + nepali: 'เค…เคจเฅเคตเคพเคฆ', + hindi: 'เค…เคจเฅเคตเคพเคฆ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ', + thai: 'เธเธฒเธฃเนเธ›เธฅ', + mandarin: '็ฟป่ฏ‘' }, readyToSubmit: { english: 'Ready to submit', @@ -5156,7 +7697,11 @@ export const localizations = { brazilian_portuguese: 'Pronto para enviar', tok_pisin: 'Redi long salim', indonesian: 'Siap untuk dikirim', - nepali: 'เคชเฅ‡เคถ เค—เคฐเฅเคจ เคคเคฏเคพเคฐ' + nepali: 'เคชเฅ‡เคถ เค—เคฐเฅเคจ เคคเคฏเคพเคฐ', + hindi: 'เคœเคฎเคพ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคคเฅˆเคฏเคพเคฐ', + burmese: 'แ€แ€„แ€บแ€™แ€ผแ€พแ€ฑแ€ฌแ€€แ€บแ€›แ€”แ€บ แ€กแ€†แ€„แ€บแ€žแ€„แ€ทแ€บ', + thai: 'เธžเธฃเน‰เธญเธกเธชเนˆเธ‡', + mandarin: 'ๅ‡†ๅค‡ๆไบค' }, online: { english: 'Online', @@ -5164,7 +7709,11 @@ export const localizations = { brazilian_portuguese: 'Online', tok_pisin: 'Online', indonesian: 'Online', - nepali: 'เค…เคจเคฒเคพเค‡เคจ' + nepali: 'เค…เคจเคฒเคพเค‡เคจ', + hindi: 'เค‘เคจเคฒเคพเค‡เคจ', + burmese: 'แ€กแ€ฝแ€”แ€บแ€œแ€ญแ€ฏแ€„แ€บแ€ธ', + thai: 'เธญเธญเธ™เน„เธฅเธ™เนŒ', + mandarin: 'ๅœจ็บฟ' }, allProjects: { english: 'All Projects', @@ -5172,7 +7721,11 @@ export const localizations = { brazilian_portuguese: 'Todos os projetos', tok_pisin: 'Olgeta Project', indonesian: 'Semua Proyek', - nepali: 'เคธเคฌเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚' + nepali: 'เคธเคฌเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚', + hindi: 'เคธเคญเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: 'ๆ‰€ๆœ‰้กน็›ฎ' }, searchProjects: { english: 'Search projects...', @@ -5180,7 +7733,11 @@ export const localizations = { brazilian_portuguese: 'Buscar projetos...', tok_pisin: 'Painim ol project...', indonesian: 'Cari proyek...', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅ...', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚ เค–เฅ‹เคœเฅ‡เค‚...', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ แ€›แ€พแ€ฌแ€•แ€ซ...', + thai: 'เธ„เน‰เธ™เธซเธฒเน‚เธ„เธฃเธ‡เธเธฒเธฃ...', + mandarin: 'ๆœ็ดข้กน็›ฎ...' }, noProjectSelected: { english: 'No Project Selected', @@ -5188,7 +7745,11 @@ export const localizations = { brazilian_portuguese: 'Nenhum projeto selecionado', tok_pisin: 'Yu no makim wanpela project', indonesian: 'Tidak Ada Proyek yang Dipilih', - nepali: 'เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เคพเคจเคฟเคเค•เฅ‹ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค›เคพเคจเคฟเคเค•เฅ‹ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคšเคฏเคจเคฟเคค เคจเคนเฅ€เค‚', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€‘แ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเน„เธ”เน‰เน€เธฅเธทเธญเธเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: 'ๆœช้€‰ๆ‹ฉ้กน็›ฎ' }, noQuestsFound: { english: 'No quests found', @@ -5196,7 +7757,11 @@ export const localizations = { brazilian_portuguese: 'Nenhuma missรฃo encontrada', tok_pisin: 'I no gat quest', indonesian: 'Tidak ada quest ditemukan', - nepali: 'เค•เฅเคจเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ' + nepali: 'เค•เฅเคจเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ', + hindi: 'เค•เฅ‹เคˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเฅ€', + burmese: 'แ€แ€›แ€ฎแ€ธแ€…แ€‰แ€บ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธžเธšเธ เธฒเธฃเธเธดเธˆ', + mandarin: 'ๆœชๆ‰พๅˆฐไปปๅŠก' }, noQuestsAvailable: { english: 'No quests available', @@ -5204,7 +7769,11 @@ export const localizations = { brazilian_portuguese: 'Nenhuma missรฃo disponรญvel', tok_pisin: 'I no gat quest long usim', indonesian: 'Tidak ada quest tersedia', - nepali: 'เค•เฅเคจเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เค‰เคชเคฒเคฌเฅเคง เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เค•เฅเคตเฅ‡เคธเฅเคŸ เค‰เคชเคฒเคฌเฅเคง เคจเคนเฅ€เค‚', + burmese: 'แ€แ€›แ€ฎแ€ธแ€…แ€‰แ€บ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเธ เธฒเธฃเธเธดเธˆ', + mandarin: 'ๆฒกๆœ‰ๅฏ็”จ็š„ไปปๅŠก' }, pleaseLogInToVote: { english: 'Please log in to vote', @@ -5212,7 +7781,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, faรงa login para votar', tok_pisin: 'Plis login pastaim long vote', indonesian: 'Silakan login untuk memilih', - nepali: 'เค•เฅƒเคชเคฏเคพ เคฎเคคเคฆเคพเคจ เค—เคฐเฅเคจ เคฒเค— เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคฎเคคเคฆเคพเคจ เค—เคฐเฅเคจ เคฒเค— เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคฎเคคเคฆเคพเคจ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฒเฅ‰เค— เค‡เคจ เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€ฒแ€•แ€ฑแ€ธแ€›แ€”แ€บ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธฅเธ‡เธ„เธฐเนเธ™เธ™', + mandarin: '่ฏท็™ปๅฝ•ไปฅๆŠ•็ฅจ' }, pleaseLogInToTranscribe: { english: 'Please log in to transcribe audio', @@ -5220,7 +7793,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, faรงa login para transcrever รกudio', tok_pisin: 'Plis login pastaim long transcribe audio', indonesian: 'Silakan login untuk mentranskripsi audio', - nepali: 'เค•เฅƒเคชเคฏเคพ เค…เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคพเค‡เคฌ เค—เคฐเฅเคจ เคฒเค— เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เค…เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคพเค‡เคฌ เค—เคฐเฅเคจ เคฒเค— เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เค‘เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคพเค‡เคฌ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฒเฅ‰เค— เค‡เคจ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€žแ€ถ แ€›แ€ฑแ€ธแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธ–เธญเธ”เธ„เธงเธฒเธกเน€เธชเธตเธขเธ‡', + mandarin: '่ฏท็™ปๅฝ•ไปฅ่ฝฌๅฝ•้Ÿณ้ข‘' }, transcriptionFailed: { english: 'Failed to transcribe audio. Please try again.', @@ -5229,7 +7806,11 @@ export const localizations = { 'Falha ao transcrever รกudio. Por favor, tente novamente.', tok_pisin: 'I no inap transcribe audio. Plis traim gen.', indonesian: 'Gagal mentranskripsi audio. Silakan coba lagi.', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคพเค‡เคฌ เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคพเค‡เคฌ เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคพเค‡เคฌ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: 'แ€กแ€žแ€ถ แ€›แ€ฑแ€ธแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เธ–เธญเธ”เธ„เธงเธฒเธกเน€เธชเธตเธขเธ‡เน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: '่ฝฌๅฝ•้Ÿณ้ข‘ๅคฑ่ดฅใ€‚่ฏท้‡่ฏ•ใ€‚' }, yourTranscriptionHasBeenSubmitted: { english: 'Your transcription has been submitted', @@ -5237,7 +7818,11 @@ export const localizations = { brazilian_portuguese: 'Sua transcriรงรฃo foi enviada', tok_pisin: 'Transcription bilong yu i go pinis', indonesian: 'Transkripsi Anda telah dikirim', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคชเฅ‡เคถ เค—เคฐเคฟเคเค•เฅ‹ เค›' + nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคชเฅ‡เคถ เค—เคฐเคฟเคเค•เฅ‹ เค›', + hindi: 'เค†เคชเค•เคพ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคœเคฎเคพ เค•เคฐ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€žแ€„แ€บแ แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€™แ€ผแ€พแ€ฑแ€ฌแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธชเนˆเธ‡เนเธฅเน‰เธง', + mandarin: 'ๆ‚จ็š„่ฝฌๅฝ•ๅทฒๆไบค' }, failedToCreateTranscription: { english: 'Failed to create transcription', @@ -5245,7 +7830,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao criar a transcriรงรฃo', tok_pisin: 'I no inap mekim transcription', indonesian: 'Gagal membuat transkripsi', - nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคฌเคจเคพเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅˆ›ๅปบ่ฝฌๅฝ•ๅคฑ่ดฅ' }, enterYourTranscription: { english: 'Enter your transcription', @@ -5253,7 +7842,11 @@ export const localizations = { brazilian_portuguese: 'Digite sua transcriรงรฃo', tok_pisin: 'Raitim transcription bilong yu', indonesian: 'Masukkan transkripsi Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเคพ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ›เน‰เธญเธ™เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: '่พ“ๅ…ฅๆ‚จ็š„่ฝฌๅฝ•' }, submitTranscription: { english: 'Submit Transcription', @@ -5261,7 +7854,11 @@ export const localizations = { brazilian_portuguese: 'Enviar transcriรงรฃo', tok_pisin: 'Salim Transcription', indonesian: 'Kirim Transkripsi', - nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคœเคฎเคพ เค•เคฐเฅ‡เค‚', + burmese: 'แ€…แ€ฌแ€œแ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธ แ€แ€„แ€บแ€™แ€ผแ€พแ€ฑแ€ฌแ€€แ€บแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธก', + mandarin: 'ๆไบค่ฝฌๅฝ•' }, good: { english: 'Good', @@ -5269,7 +7866,11 @@ export const localizations = { brazilian_portuguese: 'Bom', tok_pisin: 'Gut', indonesian: 'Bagus', - nepali: 'เคฐเคพเคฎเฅเคฐเฅ‹' + nepali: 'เคฐเคพเคฎเฅเคฐเฅ‹', + hindi: 'เค…เคšเฅเค›เคพ', + burmese: 'แ€€แ€ฑแ€ฌแ€„แ€บแ€ธแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ”เธต', + mandarin: 'ๅฅฝ' }, needsWork: { english: 'Needs Work', @@ -5277,7 +7878,11 @@ export const localizations = { brazilian_portuguese: 'Precisa de trabalho', tok_pisin: 'I nidim wok moa', indonesian: 'Perlu Perbaikan', - nepali: 'เคธเฅเคงเคพเคฐ เคšเคพเคนเคฟเคจเฅเค›' + nepali: 'เคธเฅเคงเคพเคฐ เคšเคพเคนเคฟเคจเฅเค›', + hindi: 'เคธเฅเคงเคพเคฐ เค•เฅ€ เค†เคตเคถเฅเคฏเค•เคคเคพ', + burmese: 'แ€•แ€ผแ€„แ€บแ€†แ€„แ€บแ€›แ€”แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เธ›เธฃเธฑเธšเธ›เธฃเธธเธ‡', + mandarin: '้œ€่ฆๆ”น่ฟ›' }, pleaseLogInToVoteOnTranslations: { english: 'Please log in to vote on translations', @@ -5285,7 +7890,11 @@ export const localizations = { brazilian_portuguese: 'Por favor, faรงa login para votar em traduรงรตes', tok_pisin: 'Plis login pastaim long vote long ol translation', indonesian: 'Silakan login untuk memilih terjemahan', - nepali: 'เค•เฅƒเคชเคฏเคพ เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚เคฎเคพ เคฎเคคเคฆเคพเคจ เค—เคฐเฅเคจ เคฒเค— เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚เคฎเคพ เคฎเคคเคฆเคพเคจ เค—เคฐเฅเคจ เคฒเค— เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เค…เคจเฅเคตเคพเคฆเฅ‹เค‚ เคชเคฐ เคฎเคคเคฆเคพเคจ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฒเฅ‰เค— เค‡เคจ เค•เคฐเฅ‡เค‚', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€แ€ฝแ€„แ€บ แ€™แ€ฒแ€•แ€ฑแ€ธแ€›แ€”แ€บ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธฅเธ‡เธ„เธฐเนเธ™เธ™เธเธฒเธฃเนเธ›เธฅ', + mandarin: '่ฏท็™ปๅฝ•ไปฅๅฏน็ฟป่ฏ‘ๆŠ•็ฅจ' }, translationNotFound: { english: 'Translation not found', @@ -5293,7 +7902,11 @@ export const localizations = { brazilian_portuguese: 'Traduรงรฃo nรฃo encontrada', tok_pisin: 'Translation i no stap', indonesian: 'Terjemahan tidak ditemukan', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคซเฅ‡เคฒเคพ เคชเคฐเฅ‡เคจ', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคจเคนเฅ€เค‚ เคฎเคฟเคฒเคพ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ แ€™แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธžเธšเธเธฒเธฃเนเธ›เธฅ', + mandarin: 'ๆœชๆ‰พๅˆฐ็ฟป่ฏ‘' }, noTranslationsYet: { english: 'No translations yet. Be the first to translate!', @@ -5301,7 +7914,11 @@ export const localizations = { brazilian_portuguese: 'Nenhuma traduรงรฃo ainda. Seja o primeiro a traduzir!', tok_pisin: 'I no gat translation yet. Yu ken namba wan long translate!', indonesian: 'Belum ada terjemahan. Jadilah yang pertama menerjemahkan!', - nepali: 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เค…เคจเฅเคตเคพเคฆ เค›เฅˆเคจเฅค เคชเคนเคฟเคฒเฅ‹ เค…เคจเฅเคตเคพเคฆเค• เคฌเคจเฅเคจเฅเคนเฅ‹เคธเฅ!' + nepali: 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เค…เคจเฅเคตเคพเคฆ เค›เฅˆเคจเฅค เคชเคนเคฟเคฒเฅ‹ เค…เคจเฅเคตเคพเคฆเค• เคฌเคจเฅเคจเฅเคนเฅ‹เคธเฅ!', + hindi: 'เค…เคญเฅ€ เคคเค• เค•เฅ‹เคˆ เค…เคจเฅเคตเคพเคฆ เคจเคนเฅ€เค‚เฅค เคชเคนเคฒเฅ‡ เค…เคจเฅเคตเคพเคฆเค• เคฌเคจเฅ‡เค‚!', + burmese: 'แ€กแ€แ€ฏแ€‘แ€ญ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ธแ€•แ€ซแ‹ แ€•แ€‘แ€™แ€†แ€ฏแ€ถแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€žแ€ฐ แ€–แ€ผแ€…แ€บแ€•แ€ซ!', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเธกเธตเธเธฒเธฃเนเธ›เธฅ เน€เธ›เน‡เธ™เธ„เธ™เนเธฃเธเธ—เธตเนˆเนเธ›เธฅ!', + mandarin: '่ฟ˜ๆฒกๆœ‰็ฟป่ฏ‘ใ€‚ๆˆไธบ็ฌฌไธ€ไธช็ฟป่ฏ‘่€…๏ผ' }, viewProjectLimitedAccess: { english: 'View Project (Limited Access)', @@ -5309,7 +7926,11 @@ export const localizations = { brazilian_portuguese: 'Ver projeto (Acesso limitado)', tok_pisin: 'Lukim Project (Limited Access)', indonesian: 'Lihat Proyek (Akses Terbatas)', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ (เคธเฅ€เคฎเคฟเคค เคชเคนเฅเคเคš)' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ (เคธเฅ€เคฎเคฟเคค เคชเคนเฅเคเคš)', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฆเฅ‡เค–เฅ‡เค‚ (เคธเฅ€เคฎเคฟเคค เคชเคนเฅเค‚เคš)', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€•แ€ซ (แ€€แ€”แ€ทแ€บแ€žแ€แ€บแ€แ€ปแ€€แ€บแ€–แ€ผแ€„แ€ทแ€บ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ)', + thai: 'เธ”เธนเน‚เธ„เธฃเธ‡เธเธฒเธฃ (เธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เธˆเธณเธเธฑเธ”)', + mandarin: 'ๆŸฅ็œ‹้กน็›ฎ๏ผˆๅ—้™่ฎฟ้—ฎ๏ผ‰' }, languages: { english: 'Languages', @@ -5317,7 +7938,11 @@ export const localizations = { brazilian_portuguese: 'Idiomas', tok_pisin: 'Ol Tokples', indonesian: 'Bahasa', - nepali: 'เคญเคพเคทเคพเคนเคฐเฅ‚' + nepali: 'เคญเคพเคทเคพเคนเคฐเฅ‚', + hindi: 'เคญเคพเคทเคพเคเค‚', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ เธฒเธฉเธฒ', + mandarin: '่ฏญ่จ€' }, downloadRequired: { english: 'Download required', @@ -5325,7 +7950,11 @@ export const localizations = { brazilian_portuguese: 'Download requerido', tok_pisin: 'Yu mas daunim', indonesian: 'Unduhan diperlukan', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เค†เคตเคถเฅเคฏเค•', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”', + mandarin: '้œ€่ฆไธ‹่ฝฝ' }, myProjects: { english: 'My Projects', @@ -5333,7 +7962,11 @@ export const localizations = { brazilian_portuguese: 'Meus projetos', tok_pisin: 'Ol Project Bilong Mi', indonesian: 'Proyek Saya', - nepali: 'เคฎเฅ‡เคฐเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚' + nepali: 'เคฎเฅ‡เคฐเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚', + hindi: 'เคฎเฅ‡เคฐเฅ€ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚', + burmese: 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ‚เธญเธ‡เธ‰เธฑเธ™', + mandarin: 'ๆˆ‘็š„้กน็›ฎ' }, statusTranslationActive: { english: @@ -5346,7 +7979,11 @@ export const localizations = { 'Dispela translation i active nau. Active translation i save tu.', indonesian: 'Terjemahan ini saat ini aktif. Terjemahan aktif juga terlihat.', - nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคนเคพเคฒ เคธเค•เฅเคฐเคฟเคฏ เค›เฅค เคธเค•เฅเคฐเคฟเคฏ เค…เคจเฅเคตเคพเคฆ เคชเคจเคฟ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เค›เฅค' + nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคนเคพเคฒ เคธเค•เฅเคฐเคฟเคฏ เค›เฅค เคธเค•เฅเคฐเคฟเคฏ เค…เคจเฅเคตเคพเคฆ เคชเคจเคฟ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เค›เฅค', + hindi: 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เคตเคฐเฅเคคเคฎเคพเคจ เคฎเฅ‡เค‚ เคธเค•เฅเคฐเคฟเคฏ เคนเฅˆเฅค เคธเค•เฅเคฐเคฟเคฏ เค…เคจเฅเคตเคพเคฆ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคญเฅ€ เคนเฅˆเฅค', + burmese: 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บ แ€œแ€€แ€บแ€›แ€พแ€ญแ€แ€ฝแ€„แ€บ แ€กแ€žแ€€แ€บแ€แ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บแ‹ แ€กแ€žแ€€แ€บแ€แ€„แ€บแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บแ€œแ€Šแ€บแ€ธ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเนเธ›เธฅเธ™เธตเน‰เธเธณเธฅเธฑเธ‡เนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ เธเธฒเธฃเนเธ›เธฅเธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆเธˆเธฐเธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เธ”เน‰เธงเธข', + mandarin: 'ๆญค็ฟป่ฏ‘ๅฝ“ๅ‰ๅค„ไบŽๆดปๅŠจ็Šถๆ€ใ€‚ๆดปๅŠจ็ฟป่ฏ‘ไนŸๅฏ่งใ€‚' }, statusTranslationInactive: { english: @@ -5360,7 +7997,11 @@ export const localizations = { indonesian: 'Terjemahan ini tidak aktif. Tidak ada tindakan yang dapat dilakukan kecuali diaktifkan kembali.', nepali: - 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค›เฅค เคชเฅเคจ: เคธเค•เฅเคฐเคฟเคฏ เคจเค—เคฐเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เค•เคพเคฐเฅเคฏ เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค›เฅค เคชเฅเคจ: เคธเค•เฅเคฐเคฟเคฏ เคจเค—เคฐเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เค•เคพเคฐเฅเคฏ เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคนเฅˆเฅค เคชเฅเคจเคƒ เคธเค•เฅเคฐเคฟเคฏ เค•เคฟเค เคฌเคฟเคจเคพ เค•เฅ‹เคˆ เค•เคพเคฐเฅเคฐเคตเคพเคˆ เคจเคนเฅ€เค‚ เค•เฅ€ เคœเคพ เคธเค•เคคเฅ€เฅค', + burmese: 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บ แ€กแ€žแ€€แ€บแ€™แ€แ€„แ€บแ€•แ€ซแ‹ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€กแ€žแ€€แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€™แ€žแ€Šแ€บแ€กแ€‘แ€ญ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€™แ€ปแ€พ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', + thai: 'เธเธฒเธฃเนเธ›เธฅเธ™เธตเน‰เน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™ เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเนƒเธ”เน† เน„เธ”เน‰เน€เธงเน‰เธ™เนเธ•เนˆเธˆเธฐเน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๆญค็ฟป่ฏ‘ๅค„ไบŽ้žๆดปๅŠจ็Šถๆ€ใ€‚้™ค้ž้‡ๆ–ฐๆฟ€ๆดป๏ผŒๅฆๅˆ™ๆ— ๆณ•ๆ‰ง่กŒไปปไฝ•ๆ“ไฝœใ€‚' }, statusTranslationVisible: { english: 'This translation is visible to other users.', @@ -5368,7 +8009,11 @@ export const localizations = { brazilian_portuguese: 'Esta traduรงรฃo estรก visรญvel para outros usuรกrios.', tok_pisin: 'Dispela translation i save long ol narapela user.', indonesian: 'Terjemahan ini terlihat oleh pengguna lain.', - nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เค…เคจเฅเคฏ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคฆเฅ‡เค–เคฟเคจเฅเค›เฅค' + nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เค…เคจเฅเคฏ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคฆเฅ‡เค–เคฟเคจเฅเค›เฅค', + hindi: 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เค…เคจเฅเคฏ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เค•เฅ‹ เคฆเคฟเค–เคพเคˆ เคฆเฅ‡เคคเคพ เคนเฅˆเฅค', + burmese: 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€แ€ผแ€ฌแ€ธแ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเนเธ›เธฅเธ™เธตเน‰เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เน‚เธ”เธขเธœเธนเน‰เนƒเธŠเน‰เธญเธทเนˆเธ™', + mandarin: 'ๆญค็ฟป่ฏ‘ๅฏนๅ…ถไป–็”จๆˆทๅฏ่งใ€‚' }, statusTranslationInvisible: { english: @@ -5382,7 +8027,11 @@ export const localizations = { indonesian: 'Terjemahan ini disembunyikan dan tidak akan ditampilkan kepada pengguna lain. Terjemahan yang tidak terlihat juga tidak aktif.', nepali: - 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค› เคฐ เค…เคจเฅเคฏ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคฆเฅ‡เค–เคพเค‡เคจเฅ‡ เค›เฅˆเคจเฅค เค…เคฆเฅƒเคถเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคชเคจเคฟ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค›เฅค' + 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค› เคฐ เค…เคจเฅเคฏ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคฆเฅ‡เค–เคพเค‡เคจเฅ‡ เค›เฅˆเคจเฅค เค…เคฆเฅƒเคถเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคชเคจเคฟ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค›เฅค', + hindi: 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เค›เคฟเคชเคพ เคนเฅเค† เคนเฅˆ เค”เคฐ เค…เคจเฅเคฏ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เค•เฅ‹ เคจเคนเฅ€เค‚ เคฆเคฟเค–เคพเคฏเคพ เคœเคพเคเค—เคพเฅค เค…เคฆเฅƒเคถเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคญเฅ€ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคนเฅˆเฅค', + burmese: 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€•แ€ผแ€ฎแ€ธ แ€กแ€แ€ผแ€ฌแ€ธแ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€™แ€•แ€ผแ€žแ€•แ€ซแ‹ แ€™แ€™แ€ผแ€„แ€บแ€›แ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บแ€œแ€Šแ€บแ€ธ แ€กแ€žแ€€แ€บแ€™แ€แ€„แ€บแ€•แ€ซแ‹', + thai: 'เธเธฒเธฃเนเธ›เธฅเธ™เธตเน‰เธ–เธนเธเธ‹เนˆเธญเธ™เนเธฅเธฐเธˆเธฐเน„เธกเนˆเนเธชเธ”เธ‡เนƒเธซเน‰เธœเธนเน‰เนƒเธŠเน‰เธญเธทเนˆเธ™เน€เธซเน‡เธ™ เธเธฒเธฃเนเธ›เธฅเธ—เธตเนˆเธกเธญเธ‡เน„เธกเนˆเน€เธซเน‡เธ™เธˆเธฐเน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธ”เน‰เธงเธข', + mandarin: 'ๆญค็ฟป่ฏ‘ๅทฒ้š่—๏ผŒไธไผšๅ‘ๅ…ถไป–็”จๆˆทๆ˜พ็คบใ€‚ไธๅฏ่ง็ฟป่ฏ‘ไนŸๅค„ไบŽ้žๆดปๅŠจ็Šถๆ€ใ€‚' }, statusTranslationMadeVisible: { english: 'The translation has been made visible', @@ -5390,7 +8039,11 @@ export const localizations = { brazilian_portuguese: 'A traduรงรฃo foi tornada visรญvel', tok_pisin: 'Translation i mekim save nau', indonesian: 'Terjemahan telah dibuat terlihat', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธเธฒเธฃเนเธ›เธฅเธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰', + mandarin: '็ฟป่ฏ‘ๅทฒ่ฎพไธบๅฏ่ง' }, statusTranslationMadeInvisible: { english: 'The translation has been made invisible', @@ -5398,7 +8051,11 @@ export const localizations = { brazilian_portuguese: 'A traduรงรฃo foi tornada invisรญvel', tok_pisin: 'Translation i mekim hait nau', indonesian: 'Terjemahan telah dibuat tidak terlihat', - nepali: 'เค…เคจเฅเคตเคพเคฆ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เค…เคจเฅเคตเคพเคฆ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค…เคจเฅเคตเคพเคฆ เค…เคฆเฅƒเคถเฅเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€™แ€™แ€ผแ€„แ€บแ€›แ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธเธฒเธฃเนเธ›เธฅเธ–เธนเธเธ—เธณเนƒเธซเน‰เธกเธญเธ‡เน„เธกเนˆเน€เธซเน‡เธ™', + mandarin: '็ฟป่ฏ‘ๅทฒ่ฎพไธบไธๅฏ่ง' }, statusTranslationMadeActive: { english: 'The translation has been made active', @@ -5406,7 +8063,11 @@ export const localizations = { brazilian_portuguese: 'A traduรงรฃo foi ativada', tok_pisin: 'Translation i mekim active nau', indonesian: 'Terjemahan telah diaktifkan', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคธเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€žแ€€แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธเธฒเธฃเนเธ›เธฅเธ–เธนเธเธ—เธณเนƒเธซเน‰เนƒเธŠเน‰เธ‡เธฒเธ™', + mandarin: '็ฟป่ฏ‘ๅทฒ่ฎพไธบๆดปๅŠจ' }, statusTranslationMadeInactive: { english: 'The translation has been made inactive', @@ -5414,7 +8075,11 @@ export const localizations = { brazilian_portuguese: 'A traduรงรฃo foi desativada', tok_pisin: 'Translation i mekim stop nau', indonesian: 'Terjemahan telah dinonaktifkan', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพเค‡เคเค•เฅ‹ เค›', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคฌเคจเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€กแ€žแ€€แ€บแ€™แ€แ€„แ€บแ€กแ€ฑแ€ฌแ€„แ€บ แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธเธฒเธฃเนเธ›เธฅเธ–เธนเธเธ—เธณเนƒเธซเน‰เน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™', + mandarin: '็ฟป่ฏ‘ๅทฒ่ฎพไธบ้žๆดปๅŠจ' }, statusTranslationUpdateFailed: { english: 'Failed to update translation settings', @@ -5422,7 +8087,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao atualizar as configuraรงรตes da traduรงรฃo', tok_pisin: 'I no inap update translation settings', indonesian: 'Gagal mengupdate pengaturan terjemahan', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคธเฅ‡เคŸเคฟเค‚เค— เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€™แ€ฝแ€™แ€บแ€ธแ€™แ€ถแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธญเธฑเธ›เน€เธ”เธ•เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธเธฒเธฃเนเธ›เธฅเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆ›ดๆ–ฐ็ฟป่ฏ‘่ฎพ็ฝฎๅคฑ่ดฅ' }, translationSettingsLoadError: { english: 'Error loading translation settings.', @@ -5430,7 +8099,11 @@ export const localizations = { brazilian_portuguese: 'Erro ao carregar as configuraรงรตes de traduรงรฃo.', tok_pisin: 'I no inap load translation settings.', indonesian: 'Gagal memuat pengaturan terjemahan.', - nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเคพ เคคเฅเคฐเฅเคŸเคฟเฅค' + nepali: 'เค…เคจเฅเคตเคพเคฆ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคฆเคพ เคคเฅเคฐเฅเคŸเคฟเฅค', + hindi: 'เค…เคจเฅเคตเคพเคฆ เคธเฅ‡เคŸเคฟเค‚เค— เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคคเฅเคฐเฅเคŸเคฟเฅค', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€ฌแ€แ€ฝแ€„แ€บ แ€กแ€™แ€พแ€ฌแ€ธแ€แ€€แ€บแ€แ€ฒแ€ทแ€žแ€Šแ€บแ‹', + thai: 'เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเน‚เธซเธฅเธ”เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธเธฒเธฃเนเธ›เธฅ', + mandarin: 'ๅŠ ่ฝฝ็ฟป่ฏ‘่ฎพ็ฝฎๆ—ถๅ‡บ้”™ใ€‚' }, contentText: { english: 'Content Text', @@ -5438,7 +8111,11 @@ export const localizations = { brazilian_portuguese: 'Texto do Conteรบdo', tok_pisin: 'Content Text', indonesian: 'Teks Konten', - nepali: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเคพเค ' + nepali: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเคพเค ', + hindi: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเคพเค ', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌ แ€…แ€ฌแ€žแ€ฌแ€ธ', + thai: 'เธ‚เน‰เธญเธ„เธงเธฒเธกเน€เธ™เธทเน‰เธญเธซเธฒ', + mandarin: 'ๅ†…ๅฎนๆ–‡ๆœฌ' }, enterContentText: { english: 'Enter content text...', @@ -5446,7 +8123,11 @@ export const localizations = { brazilian_portuguese: 'Digite o texto do conteรบdo...', tok_pisin: 'Putim content text...', indonesian: 'Masukkan teks konten...', - nepali: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเคพเค  เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ...' + nepali: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเคพเค  เคชเฅเคฐเคตเคฟเคทเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ...', + hindi: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเคพเค  เคฆเคฐเฅเคœ เค•เคฐเฅ‡เค‚...', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌ แ€…แ€ฌแ€žแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€‘แ€Šแ€ทแ€บแ€žแ€ฝแ€„แ€บแ€ธแ€•แ€ซ...', + thai: 'เธ›เน‰เธญเธ™เธ‚เน‰เธญเธ„เธงเธฒเธกเน€เธ™เธทเน‰เธญเธซเธฒ...', + mandarin: '่พ“ๅ…ฅๅ†…ๅฎนๆ–‡ๆœฌ...' }, saving: { english: 'Saving...', @@ -5454,7 +8135,11 @@ export const localizations = { brazilian_portuguese: 'Salvando...', tok_pisin: 'Seivim...', indonesian: 'Menyimpan...', - nepali: 'เคธเฅเคฐเค•เฅเคทเคฟเคค เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคธเฅเคฐเค•เฅเคทเคฟเคค เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคธเคนเฅ‡เคœ เคฐเคนเคพ เคนเฅˆ...', + burmese: 'แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธšเธฑเธ™เธ—เธถเธ...', + mandarin: 'ไฟๅญ˜ไธญ...' }, localAssetEditHint: { english: 'This asset is local only. Text can be edited until published.', @@ -5466,7 +8151,11 @@ export const localizations = { 'Dispela asset i local tasol. Yu ken senisim text inap yu publishim.', indonesian: 'Aset ini hanya lokal. Teks dapat diedit hingga dipublikasikan.', - nepali: 'เคฏเฅ‹ เคเคธเฅ‡เคŸ เคธเฅเคฅเคพเคจเฅ€เคฏ เคฎเคพเคคเฅเคฐ เค›เฅค เคชเฅเคฐเค•เคพเคถเคฟเคค เคจเคญเคเคธเคฎเฅเคฎ เคชเคพเค  เคธเคฎเฅเคชเคพเคฆเคจ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค' + nepali: 'เคฏเฅ‹ เคเคธเฅ‡เคŸ เคธเฅเคฅเคพเคจเฅ€เคฏ เคฎเคพเคคเฅเคฐ เค›เฅค เคชเฅเคฐเค•เคพเคถเคฟเคค เคจเคญเคเคธเคฎเฅเคฎ เคชเคพเค  เคธเคฎเฅเคชเคพเคฆเคจ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค', + hindi: 'เคฏเคน เคเคธเฅ‡เคŸ เค•เฅ‡เคตเคฒ เคธเฅเคฅเคพเคจเฅ€เคฏ เคนเฅˆเฅค เคชเฅเคฐเค•เคพเคถเคฟเคค เคนเฅ‹เคจเฅ‡ เคคเค• เคชเคพเค  เคธเค‚เคชเคพเคฆเคฟเคค เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพ เคนเฅˆเฅค', + burmese: 'แ€คแ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€’แ€ฑแ€žแ€แ€ถแ€žแ€ฌแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€‘แ€ฏแ€แ€บแ€แ€ฑแ€™แ€แ€ปแ€„แ€บแ€ธแ€…แ€ฌแ€žแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€Šแ€บแ€ธแ€–แ€ผแ€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเธ™เธตเน‰เน€เธ›เน‡เธ™เนเธšเธšเธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™เน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ เธชเธฒเธกเธฒเธฃเธ–เนเธเน‰เน„เธ‚เธ‚เน‰เธญเธ„เธงเธฒเธกเน„เธ”เน‰เธˆเธ™เธเธงเนˆเธฒเธˆเธฐเน€เธœเธขเนเธžเธฃเนˆ', + mandarin: 'ๆญค่ต„ไบงไป…ไธบๆœฌๅœฐใ€‚ๅœจๅ‘ๅธƒไน‹ๅ‰ๅฏไปฅ็ผ–่พ‘ๆ–‡ๆœฌใ€‚' }, requests: { english: 'Requests', @@ -5474,7 +8163,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรตes', tok_pisin: 'Ol askim', indonesian: 'Permintaan', - nepali: 'เค…เคจเฅเคฐเฅ‹เคงเคนเคฐเฅ‚' + nepali: 'เค…เคจเฅเคฐเฅ‹เคงเคนเคฐเฅ‚', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ„เธณเธ‚เธญ', + mandarin: '่ฏทๆฑ‚' }, noPendingRequests: { english: 'No pending membership requests', @@ -5482,7 +8175,11 @@ export const localizations = { brazilian_portuguese: 'Sem solicitaรงรตes de adesรฃo pendentes', tok_pisin: 'I no gat askim i stap', indonesian: 'Tidak ada permintaan keanggotaan tertunda', - nepali: 'เค•เฅเคจเฅˆ เคฌเคพเคเค•เฅ€ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคฌเคพเคเค•เฅ€ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคฒเค‚เคฌเคฟเคค เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เคจเคนเฅ€เค‚', + burmese: 'แ€†แ€ญแ€ฏแ€„แ€บแ€ธแ€„แ€ถแ€ทแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธ—เธตเนˆเธฃเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃ', + mandarin: 'ๆฒกๆœ‰ๅพ…ๅค„็†็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚' }, confirmApprove: { english: 'Approve Request', @@ -5490,7 +8187,11 @@ export const localizations = { brazilian_portuguese: 'Aprovar Solicitaรงรฃo', tok_pisin: 'Orait long askim', indonesian: 'Setujui Permintaan', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + thai: 'เธญเธ™เธธเธกเธฑเธ•เธดเธ„เธณเธ‚เธญ', + mandarin: 'ๆ‰นๅ‡†่ฏทๆฑ‚' }, confirmApproveMessage: { english: 'Add {name} as a member of this project?', @@ -5498,7 +8199,11 @@ export const localizations = { brazilian_portuguese: 'Adicionar {name} como membro deste projeto?', tok_pisin: 'Putim {name} i kamap memba bilong projek?', indonesian: 'Tambahkan {name} sebagai anggota proyek ini?', - nepali: '{name} เคฒเคพเคˆ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเค•เฅ‹ เคธเคฆเคธเฅเคฏเค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคฅเคชเฅเคจเฅ‡?' + nepali: '{name} เคฒเคพเคˆ เคฏเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเค•เฅ‹ เคธเคฆเคธเฅเคฏเค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคฅเคชเฅเคจเฅ‡?', + hindi: '{name} เค•เฅ‹ เค‡เคธ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เค•เคพ เคธเคฆเคธเฅเคฏ เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคœเฅ‹เคกเคผเฅ‡เค‚?', + burmese: '{name} แ€€แ€ญแ€ฏ แ€คแ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€กแ€–แ€ผแ€…แ€บ แ€‘แ€Šแ€ทแ€บแ€™แ€œแ€ฌแ€ธ?', + thai: 'เน€เธžเธดเนˆเธก {name} เน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธ‚เธญเธ‡เน‚เธ„เธฃเธ‡เธเธฒเธฃเธ™เธตเน‰?', + mandarin: 'ๅฐ† {name} ๆทปๅŠ ไธบๆญค้กน็›ฎ็š„ๆˆๅ‘˜๏ผŸ' }, requestApproved: { english: 'Request approved', @@ -5506,7 +8211,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo aprovada', tok_pisin: 'Askim i orait', indonesian: 'Permintaan disetujui', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เคญเคฏเฅ‹' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เคญเคฏเฅ‹', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธญเธ™เธธเธกเธฑเธ•เธดเธ„เธณเธ‚เธญเนเธฅเน‰เธง', + mandarin: '่ฏทๆฑ‚ๅทฒๆ‰นๅ‡†' }, confirmDeny: { english: 'Deny Request', @@ -5514,7 +8223,11 @@ export const localizations = { brazilian_portuguese: 'Negar Solicitaรงรฃo', tok_pisin: 'Tambu askim', indonesian: 'Tolak Permintaan', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเฅ‡เค‚', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€•แ€šแ€บแ€•แ€ซ', + thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเธ‚เธญ', + mandarin: 'ๆ‹’็ป่ฏทๆฑ‚' }, confirmDenyMessage: { english: 'Deny membership request from {name}?', @@ -5522,7 +8235,11 @@ export const localizations = { brazilian_portuguese: 'Negar solicitaรงรฃo de adesรฃo de {name}?', tok_pisin: 'Tambu askim bilong {name}?', indonesian: 'Tolak permintaan keanggotaan dari {name}?', - nepali: '{name} เคฌเคพเคŸ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅ‡?' + nepali: '{name} เคฌเคพเคŸ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจเฅ‡?', + hindi: '{name} เคธเฅ‡ เคธเคฆเคธเฅเคฏเคคเคพ เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเฅ‡เค‚?', + burmese: '{name} แ€‘แ€ถแ€™แ€พ แ€กแ€–แ€ฝแ€ฒแ€ทแ€แ€„แ€บแ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€•แ€šแ€บแ€™แ€œแ€ฌแ€ธ?', + thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเธ‚เธญเน€เธ›เน‡เธ™เธชเธกเธฒเธŠเธดเธเธˆเธฒเธ {name}?', + mandarin: 'ๆ‹’็ป {name} ็š„ๆˆๅ‘˜่ต„ๆ ผ่ฏทๆฑ‚๏ผŸ' }, requestDenied: { english: 'Request denied', @@ -5530,7 +8247,11 @@ export const localizations = { brazilian_portuguese: 'Solicitaรงรฃo negada', tok_pisin: 'Askim i tambu', indonesian: 'Permintaan ditolak', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เฅƒเคค เคญเคฏเฅ‹' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เฅƒเคค เคญเคฏเฅ‹', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เฅƒเคค เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€•แ€šแ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเธ‚เธญเนเธฅเน‰เธง', + mandarin: '่ฏทๆฑ‚ๅทฒๆ‹’็ป' }, failedToApproveRequest: { english: 'Failed to approve request', @@ -5538,7 +8259,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao aprovar solicitaรงรฃo', tok_pisin: 'Askim i no inap orait', indonesian: 'Gagal menyetujui permintaan', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เคธเฅเคตเฅ€เค•เฅƒเคค เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธญเธ™เธธเธกเธฑเธ•เธดเธ„เธณเธ‚เธญเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆ‰นๅ‡†่ฏทๆฑ‚ๅคฑ่ดฅ' }, failedToDenyRequest: { english: 'Failed to deny request', @@ -5546,7 +8271,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao negar solicitaรงรฃo', tok_pisin: 'Askim i no inap tambu', indonesian: 'Gagal menolak permintaan', - nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เค…เคจเฅเคฐเฅ‹เคง เค…เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€„แ€ผแ€„แ€บแ€ธแ€•แ€šแ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเธ‚เธญเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๆ‹’็ป่ฏทๆฑ‚ๅคฑ่ดฅ' }, downloadQuestToView: { english: 'This quest must be downloaded before you can view it.', @@ -5554,7 +8283,11 @@ export const localizations = { brazilian_portuguese: 'Esta quest deve ser baixada antes de visualizรก-la.', tok_pisin: 'Yu mas daunim dispela quest pastaim long lukim.', indonesian: 'Quest ini harus diunduh sebelum Anda dapat melihatnya.', - nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคนเฅ‡เคฐเฅเคจเฅ เค…เค˜เคฟ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคชเคฐเฅเค›เฅค' + nepali: 'เคฏเฅ‹ เค•เฅเคตเฅ‡เคธเฅเคŸ เคนเฅ‡เคฐเฅเคจเฅ เค…เค˜เคฟ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: 'เค‡เคธ เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เฅ‹ เคฆเฅ‡เค–เคจเฅ‡ เคธเฅ‡ เคชเคนเคฒเฅ‡ เค‡เคธเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเคจเคพ เคนเฅ‹เค—เคพเฅค', + burmese: 'แ€คแ€แ€›แ€ฎแ€ธแ€…แ€‰แ€บแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€™แ€ฎ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธ•เน‰เธญเธ‡เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ เธฒเธฃเธเธดเธˆเธ™เธตเน‰เธเนˆเธญเธ™เธˆเธถเธ‡เธˆเธฐเธ”เธนเน„เธ”เน‰', + mandarin: 'ๅœจๆŸฅ็œ‹ๆญคไปปๅŠกไน‹ๅ‰ๅฟ…้กปๅ…ˆไธ‹่ฝฝใ€‚' }, downloadNow: { english: 'Download Now', @@ -5562,7 +8295,11 @@ export const localizations = { brazilian_portuguese: 'Baixar Agora', tok_pisin: 'Daunim nau', indonesian: 'Unduh Sekarang', - nepali: 'เค…เคนเคฟเคฒเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคนเคฟเคฒเฅ‡ เคกเคพเค‰เคจเคฒเฅ‹เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคญเฅ€ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€šแ€แ€ฏ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ•เธญเธ™เธ™เธตเน‰', + mandarin: '็ซ‹ๅณไธ‹่ฝฝ' }, vadTitle: { english: 'Voice Activity', @@ -5570,7 +8307,11 @@ export const localizations = { brazilian_portuguese: 'Atividade de Voz', tok_pisin: 'Wok bilong vois', indonesian: 'Aktivitas Suara', - nepali: 'เค†เคตเคพเคœ เค—เคคเคฟเคตเคฟเคงเคฟ' + nepali: 'เค†เคตเคพเคœ เค—เคคเคฟเคตเคฟเคงเคฟ', + hindi: 'เคงเฅเคตเคจเคฟ เค—เคคเคฟเคตเคฟเคงเคฟ', + burmese: 'แ€กแ€žแ€ถ แ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€™แ€พแ€ฏ', + thai: 'เธเธดเธˆเธเธฃเธฃเธกเน€เธชเธตเธขเธ‡', + mandarin: '่ฏญ้ŸณๆดปๅŠจ' }, vadDescription: { english: 'Records automatically when you speak', @@ -5578,7 +8319,11 @@ export const localizations = { brazilian_portuguese: 'Grava automaticamente quando vocรช fala', tok_pisin: 'Em i save record pastaim taim yu toktok', indonesian: 'Merekam otomatis saat Anda berbicara', - nepali: 'เคคเคชเคพเคˆเค‚ เคฌเฅ‹เคฒเฅเคฆเคพ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเค›' + nepali: 'เคคเคชเคพเคˆเค‚ เคฌเฅ‹เคฒเฅเคฆเคพ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเค›', + hindi: 'เคœเคฌ เค†เคช เคฌเฅ‹เคฒเคคเฅ‡ เคนเฅˆเค‚ เคคเฅ‹ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคคเคพ เคนเฅˆ', + burmese: 'แ€žแ€„แ€บ แ€…แ€€แ€ฌแ€ธแ€•แ€ผแ€ฑแ€ฌแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธšเธฑเธ™เธ—เธถเธเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธ„เธธเธ“เธžเธนเธ”', + mandarin: '่ฏด่ฏๆ—ถ่‡ชๅŠจๅฝ•้Ÿณ' }, vadCurrentLevel: { english: 'Current Level', @@ -5586,7 +8331,11 @@ export const localizations = { brazilian_portuguese: 'Nรญvel Atual', tok_pisin: 'Level nau', indonesian: 'Level Saat Ini', - nepali: 'เคนเคพเคฒเค•เฅ‹ เคธเฅเคคเคฐ' + nepali: 'เคนเคพเคฒเค•เฅ‹ เคธเฅเคคเคฐ', + hindi: 'เคตเคฐเฅเคคเคฎเคพเคจ เคธเฅเคคเคฐ', + burmese: 'แ€œแ€€แ€บแ€›แ€พแ€ญ แ€กแ€†แ€„แ€ทแ€บ', + thai: 'เธฃเธฐเธ”เธฑเธšเธ›เธฑเธˆเธˆเธธเธšเธฑเธ™', + mandarin: 'ๅฝ“ๅ‰็บงๅˆซ' }, vadRecordingNow: { english: 'Recording', @@ -5594,7 +8343,11 @@ export const localizations = { brazilian_portuguese: 'Gravando', tok_pisin: 'I save nau', indonesian: 'Merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคฆเฅˆ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคฆเฅˆ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคก เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅฝ•้Ÿณไธญ' }, vadWaiting: { english: 'Waiting', @@ -5602,7 +8355,11 @@ export const localizations = { brazilian_portuguese: 'Aguardando', tok_pisin: 'Wetim', indonesian: 'Menunggu', - nepali: 'เคชเคฐเฅเค–เคเคฆเฅˆ' + nepali: 'เคชเคฐเฅเค–เคเคฆเฅˆ', + hindi: 'เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เค•เคฐ เคฐเคนเคพ เคนเฅˆ', + burmese: 'แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธณเธฅเธฑเธ‡เธฃเธญ', + mandarin: '็ญ‰ๅพ…ไธญ' }, vadPaused: { english: 'Paused', @@ -5610,7 +8367,11 @@ export const localizations = { brazilian_portuguese: 'Pausado', tok_pisin: 'I stop liklik', indonesian: 'Dijeda', - nepali: 'เคฐเฅ‹เค•เคฟเคเค•เฅ‹' + nepali: 'เคฐเฅ‹เค•เคฟเคเค•เฅ‹', + hindi: 'เคฐเฅเค•เคพ เคนเฅเค†', + burmese: 'แ€›แ€•แ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธซเธขเธธเธ”เธŠเธฑเนˆเธงเธ„เธฃเธฒเธง', + mandarin: 'ๅทฒๆš‚ๅœ' }, vadThreshold: { english: 'Sensitivity', @@ -5618,7 +8379,11 @@ export const localizations = { brazilian_portuguese: 'Sensibilidade', tok_pisin: 'Strong bilong harim', indonesian: 'Sensitivitas', - nepali: 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ' + nepali: 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ', + hindi: 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ', + burmese: 'แ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ', + thai: 'เธ„เธงเธฒเธกเน„เธง', + mandarin: '็ตๆ•ๅบฆ' }, vadSilenceDuration: { english: 'Pause Length', @@ -5626,7 +8391,11 @@ export const localizations = { brazilian_portuguese: 'Duraรงรฃo da Pausa', tok_pisin: 'Taim bilong pas', indonesian: 'Durasi Jeda', - nepali: 'เคฐเฅ‹เค•เคพเค‡เค•เฅ‹ เคฒเคฎเฅเคฌเคพเค‡' + nepali: 'เคฐเฅ‹เค•เคพเค‡เค•เฅ‹ เคฒเคฎเฅเคฌเคพเค‡', + hindi: 'เคตเคฟเคฐเคพเคฎ เค•เฅ€ เค…เคตเคงเคฟ', + burmese: 'แ€›แ€•แ€บแ€”แ€ฌแ€ธแ€แ€ปแ€ญแ€”แ€บ แ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บ', + thai: 'เธ„เธงเธฒเธกเธขเธฒเธงเธเธฒเธฃเธซเธขเธธเธ”', + mandarin: 'ๆš‚ๅœๆ—ถ้•ฟ' }, vadSilenceDescription: { english: 'How much silence is needed to determine segment boundaries.', @@ -5637,7 +8406,11 @@ export const localizations = { tok_pisin: 'Hamas taim i no gat nois bilong katim toktok.', indonesian: 'Berapa lama keheningan yang diperlukan untuk menentukan batas segmen.', - nepali: 'เค–เคฃเฅเคก เคธเฅ€เคฎเคพเคนเคฐเฅ‚ เคจเคฟเคฐเฅเคงเคพเคฐเคฃ เค—เคฐเฅเคจ เค•เคคเคฟ เคฎเฅŒเคจเคคเคพ เค†เคตเคถเฅเคฏเค• เค›เฅค' + nepali: 'เค–เคฃเฅเคก เคธเฅ€เคฎเคพเคนเคฐเฅ‚ เคจเคฟเคฐเฅเคงเคพเคฐเคฃ เค—เคฐเฅเคจ เค•เคคเคฟ เคฎเฅŒเคจเคคเคพ เค†เคตเคถเฅเคฏเค• เค›เฅค', + hindi: 'เค–เค‚เคก เคธเฅ€เคฎเคพเคเค‚ เคจเคฟเคฐเฅเคงเคพเคฐเคฟเคค เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค•เคฟเคคเคจเฅ€ เคšเฅเคชเฅเคชเฅ€ เค†เคตเคถเฅเคฏเค• เคนเฅˆเฅค', + burmese: 'แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€กแ€แ€ผแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธ แ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€˜แ€šแ€บแ€œแ€ฑแ€ฌแ€€แ€บ แ€แ€ญแ€แ€บแ€†แ€ญแ€แ€บแ€™แ€พแ€ฏ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธ•เน‰เธญเธ‡เธกเธตเธ„เธงเธฒเธกเน€เธ‡เธตเธขเธšเน€เธ—เนˆเธฒเนƒเธ”เน€เธžเธทเนˆเธญเธเธณเธซเธ™เธ”เธ‚เธญเธšเน€เธ‚เธ•เธ‚เธญเธ‡เธชเนˆเธงเธ™', + mandarin: '็กฎๅฎš็‰‡ๆฎต่พน็•Œ้œ€่ฆๅคšๅฐ‘้™้Ÿณใ€‚' }, vadMinSegmentLength: { english: 'Minimum Segment Length', @@ -5645,7 +8418,11 @@ export const localizations = { brazilian_portuguese: 'Comprimento Mรญnimo do Segmento', tok_pisin: 'Liklik Taim Inap Bilong Toktok', indonesian: 'Panjang Segmen Minimum', - nepali: 'เคจเฅเคฏเฅ‚เคจเคคเคฎ เค–เคฃเฅเคก เคฒเคฎเฅเคฌเคพเค‡' + nepali: 'เคจเฅเคฏเฅ‚เคจเคคเคฎ เค–เคฃเฅเคก เคฒเคฎเฅเคฌเคพเค‡', + hindi: 'เคจเฅเคฏเฅ‚เคจเคคเคฎ เค–เค‚เคก เคฒเค‚เคฌเคพเคˆ', + burmese: 'แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธ แ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บ', + thai: 'เธ„เธงเธฒเธกเธขเธฒเธงเธชเนˆเธงเธ™เธ‚เธฑเน‰เธ™เธ•เนˆเธณ', + mandarin: 'ๆœ€็Ÿญ็‰‡ๆฎต้•ฟๅบฆ' }, vadMinSegmentLengthDescription: { english: 'Discard segments below this duration (filter brief noises)', @@ -5656,7 +8433,11 @@ export const localizations = { tok_pisin: 'Rausim sotpela rekoding (filta liklik pairap)', indonesian: 'Buang segmen di bawah durasi ini (filter suara singkat)', nepali: - 'เคฏเฅ‹ เค…เคตเคงเคฟเคญเคจเฅเคฆเคพ เค•เคฎ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคคเฅเคฏเคพเค—เฅเคจเฅเคนเฅ‹เคธเฅ (เค›เฅ‹เคŸเฅ‹ เค†เคตเคพเคœเคนเคฐเฅ‚ เคซเคฟเคฒเฅเคŸเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ)' + 'เคฏเฅ‹ เค…เคตเคงเคฟเคญเคจเฅเคฆเคพ เค•เคฎ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคคเฅเคฏเคพเค—เฅเคจเฅเคนเฅ‹เคธเฅ (เค›เฅ‹เคŸเฅ‹ เค†เคตเคพเคœเคนเคฐเฅ‚ เคซเคฟเคฒเฅเคŸเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ)', + hindi: 'เค‡เคธ เค…เคตเคงเคฟ เคธเฅ‡ เค•เคฎ เค–เค‚เคกเฅ‹เค‚ เค•เฅ‹ เคคเฅเคฏเคพเค—เฅ‡เค‚ (เคธเค‚เค•เฅเคทเคฟเคชเฅเคค เค†เคตเคพเคœเคผเฅ‹เค‚ เค•เฅ‹ เคซเคผเคฟเคฒเฅเคŸเคฐ เค•เคฐเฅ‡เค‚)', + burmese: 'แ€คแ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บแ€‘แ€€แ€บ แ€”แ€Šแ€บแ€ธแ€žแ€ฑแ€ฌ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€šแ€บแ€•แ€ซ (แ€แ€ญแ€ฏแ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€žแ€ฑแ€ฌ แ€กแ€žแ€ถแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€‘แ€ฏแ€แ€บแ€•แ€ซ)', + thai: 'เธ—เธดเน‰เธ‡เธชเนˆเธงเธ™เธ—เธตเนˆเธชเธฑเน‰เธ™เธเธงเนˆเธฒเธฃเธฐเธขเธฐเน€เธงเธฅเธฒเธ™เธตเน‰ (เธเธฃเธญเธ‡เน€เธชเธตเธขเธ‡เธชเธฑเน‰เธ™เน†)', + mandarin: 'ไธขๅผƒ็ŸญไบŽๆญคๆ—ถ้•ฟ็š„็‰‡ๆฎต๏ผˆ่ฟ‡ๆปค็Ÿญๆš‚ๅ™ช้Ÿณ๏ผ‰' }, vadNoFilter: { english: 'No filter', @@ -5664,7 +8445,11 @@ export const localizations = { brazilian_portuguese: 'Sem filtro', tok_pisin: 'No filta', indonesian: 'Tanpa filter', - nepali: 'เค•เฅเคจเฅˆ เคซเคฟเคฒเฅเคŸเคฐ เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคซเคฟเคฒเฅเคŸเคฐ เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคซเคผเคฟเคฒเฅเคŸเคฐ เคจเคนเฅ€เค‚', + burmese: 'แ€…แ€…แ€บแ€‘แ€ฏแ€แ€บแ€™แ€พแ€ฏ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธเธฃเธญเธ‡', + mandarin: 'ๆ— ่ฟ‡ๆปค' }, vadLightFilter: { english: 'Light filter', @@ -5672,7 +8457,11 @@ export const localizations = { brazilian_portuguese: 'Filtro leve', tok_pisin: 'Liklik filta', indonesian: 'Filter ringan', - nepali: 'เคนเคฒเฅเค•เคพ เคซเคฟเคฒเฅเคŸเคฐ' + nepali: 'เคนเคฒเฅเค•เคพ เคซเคฟเคฒเฅเคŸเคฐ', + hindi: 'เคนเคฒเฅเค•เคพ เคซเคผเคฟเคฒเฅเคŸเคฐ', + burmese: 'แ€กแ€•แ€ปแ€ฑแ€ฌแ€ทแ€…แ€ฌแ€ธ แ€…แ€…แ€บแ€‘แ€ฏแ€แ€บแ€™แ€พแ€ฏ', + thai: 'เธเธฃเธญเธ‡เน€เธšเธฒ', + mandarin: '่ฝปๅบฆ่ฟ‡ๆปค' }, vadMediumFilter: { english: 'Medium filter', @@ -5680,7 +8469,11 @@ export const localizations = { brazilian_portuguese: 'Filtro mรฉdio', tok_pisin: 'Namel filta', indonesian: 'Filter sedang', - nepali: 'เคฎเคงเฅเคฏเคฎ เคซเคฟเคฒเฅเคŸเคฐ' + nepali: 'เคฎเคงเฅเคฏเคฎ เคซเคฟเคฒเฅเคŸเคฐ', + hindi: 'เคฎเคงเฅเคฏเคฎ เคซเคผเคฟเคฒเฅเคŸเคฐ', + burmese: 'แ€กแ€œแ€šแ€บแ€กแ€œแ€แ€บ แ€…แ€…แ€บแ€‘แ€ฏแ€แ€บแ€™แ€พแ€ฏ', + thai: 'เธเธฃเธญเธ‡เธ›เธฒเธ™เธเธฅเธฒเธ‡', + mandarin: 'ไธญๅบฆ่ฟ‡ๆปค' }, vadStrongFilter: { english: 'Strong filter', @@ -5688,7 +8481,11 @@ export const localizations = { brazilian_portuguese: 'Filtro forte', tok_pisin: 'Strongpela filta', indonesian: 'Filter kuat', - nepali: 'เคฌเคฒเคฟเคฏเฅ‹ เคซเคฟเคฒเฅเคŸเคฐ' + nepali: 'เคฌเคฒเคฟเคฏเฅ‹ เคซเคฟเคฒเฅเคŸเคฐ', + hindi: 'เคฎเคœเคฌเฅ‚เคค เคซเคผเคฟเคฒเฅเคŸเคฐ', + burmese: 'แ€•แ€ผแ€„แ€บแ€ธแ€‘แ€”แ€บแ€žแ€ฑแ€ฌ แ€…แ€…แ€บแ€‘แ€ฏแ€แ€บแ€™แ€พแ€ฏ', + thai: 'เธเธฃเธญเธ‡เนเธฃเธ‡', + mandarin: 'ๅผบๅŠ›่ฟ‡ๆปค' }, vadSensitive: { english: 'Sensitive', @@ -5696,7 +8493,11 @@ export const localizations = { brazilian_portuguese: 'Sensรญvel', tok_pisin: 'I harim gut', indonesian: 'Sensitif', - nepali: 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒ' + nepali: 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒ', + hindi: 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒ', + burmese: 'แ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เน„เธง', + mandarin: 'ๆ•ๆ„Ÿ' }, vadNormal: { english: 'Normal', @@ -5704,7 +8505,11 @@ export const localizations = { brazilian_portuguese: 'Normal', tok_pisin: 'Nambawan', indonesian: 'Normal', - nepali: 'เคธเคพเคฎเคพเคจเฅเคฏ' + nepali: 'เคธเคพเคฎเคพเคจเฅเคฏ', + hindi: 'เคธเคพเคฎเคพเคจเฅเคฏ', + burmese: 'แ€•แ€ฏแ€ถแ€™แ€พแ€”แ€บ', + thai: 'เธ›เธเธ•เธด', + mandarin: 'ๆ™ฎ้€š' }, vadLoud: { english: 'Loud', @@ -5712,7 +8517,11 @@ export const localizations = { brazilian_portuguese: 'Alto', tok_pisin: 'Bikpela nois', indonesian: 'Keras', - nepali: 'เคšเคฐเฅเค•เฅ‹' + nepali: 'เคšเคฐเฅเค•เฅ‹', + hindi: 'เคคเฅ‡เคœเคผ', + burmese: 'แ€€แ€ปแ€šแ€บแ€œแ€ฑแ€ฌแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธ”เธฑเธ‡', + mandarin: 'ๅ“ไบฎ' }, vadVerySensitive: { english: 'Very Sensitive', @@ -5720,7 +8529,11 @@ export const localizations = { brazilian_portuguese: 'Muito Sensรญvel', tok_pisin: 'I harim tumas', indonesian: 'Sangat Sensitif', - nepali: 'เค…เคคเฅเคฏเคจเฅเคค เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒ' + nepali: 'เค…เคคเฅเคฏเคจเฅเคค เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒ', + hindi: 'เคฌเคนเฅเคค เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒ', + burmese: 'แ€กแ€œแ€ฝแ€”แ€บแ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เน„เธงเธกเธฒเธ', + mandarin: '้žๅธธๆ•ๆ„Ÿ' }, vadLoudOnly: { english: 'Loud Only', @@ -5728,7 +8541,11 @@ export const localizations = { brazilian_portuguese: 'Apenas Alto', tok_pisin: 'Bikpela nois tasol', indonesian: 'Keras Saja', - nepali: 'เคšเคฐเฅเค•เฅ‹ เคฎเคพเคคเฅเคฐ' + nepali: 'เคšเคฐเฅเค•เฅ‹ เคฎเคพเคคเฅเคฐ', + hindi: 'เค•เฅ‡เคตเคฒ เคคเฅ‡เคœเคผ', + burmese: 'แ€€แ€ปแ€šแ€บแ€œแ€ฑแ€ฌแ€„แ€บแ€žแ€ฑแ€ฌแ€กแ€žแ€ถแ€žแ€ฌ', + thai: 'เธ”เธฑเธ‡เน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™', + mandarin: 'ไป…ๅ“ไบฎ' }, vadVeryLoud: { english: 'Very Loud', @@ -5736,7 +8553,11 @@ export const localizations = { brazilian_portuguese: 'Muito Alto', tok_pisin: 'Bikpela nois tumas', indonesian: 'Sangat Keras', - nepali: 'เค…เคคเฅเคฏเคจเฅเคค เคšเคฐเฅเค•เฅ‹' + nepali: 'เค…เคคเฅเคฏเคจเฅเคค เคšเคฐเฅเค•เฅ‹', + hindi: 'เคฌเคนเฅเคค เคคเฅ‡เคœเคผ', + burmese: 'แ€กแ€œแ€ฝแ€”แ€บแ€€แ€ปแ€šแ€บแ€œแ€ฑแ€ฌแ€„แ€บแ€žแ€Šแ€บ', + thai: 'เธ”เธฑเธ‡เธกเธฒเธ', + mandarin: '้žๅธธๅ“ไบฎ' }, vadQuickSegments: { english: 'Quick', @@ -5744,7 +8565,11 @@ export const localizations = { brazilian_portuguese: 'Rรกpido', tok_pisin: 'Kwik', indonesian: 'Cepat', - nepali: 'เค›เคฟเคŸเฅ‹' + nepali: 'เค›เคฟเคŸเฅ‹', + hindi: 'เคคเฅ‡เคœเคผ', + burmese: 'แ€™แ€ผแ€”แ€บแ€žแ€Šแ€บ', + thai: 'เน€เธฃเน‡เธง', + mandarin: 'ๅฟซ้€Ÿ' }, vadBalanced: { english: 'Balanced', @@ -5752,7 +8577,11 @@ export const localizations = { brazilian_portuguese: 'Equilibrado', tok_pisin: 'Naispela', indonesian: 'Seimbang', - nepali: 'เคธเคจเฅเคคเฅเคฒเคฟเคค' + nepali: 'เคธเคจเฅเคคเฅเคฒเคฟเคค', + hindi: 'เคธเค‚เคคเฅเคฒเคฟเคค', + burmese: 'แ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บแ€œแ€ปแ€พแ€ฌ', + thai: 'เธชเธกเธ”เธธเธฅ', + mandarin: 'ๅนณ่กก' }, vadCompleteThoughts: { english: 'Complete', @@ -5760,7 +8589,11 @@ export const localizations = { brazilian_portuguese: 'Completo', tok_pisin: 'Olgeta', indonesian: 'Lengkap', - nepali: 'เคชเฅ‚เคฐเฅเคฃ' + nepali: 'เคชเฅ‚เคฐเฅเคฃ', + hindi: 'เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€•แ€ผแ€Šแ€ทแ€บแ€…แ€ฏแ€ถแ€žแ€Šแ€บ', + thai: 'เธชเธกเธšเธนเธฃเธ“เนŒ', + mandarin: 'ๅฎŒๆ•ด' }, vadDisplayMode: { english: 'Display Mode', @@ -5768,7 +8601,11 @@ export const localizations = { brazilian_portuguese: 'Modo de Exibiรงรฃo', tok_pisin: 'Kaim bilong lukim', indonesian: 'Mode Tampilan', - nepali: 'เคชเฅเคฐเคฆเคฐเฅเคถเคจ เคฎเฅ‹เคก' + nepali: 'เคชเฅเคฐเคฆเคฐเฅเคถเคจ เคฎเฅ‹เคก', + hindi: 'เคชเฅเคฐเคฆเคฐเฅเคถเคจ เคฎเฅ‹เคก', + burmese: 'แ€•แ€ผแ€žแ€™แ€พแ€ฏ แ€™แ€ฏแ€’แ€บ', + thai: 'เน‚เธซเธกเธ”เนเธชเธ”เธ‡เธœเธฅ', + mandarin: 'ๆ˜พ็คบๆจกๅผ' }, vadFullScreen: { english: 'Full Screen', @@ -5776,7 +8613,11 @@ export const localizations = { brazilian_portuguese: 'Tela Cheia', tok_pisin: 'Fulap skrin', indonesian: 'Layar Penuh', - nepali: 'เคชเฅ‚เคฐเฅเคฃ เคธเฅเค•เฅเคฐเคฟเคจ' + nepali: 'เคชเฅ‚เคฐเฅเคฃ เคธเฅเค•เฅเคฐเคฟเคจ', + hindi: 'เคชเฅ‚เคฐเฅเคฃ เคธเฅเค•เฅเคฐเฅ€เคจ', + burmese: 'แ€–แ€”แ€บแ€žแ€ฌแ€ธแ€•แ€ผแ€„แ€บ แ€กแ€•แ€ผแ€Šแ€ทแ€บ', + thai: 'เน€เธ•เน‡เธกเธˆเธญ', + mandarin: 'ๅ…จๅฑ' }, vadFooter: { english: 'Footer', @@ -5784,7 +8625,11 @@ export const localizations = { brazilian_portuguese: 'Rodapรฉ', tok_pisin: 'Asdaun', indonesian: 'Footer', - nepali: 'เคซเฅเคŸเคฐ' + nepali: 'เคซเฅเคŸเคฐ', + hindi: 'เคซเฅเคŸเคฐ', + burmese: 'แ€กแ€ฑแ€ฌแ€€แ€บแ€แ€ผแ€ฑ', + thai: 'เธชเนˆเธงเธ™เธ—เน‰เธฒเธข', + mandarin: '้กต่„š' }, vadDisplayDescription: { english: 'Choose how the waveform appears when recording', @@ -5792,7 +8637,11 @@ export const localizations = { brazilian_portuguese: 'Escolha como a forma de onda aparece ao gravar', tok_pisin: 'Makim olsem wanem wevpom i kamap taim yu save record', indonesian: 'Pilih bagaimana bentuk gelombang muncul saat merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เค—เคฐเฅเคฆเคพ เคคเคฐเค‚เค— เค•เคธเคฐเฅ€ เคฆเฅ‡เค–เคพ เคชเคฐเฅเค› เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เค—เคฐเฅเคฆเคพ เคคเคฐเค‚เค— เค•เคธเคฐเฅ€ เคฆเฅ‡เค–เคพ เคชเคฐเฅเค› เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เค•เคฐเคคเฅ‡ เคธเคฎเคฏ เคคเคฐเค‚เค— เค•เฅˆเคธเฅ‡ เคฆเคฟเค–เฅ‡ เคฏเคน เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€”แ€ฑแ€…แ€‰แ€บ แ€œแ€พแ€ญแ€ฏแ€„แ€บแ€ธแ€•แ€ฏแ€ถแ€…แ€ถ แ€™แ€Šแ€บแ€žแ€ญแ€ฏแ€ทแ€•แ€ฑแ€ซแ€บแ€™แ€Šแ€บแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธงเธดเธ˜เธตเนเธชเธ”เธ‡เธ„เธฅเธทเนˆเธ™เน€เธชเธตเธขเธ‡เน€เธกเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธ', + mandarin: '้€‰ๆ‹ฉๅฝ•้Ÿณๆ—ถๆณขๅฝข็š„ๆ˜พ็คบๆ–นๅผ' }, vadStop: { english: 'Stop Recording', @@ -5800,7 +8649,11 @@ export const localizations = { brazilian_portuguese: 'Parar Gravaรงรฃo', tok_pisin: 'Stopim rekod', indonesian: 'Berhenti Merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคฐเฅ‹เค•เฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€›แ€•แ€บแ€•แ€ซ', + thai: 'เธซเธขเธธเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅœๆญขๅฝ•้Ÿณ' }, vadHelpTitle: { english: 'How It Works', @@ -5808,7 +8661,11 @@ export const localizations = { brazilian_portuguese: 'Como Funciona', tok_pisin: 'Olsem wanem em i wok', indonesian: 'Cara Kerja', - nepali: 'เคฏเฅ‹ เค•เคธเคฐเฅ€ เค•เคพเคฎ เค—เคฐเฅเค›' + nepali: 'เคฏเฅ‹ เค•เคธเคฐเฅ€ เค•เคพเคฎ เค—เคฐเฅเค›', + hindi: 'เคฏเคน เค•เฅˆเคธเฅ‡ เค•เคพเคฎ เค•เคฐเคคเคพ เคนเฅˆ', + burmese: 'แ€กแ€œแ€ฏแ€•แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ฏแ€ถ', + thai: 'เธงเธดเธ˜เธตเธเธฒเธฃเธ—เธณเธ‡เธฒเธ™', + mandarin: 'ๅทฅไฝœๅŽŸ็†' }, vadHelpAutomatic: { english: @@ -5822,7 +8679,13 @@ export const localizations = { indonesian: 'Saat suara terdeteksi, segmen akan mulai merekam secara otomatis. Setelah keheningan, segmen akan disimpan. Anda dapat merekam beberapa segmen seperti ini secara berurutan saat perekaman diaktifkan.', nepali: - 'เคœเคฌ เค†เคตเคพเคœ เคชเคคเฅเคคเคพ เคฒเคพเค—เฅเค› เคเค• เค–เคฃเฅเคก เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เคนเฅเคจเฅ‡เค›เฅค เค•เฅ‡เคนเฅ€ เคฎเฅŒเคจเคคเคพ เคชเค›เคฟ เค–เคฃเฅเคก เคธเฅ‡เคญ เคนเฅเคจเฅ‡เค›เฅค เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเค•เฅเคฐเคฟเคฏ เคนเฅเคเคฆเคพ เคคเคชเคพเคˆเค‚ เคฏเคธเคฐเฅ€ เค•เฅเคฐเคฎเคถเคƒ เคงเฅ‡เคฐเฅˆ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคœเคฌ เค†เคตเคพเคœ เคชเคคเฅเคคเคพ เคฒเคพเค—เฅเค› เคเค• เค–เคฃเฅเคก เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เคนเฅเคจเฅ‡เค›เฅค เค•เฅ‡เคนเฅ€ เคฎเฅŒเคจเคคเคพ เคชเค›เคฟ เค–เคฃเฅเคก เคธเฅ‡เคญ เคนเฅเคจเฅ‡เค›เฅค เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเค•เฅเคฐเคฟเคฏ เคนเฅเคเคฆเคพ เคคเคชเคพเคˆเค‚ เคฏเคธเคฐเฅ€ เค•เฅเคฐเคฎเคถเคƒ เคงเฅ‡เคฐเฅˆ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เคœเคฌ เคงเฅเคตเคจเคฟ เค•เคพ เคชเคคเคพ เคšเคฒเคคเคพ เคนเฅˆ เคคเฅ‹ เคเค• เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคถเฅเคฐเฅ‚ เคนเฅ‹เค—เคพเฅค เค•เฅเค› เคšเฅเคชเฅเคชเฅ€ เค•เฅ‡ เคฌเคพเคฆ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เคธเคนเฅ‡เคœเคพ เคœเคพเคเค—เคพเฅค เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคธเค•เฅเคฐเคฟเคฏ เคนเฅ‹เคจเฅ‡ เคชเคฐ เค†เคช เค‡เคธ เคคเคฐเคน เค•เฅเคฐเคฎ เคฎเฅ‡เค‚ เค•เคˆ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€กแ€žแ€ถ แ€แ€ถแ€šแ€ฐแ€™แ€ญแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€แ€…แ€บแ€แ€ฏแ€žแ€Šแ€บ แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€™แ€Šแ€บแ‹ แ€แ€ญแ€แ€บแ€†แ€ญแ€แ€บแ€™แ€พแ€ฏ แ€กแ€”แ€Šแ€บแ€ธแ€„แ€šแ€บแ€•แ€ผแ€ฎแ€ธแ€”แ€ฑแ€ฌแ€€แ€บ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€Šแ€บแ‹ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€–แ€ฝแ€„แ€ทแ€บแ€‘แ€ฌแ€ธแ€…แ€‰แ€บ แ€คแ€€แ€ฒแ€ทแ€žแ€ญแ€ฏแ€ท แ€กแ€…แ€‰แ€บแ€œแ€ญแ€ฏแ€€แ€บ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€…แ€ฝแ€ฌ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เน€เธกเธทเนˆเธญเธ•เธฃเธงเธˆเธžเธšเน€เธชเธตเธขเธ‡ เธชเนˆเธงเธ™เธˆเธฐเน€เธฃเธดเนˆเธกเธšเธฑเธ™เธ—เธถเธเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด เธซเธฅเธฑเธ‡เธˆเธฒเธเธ„เธงเธฒเธกเน€เธ‡เธตเธขเธšเธชเธฑเธเธ„เธฃเธนเนˆ เธชเนˆเธงเธ™เธˆเธฐเธ–เธนเธเธšเธฑเธ™เธ—เธถเธ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธšเธฑเธ™เธ—เธถเธเธซเธฅเธฒเธขเธชเนˆเธงเธ™เนเธšเธšเธ™เธตเน‰เธ•เธฒเธกเธฅเธณเธ”เธฑเธšเธ‚เธ“เธฐเน€เธ›เธดเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๆฃ€ๆต‹ๅˆฐๅฃฐ้Ÿณๆ—ถ๏ผŒ็‰‡ๆฎตๅฐ†่‡ชๅŠจๅผ€ๅง‹ๅฝ•้Ÿณใ€‚้™้Ÿณไธ€ๆฎตๆ—ถ้—ดๅŽ๏ผŒ็‰‡ๆฎตๅฐ†่ขซไฟๅญ˜ใ€‚ๅฝ•้Ÿณๆฟ€ๆดปๆ—ถ๏ผŒๆ‚จๅฏไปฅๆŒ‰้กบๅบ่ฟ™ๆ ทๅฝ•ๅˆถๅคšไธช็‰‡ๆฎตใ€‚' }, vadHelpSensitivity: { english: @@ -5836,7 +8699,13 @@ export const localizations = { indonesian: 'Sensitivitas mengatur ambang batas untuk menentukan kapan klip dimulai dan berakhir. Sensitivitas rendah menangkap suara pelan, tetapi juga suara lain yang mungkin.', nepali: - 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพเคฒเฅ‡ เค•เฅเคฒเคฟเคช เค•เคนเคฟเคฒเฅ‡ เคธเฅเคฐเฅ เคฐ เคธเคฎเคพเคชเฅเคค เคนเฅเคจเฅเค› เคจเคฟเคฐเฅเคงเคพเคฐเคฃ เค—เคฐเฅเคจ เคธเฅ€เคฎเคพ เคธเฅ‡เคŸ เค—เคฐเฅเค›เฅค เค•เคฎ เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพเคฒเฅ‡ เคถเคพเคจเฅเคค เคฌเฅ‹เคฒเฅ€ เคธเคฎเคพเคคเฅเค›, เคคเคฐ เค…เคจเฅเคฏ เคธเคฎเฅเคญเคพเคตเคฟเคค เค†เคตเคพเคœเคนเคฐเฅ‚ เคชเคจเคฟเฅค' + 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพเคฒเฅ‡ เค•เฅเคฒเคฟเคช เค•เคนเคฟเคฒเฅ‡ เคธเฅเคฐเฅ เคฐ เคธเคฎเคพเคชเฅเคค เคนเฅเคจเฅเค› เคจเคฟเคฐเฅเคงเคพเคฐเคฃ เค—เคฐเฅเคจ เคธเฅ€เคฎเคพ เคธเฅ‡เคŸ เค—เคฐเฅเค›เฅค เค•เคฎ เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพเคฒเฅ‡ เคถเคพเคจเฅเคค เคฌเฅ‹เคฒเฅ€ เคธเคฎเคพเคคเฅเค›, เคคเคฐ เค…เคจเฅเคฏ เคธเคฎเฅเคญเคพเคตเคฟเคค เค†เคตเคพเคœเคนเคฐเฅ‚ เคชเคจเคฟเฅค', + hindi: + 'เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ เค•เฅเคฒเคฟเคช เค•เคฌ เคถเฅเคฐเฅ‚ เค”เคฐ เคธเคฎเคพเคชเฅเคค เคนเฅ‹เคคเคพ เคนเฅˆ เคฏเคน เคจเคฟเคฐเฅเคงเคพเคฐเคฟเคค เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเฅ€เคฎเคพ เคธเฅ‡เคŸ เค•เคฐเคคเฅ€ เคนเฅˆเฅค เค•เคฎ เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ เคถเคพเค‚เคค เคญเคพเคทเคฃ เคชเค•เคกเคผเคคเฅ€ เคนเฅˆ, เคฒเฅ‡เค•เคฟเคจ เค…เคจเฅเคฏ เคธเค‚เคญเคพเคตเคฟเคค เค†เคตเคพเคœเคผเฅ‡เค‚ เคญเฅ€เฅค', + burmese: + 'แ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€€แ€œแ€…แ€บแ€€ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ซ แ€…แ€•แ€ผแ€ฎแ€ธ แ€•แ€ผแ€ฎแ€ธแ€†แ€ฏแ€ถแ€ธแ€žแ€Šแ€บแ€€แ€ญแ€ฏ แ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธ แ€กแ€†แ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€žแ€แ€บแ€™แ€พแ€แ€บแ€žแ€Šแ€บแ‹ แ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ แ€”แ€Šแ€บแ€ธแ€œแ€ปแ€พแ€„แ€บ แ€กแ€žแ€ถแ€„แ€šแ€บแ€„แ€šแ€บ แ€…แ€€แ€ฌแ€ธแ€•แ€ผแ€ฑแ€ฌแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€–แ€™แ€บแ€ธแ€šแ€ฐแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€แ€ผแ€ฌแ€ธ แ€กแ€žแ€ถแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏแ€œแ€Šแ€บแ€ธ แ€–แ€™แ€บแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธ„เธงเธฒเธกเน„เธงเธเธณเธซเธ™เธ”เน€เธเธ“เธ‘เนŒเน€เธžเธทเนˆเธญเธเธณเธซเธ™เธ”เธงเนˆเธฒเน€เธกเธทเนˆเธญเน„เธซเธฃเนˆเธ„เธฅเธดเธ›เธˆเธฐเน€เธฃเธดเนˆเธกเนเธฅเธฐเธˆเธš เธ„เธงเธฒเธกเน„เธงเธ•เนˆเธณเธˆเธฐเธˆเธฑเธšเน€เธชเธตเธขเธ‡เธžเธนเธ”เธ—เธตเนˆเน€เธšเธฒ เนเธ•เนˆเธเน‡เธญเธฒเธˆเธˆเธฑเธšเน€เธชเธตเธขเธ‡เธญเธทเนˆเธ™เน† เธ”เน‰เธงเธข', + mandarin: '็ตๆ•ๅบฆ่ฎพ็ฝฎ็”จไบŽ็กฎๅฎš็‰‡ๆฎตไฝ•ๆ—ถๅผ€ๅง‹ๅ’Œ็ป“ๆŸ็š„้˜ˆๅ€ผใ€‚่พƒไฝŽ็š„็ตๆ•ๅบฆๅฏๆ•ๆ‰่พƒๅฎ‰้™็š„่ฏญ้Ÿณ๏ผŒไฝ†ไนŸไผšๆ•ๆ‰ๅ…ถไป–ๆฝœๅœจๅ™ช้Ÿณใ€‚' }, vadHelpPause: { english: @@ -5850,7 +8719,13 @@ export const localizations = { indonesian: 'Durasi jeda yang lebih pendek akan memecah rekaman Anda menjadi lebih banyak segmen pada jeda yang lebih kecil.', nepali: - 'เค›เฅ‹เคŸเฅ‹ เคฐเฅ‹เค•เคพเค‡เค•เฅ‹ เคฒเคฎเฅเคฌเคพเค‡เคฒเฅ‡ เคคเคชเคพเคˆเค‚เค•เฅ‹ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคฒเคพเคˆ เคธเคพเคจเคพ เคฐเฅ‹เค•เคพเค‡เคนเคฐเฅ‚เคฎเคพ เคงเฅ‡เคฐเฅˆ เค–เคฃเฅเคกเคนเคฐเฅ‚เคฎเคพ เคตเคฟเคญเคพเคœเคจ เค—เคฐเฅเคจเฅ‡เค›เฅค' + 'เค›เฅ‹เคŸเฅ‹ เคฐเฅ‹เค•เคพเค‡เค•เฅ‹ เคฒเคฎเฅเคฌเคพเค‡เคฒเฅ‡ เคคเคชเคพเคˆเค‚เค•เฅ‹ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคฒเคพเคˆ เคธเคพเคจเคพ เคฐเฅ‹เค•เคพเค‡เคนเคฐเฅ‚เคฎเคพ เคงเฅ‡เคฐเฅˆ เค–เคฃเฅเคกเคนเคฐเฅ‚เคฎเคพ เคตเคฟเคญเคพเคœเคจ เค—เคฐเฅเคจเฅ‡เค›เฅค', + hindi: + 'เค›เฅ‹เคŸเฅ€ เคตเคฟเคฐเคพเคฎ เคฒเค‚เคฌเคพเคˆ เค†เคชเค•เฅ€ เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เค•เฅ‹ เค›เฅ‹เคŸเฅ‡ เคตเคฟเคฐเคพเคฎเฅ‹เค‚ เคฎเฅ‡เค‚ เค…เคงเคฟเค• เค–เค‚เคกเฅ‹เค‚ เคฎเฅ‡เค‚ เคตเคฟเคญเคพเคœเคฟเคค เค•เคฐเฅ‡เค—เฅ€เฅค', + burmese: + 'แ€›แ€•แ€บแ€”แ€ฌแ€ธแ€แ€ปแ€ญแ€”แ€บ แ€•แ€ญแ€ฏแ€แ€ญแ€ฏแ€œแ€ปแ€พแ€„แ€บ แ€žแ€„แ€บแ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€€แ€ญแ€ฏ แ€›แ€•แ€บแ€”แ€ฌแ€ธแ€แ€ปแ€ญแ€”แ€บ แ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บ แ€•แ€ญแ€ฏแ€แ€ญแ€ฏแ€žแ€ฑแ€ฌแ€”แ€ฑแ€›แ€ฌแ€™แ€ปแ€ฌแ€ธแ€แ€ฝแ€„แ€บ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€…แ€ฝแ€ฌ แ€แ€ฝแ€ฒแ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธ„เธงเธฒเธกเธขเธฒเธงเธเธฒเธฃเธซเธขเธธเธ”เธ—เธตเนˆเธชเธฑเน‰เธ™เธฅเธ‡เธˆเธฐเนเธšเนˆเธ‡เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ‚เธญเธ‡เธ„เธธเธ“เน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธกเธฒเธเธ‚เธถเน‰เธ™เธ—เธตเนˆเธˆเธธเธ”เธซเธขเธธเธ”เธ—เธตเนˆเธชเธฑเน‰เธ™เธฅเธ‡', + mandarin: '่พƒ็Ÿญ็š„ๆš‚ๅœๆ—ถ้•ฟไผšๅœจ่พƒๅฐ็š„ๅœ้กฟๅค„ๅฐ†ๆ‚จ็š„ๅฝ•้Ÿณๅˆ†ๆˆๆ›ดๅคš็‰‡ๆฎตใ€‚' }, vadHelpMinSegment: { english: @@ -5864,7 +8739,13 @@ export const localizations = { indonesian: 'Panjang Segmen Minimum mencegah penyimpanan segmen yang sangat pendek di bawah durasi yang ditetapkan, seperti batuk atau bunyi pintu.', nepali: - 'เคจเฅเคฏเฅ‚เคจเคคเคฎ เค–เคฃเฅเคก เคฒเคฎเฅเคฌเคพเค‡เคฒเฅ‡ เคธเฅ‡เคŸ เค—เคฐเคฟเคเค•เฅ‹ เค…เคตเคงเคฟเคญเคจเฅเคฆเคพ เค•เคฎ เคงเฅ‡เคฐเฅˆ เค›เฅ‹เคŸเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคธเฅ‡เคญ เค—เคฐเฅเคจเคฌเคพเคŸ เคฐเฅ‹เค•เฅเค›, เคœเคธเฅเคคเฅˆ เค–เฅ‹เค•เฅ€ เคตเคพ เคขเฅ‹เค•เคพ เค เฅ‹เค•เฅเคจเฅ‡ เค†เคตเคพเคœเฅค' + 'เคจเฅเคฏเฅ‚เคจเคคเคฎ เค–เคฃเฅเคก เคฒเคฎเฅเคฌเคพเค‡เคฒเฅ‡ เคธเฅ‡เคŸ เค—เคฐเคฟเคเค•เฅ‹ เค…เคตเคงเคฟเคญเคจเฅเคฆเคพ เค•เคฎ เคงเฅ‡เคฐเฅˆ เค›เฅ‹เคŸเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคธเฅ‡เคญ เค—เคฐเฅเคจเคฌเคพเคŸ เคฐเฅ‹เค•เฅเค›, เคœเคธเฅเคคเฅˆ เค–เฅ‹เค•เฅ€ เคตเคพ เคขเฅ‹เค•เคพ เค เฅ‹เค•เฅเคจเฅ‡ เค†เคตเคพเคœเฅค', + hindi: + 'เคจเฅเคฏเฅ‚เคจเคคเคฎ เค–เค‚เคก เคฒเค‚เคฌเคพเคˆ เคธเฅ‡เคŸ เค…เคตเคงเคฟ เคธเฅ‡ เค•เคฎ เคฌเคนเฅเคค เค›เฅ‹เคŸเฅ‡ เค–เค‚เคกเฅ‹เค‚ เค•เฅ‹ เคธเคนเฅ‡เคœเคจเฅ‡ เคธเฅ‡ เคฐเฅ‹เค•เคคเฅ€ เคนเฅˆ, เคœเฅˆเคธเฅ‡ เค–เคพเค‚เคธเฅ€ เคฏเคพ เคฆเคฐเคตเคพเคœเคพ เคฌเค‚เคฆ เค•เคฐเคจเฅ‡ เค•เฅ€ เค†เคตเคพเคœเฅค', + burmese: + 'แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธ แ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บแ€žแ€Šแ€บ แ€žแ€แ€บแ€™แ€พแ€แ€บแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บแ€‘แ€€แ€บ แ€”แ€Šแ€บแ€ธแ€žแ€ฑแ€ฌ แ€กแ€œแ€ฝแ€”แ€บแ€แ€ญแ€ฏแ€žแ€ฑแ€ฌ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€แ€ผแ€„แ€บแ€ธแ€™แ€พ แ€€แ€ฌแ€€แ€ฝแ€šแ€บแ€žแ€Šแ€บแŠ แ€ฅแ€•แ€™แ€ฌ แ€แ€ปแ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€ธแ€แ€ผแ€„แ€บแ€ธ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€แ€ถแ€แ€ซแ€ธแ€•แ€ญแ€แ€บแ€žแ€ถแ‹', + thai: 'เธ„เธงเธฒเธกเธขเธฒเธงเธชเนˆเธงเธ™เธ‚เธฑเน‰เธ™เธ•เนˆเธณเธ›เน‰เธญเธ‡เธเธฑเธ™เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธชเนˆเธงเธ™เธ—เธตเนˆเธชเธฑเน‰เธ™เธกเธฒเธเธเธงเนˆเธฒเธเธณเธซเธ™เธ” เน€เธŠเนˆเธ™ เน€เธชเธตเธขเธ‡เน„เธญเธซเธฃเธทเธญเน€เธชเธตเธขเธ‡เธ›เธฃเธฐเธ•เธนเธ›เธดเธ”', + mandarin: 'ๆœ€็Ÿญ็‰‡ๆฎต้•ฟๅบฆๅฏ้˜ฒๆญขไฟๅญ˜็ŸญไบŽ่ฎพๅฎšๆ—ถ้•ฟ็š„็‰‡ๆฎต๏ผŒไพ‹ๅฆ‚ๅ’ณๅ—ฝๆˆ–ๅ…ณ้—จๅฃฐใ€‚' }, vadRecordingSettings: { english: 'VAD recording settings', @@ -5872,7 +8753,11 @@ export const localizations = { brazilian_portuguese: 'Configuraรงรตes de gravaรงรฃo VAD', tok_pisin: 'VAD rekoding seting', indonesian: 'Pengaturan perekaman VAD', - nepali: 'VAD เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚' + nepali: 'VAD เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅ‡เคŸเคฟเค™เคนเคฐเฅ‚', + hindi: 'VAD เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคธเฅ‡เคŸเคฟเค‚เค—', + burmese: 'VAD แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€†แ€€แ€บแ€แ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ VAD', + mandarin: 'VAD ๅฝ•้Ÿณ่ฎพ็ฝฎ' }, startRecording: { english: 'Record', @@ -5880,7 +8765,11 @@ export const localizations = { brazilian_portuguese: 'Gravar', tok_pisin: 'Rekodim', indonesian: 'Rekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคก' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคก', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€•แ€ซ', + thai: 'เธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅฝ•้Ÿณ' }, stopRecording: { english: 'Stop Recording', @@ -5888,7 +8777,11 @@ export const localizations = { brazilian_portuguese: 'Parar Gravaรงรฃo', tok_pisin: 'Stopim Rekodim', indonesian: 'Hentikan Perekaman', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคฐเฅ‹เค•เฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€›แ€•แ€บแ€•แ€ซ', + thai: 'เธซเธขเธธเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅœๆญขๅฝ•้Ÿณ' }, vadRecordingActive: { english: 'VAD recording active', @@ -5896,7 +8789,11 @@ export const localizations = { brazilian_portuguese: 'Gravaรงรฃo VAD ativa', tok_pisin: 'VAD rekoding i wok', indonesian: 'Perekaman VAD aktif', - nepali: 'VAD เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเค•เฅเคฐเคฟเคฏ' + nepali: 'VAD เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเค•เฅเคฐเคฟเคฏ', + hindi: 'VAD เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคธเค•เฅเคฐเคฟเคฏ', + burmese: 'VAD แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€กแ€žแ€€แ€บแ€แ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ VAD เธเธณเธฅเธฑเธ‡เธ—เธณเธ‡เธฒเธ™', + mandarin: 'VAD ๅฝ•้Ÿณๅทฒๆฟ€ๆดป' }, recordingHelpTitle: { english: 'Two ways to record', @@ -5904,7 +8801,11 @@ export const localizations = { brazilian_portuguese: 'Duas formas de gravar', tok_pisin: 'Tupela rot bilong rekodim', indonesian: 'Dua cara merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅ‡ เคฆเฅเคˆ เคคเคฐเคฟเค•เคพ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅ‡ เคฆเฅเคˆ เคคเคฐเคฟเค•เคพ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฆเฅ‹ เคคเคฐเฅ€เค•เฅ‡', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€”แ€Šแ€บแ€ธแ€œแ€™แ€บแ€ธ แ€”แ€พแ€…แ€บแ€แ€ฏ', + thai: 'เธชเธญเธ‡เธงเธดเธ˜เธตเนƒเธ™เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ไธค็งๅฝ•ๅˆถๆ–นๅผ' }, recordingHelpVAD: { english: @@ -5918,7 +8819,15 @@ export const localizations = { indonesian: 'tombol rekam untuk memulai perekaman Voice Activity Detection (VAD). Ini akan secara otomatis membuat segmen audio baru setiap kali Anda berhenti sejenak saat berbicara. Ketuk lagi untuk mengakhiri sesi VAD.', nepali: - 'เคญเฅเคตเคพเค‡เคธ เคเค•เฅเคŸเคฟเคญเคฟเคŸเฅ€ เคกเคฟเคŸเฅ‡เค•เฅเคถเคจ (VAD) เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจ เคฐเฅ‡เค•เคฐเฅเคก เคฌเคŸเคจ เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคฏเคธเคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฌเฅ‹เคฒเฅเคฆเคพ เคฐเฅ‹เค•เฅเคฆเคพ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคจเคฏเคพเค เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค VAD เคธเคคเฅเคฐ เคธเคฎเคพเคชเฅเคค เค—เคฐเฅเคจ เคซเฅ‡เคฐเคฟ เคŸเฅเคฏเคพเคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคญเฅเคตเคพเค‡เคธ เคเค•เฅเคŸเคฟเคญเคฟเคŸเฅ€ เคกเคฟเคŸเฅ‡เค•เฅเคถเคจ (VAD) เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจ เคฐเฅ‡เค•เคฐเฅเคก เคฌเคŸเคจ เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคฏเคธเคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฌเฅ‹เคฒเฅเคฆเคพ เคฐเฅ‹เค•เฅเคฆเคพ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคชเคฎเคพ เคจเคฏเคพเค เค…เคกเคฟเคฏเฅ‹ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค VAD เคธเคคเฅเคฐ เคธเคฎเคพเคชเฅเคค เค—เคฐเฅเคจ เคซเฅ‡เคฐเคฟ เคŸเฅเคฏเคพเคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคตเฅ‰เค‡เคธ เคเค•เฅเคŸเคฟเคตเคฟเคŸเฅ€ เคกเคฟเคŸเฅ‡เค•เฅเคถเคจ (VAD) เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคถเฅเคฐเฅ‚ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฐเคฟเค•เฅ‰เคฐเฅเคก เคฌเคŸเคจ เคฆเคฌเคพเคเค‚เฅค เคฏเคน เค†เคชเค•เฅ‡ เคฌเฅ‹เคฒเคคเฅ‡ เคธเคฎเคฏ เคฐเฅเค•เคจเฅ‡ เคชเคฐ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคจเค เค‘เคกเคฟเคฏเฅ‹ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เคฌเคจเคพเคเค—เคพเฅค VAD เคธเคคเฅเคฐ เคธเคฎเคพเคชเฅเคค เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคซเคฟเคฐ เคธเฅ‡ เคŸเฅˆเคช เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€กแ€žแ€ถแ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€™แ€พแ€ฏ แ€‘แ€ฑแ€ฌแ€€แ€บแ€œแ€พแ€™แ€บแ€ธแ€แ€ผแ€„แ€บแ€ธ (VAD) แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€œแ€ฏแ€แ€บแ€€แ€ญแ€ฏ แ€”แ€พแ€ญแ€•แ€บแ€•แ€ซแ‹ แ€žแ€„แ€บแ€…แ€€แ€ฌแ€ธแ€•แ€ผแ€ฑแ€ฌแ€”แ€ฑแ€…แ€‰แ€บ แ€›แ€•แ€บแ€”แ€ฌแ€ธแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€คแ€žแ€Šแ€บ แ€กแ€žแ€ถแ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€กแ€…แ€กแ€žแ€…แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ฑแ€ธแ€™แ€Šแ€บแ‹ VAD แ€กแ€…แ€Šแ€บแ€ธแ€กแ€แ€ฑแ€ธแ€€แ€ญแ€ฏ แ€กแ€†แ€ฏแ€ถแ€ธแ€žแ€แ€บแ€›แ€”แ€บ แ€‘แ€•แ€บแ€™แ€ถแ€”แ€พแ€ญแ€•แ€บแ€•แ€ซแ‹', + thai: + 'เธ›เธธเนˆเธกเธšเธฑเธ™เธ—เธถเธเน€เธžเธทเนˆเธญเน€เธฃเธดเนˆเธกเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ”เน‰เธงเธขเธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธเธดเธˆเธเธฃเธฃเธกเน€เธชเธตเธขเธ‡ (VAD) เธ‹เธถเนˆเธ‡เธˆเธฐเธชเธฃเน‰เธฒเธ‡เธชเนˆเธงเธ™เน€เธชเธตเธขเธ‡เนƒเธซเธกเนˆเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธ„เธธเธ“เธซเธขเธธเธ”เธžเธนเธ”เธ‚เธ“เธฐเธžเธนเธ” เธเธ”เธญเธตเธเธ„เธฃเธฑเน‰เธ‡เน€เธžเธทเนˆเธญเธชเธดเน‰เธ™เธชเธธเธ”เน€เธ‹เธชเธŠเธฑเธ™ VAD', + mandarin: + 'ๅฝ•้ŸณๆŒ‰้’ฎไปฅๅผ€ๅง‹่ฏญ้ŸณๆดปๅŠจๆฃ€ๆต‹ (VAD) ๅฝ•้Ÿณใ€‚ๅฝ“ๆ‚จ่ฏด่ฏๆ—ถๆš‚ๅœ๏ผŒ่ฟ™ๅฐ†่‡ชๅŠจๅˆ›ๅปบๆ–ฐ็š„้Ÿณ้ข‘็‰‡ๆฎตใ€‚ๅ†ๆฌก็‚นๅ‡ปไปฅ็ป“ๆŸ VAD ไผš่ฏใ€‚' }, recordingHelpPushToTalk: { english: 'to record a single segment, release to stop recording.', @@ -5928,7 +8837,11 @@ export const localizations = { tok_pisin: 'bilong rekodim wanpela hap, lusim bilong stopim rekoding.', indonesian: 'untuk merekam satu segmen, lepaskan untuk menghentikan perekaman.', - nepali: 'เคเค‰เคŸเคพ เค–เคฃเฅเคก เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ, เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจ เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เคเค‰เคŸเคพ เค–เคฃเฅเคก เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ, เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจ เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เคเค•เคฒ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค, เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคฐเฅ‹เค•เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค›เฅ‹เคกเคผเฅ‡เค‚เฅค', + burmese: 'แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€กแ€…แ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บแŠ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€›แ€•แ€บแ€แ€”แ€ทแ€บแ€›แ€”แ€บ แ€œแ€ฝแ€พแ€แ€บแ€•แ€ซแ‹', + thai: 'เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเธชเนˆเธงเธ™เน€เธ”เธตเธขเธง เธ›เธฅเนˆเธญเธขเน€เธžเธทเนˆเธญเธซเธขเธธเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅฝ•ๅˆถๅ•ไธช็‰‡ๆฎต๏ผŒๆพๅผ€ไปฅๅœๆญขๅฝ•ๅˆถใ€‚' }, tap: { english: 'Tap', @@ -5936,7 +8849,11 @@ export const localizations = { brazilian_portuguese: 'Toque', tok_pisin: 'Paitim', indonesian: 'Ketuk', - nepali: 'เคŸเฅเคฏเคพเคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคŸเฅเคฏเคพเคช เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคŸเฅˆเคช เค•เคฐเฅ‡เค‚', + burmese: 'แ€”แ€พแ€ญแ€•แ€บแ€•แ€ซ', + thai: 'เนเธ•เธฐ', + mandarin: '็‚นๅ‡ป' }, pressAndHold: { english: 'Press and hold', @@ -5944,7 +8861,11 @@ export const localizations = { brazilian_portuguese: 'Pressione e segure', tok_pisin: 'Presim na holim', indonesian: 'Tekan dan tahan', - nepali: 'เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคนเฅ‹เคฒเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅ เคฐ เคนเฅ‹เคฒเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฆเคฌเคพเคเค‚ เค”เคฐ เคชเค•เคกเคผเฅ‡เค‚', + burmese: 'แ€”แ€พแ€ญแ€•แ€บแ€•แ€ผแ€ฎแ€ธ แ€€แ€ญแ€ฏแ€„แ€บแ€‘แ€ฌแ€ธแ€•แ€ซ', + thai: 'เธเธ”เธ„เน‰เธฒเธ‡เน„เธงเน‰', + mandarin: 'ๆŒ‰ไฝ' }, vadAutoCalibrate: { english: 'Auto-Calibrate', @@ -5952,7 +8873,11 @@ export const localizations = { brazilian_portuguese: 'Auto-Calibrar', tok_pisin: 'Olsem wanem yet', indonesian: 'Auto-Kalibrasi', - nepali: 'เคธเฅเคตเคค: เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ' + nepali: 'เคธเฅเคตเคค: เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ', + hindi: 'เคธเฅเคตเคคเคƒ เค•เฅˆเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ', + burmese: 'แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€แ€ปแ€ญแ€”แ€บแ€Šแ€พแ€ญแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธ›เธฃเธฑเธšเน€เธ—เธตเธขเธšเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด', + mandarin: '่‡ชๅŠจๆ กๅ‡†' }, vadCalibrating: { english: 'Calibrating...', @@ -5960,7 +8885,11 @@ export const localizations = { brazilian_portuguese: 'Calibrando...', tok_pisin: 'Wokim nau...', indonesian: 'Mengkalibrasi...', - nepali: 'เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เค•เฅˆเคฒเคฟเคฌเฅเคฐเฅ‡เคŸ เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ...', + burmese: 'แ€แ€ปแ€ญแ€”แ€บแ€Šแ€พแ€ญแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ›เธฃเธฑเธšเน€เธ—เธตเธขเธš...', + mandarin: 'ๆ กๅ‡†ไธญ...' }, vadCalibrationFailed: { english: 'Calibration failed. Please try again in a quieter environment.', @@ -5972,7 +8901,13 @@ export const localizations = { indonesian: 'Kalibrasi gagal. Silakan coba lagi di lingkungan yang lebih tenang.', nepali: - 'เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคธเคจ เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เค•เฅƒเคชเคฏเคพ เคถเคพเคจเฅเคค เคตเคพเคคเคพเคตเคฐเคฃเคฎเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคธเคจ เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เค•เฅƒเคชเคฏเคพ เคถเคพเคจเฅเคค เคตเคพเคคเคพเคตเคฐเคฃเคฎเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค•เฅˆเคฒเคฟเคฌเฅเคฐเฅ‡เคถเคจ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคถเคพเค‚เคค เคตเคพเคคเคพเคตเคฐเคฃ เคฎเฅ‡เค‚ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€แ€ปแ€ญแ€”แ€บแ€Šแ€พแ€ญแ€แ€ผแ€„แ€บแ€ธ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€•แ€ญแ€ฏแ€แ€ญแ€แ€บแ€†แ€ญแ€แ€บแ€žแ€ฑแ€ฌ แ€•แ€แ€บแ€แ€”แ€บแ€ธแ€€แ€ปแ€„แ€บแ€แ€ฝแ€„แ€บ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เธเธฒเธฃเธ›เธฃเธฑเธšเน€เธ—เธตเธขเธšเธฅเน‰เธกเน€เธซเธฅเธง เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡เนƒเธ™เธชเธ เธฒเธžเนเธงเธ”เธฅเน‰เธญเธกเธ—เธตเนˆเน€เธ‡เธตเธขเธšเธเธงเนˆเธฒ', + mandarin: 'ๆ กๅ‡†ๅคฑ่ดฅใ€‚่ฏทๅœจๆ›ดๅฎ‰้™็š„็Žฏๅขƒไธญ้‡่ฏ•ใ€‚' }, vadCalibrateHint: { english: @@ -5986,7 +8921,13 @@ export const localizations = { indonesian: 'Selama kalibrasi otomatis tetaplah diam atau hanya izinkan suara yang ingin Anda agar berada di bawah ambang sensitivitas.', nepali: - 'เคธเฅเคตเคค: เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคธเคจเค•เฅ‹ เคธเคฎเคฏเคฎเคพ เคฎเฅŒเคจ เคฐเคนเคจเฅเคนเฅ‹เคธเฅ เคตเคพ เค•เฅ‡เคตเคฒ เคคเฅ€ เค†เคตเคพเคœเคนเคฐเฅ‚ เคฎเคพเคคเฅเคฐ เค…เคจเฅเคฎเคคเคฟ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ เคœเฅเคจ เคคเคชเคพเคˆเค‚ เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ เคธเฅ€เคฎเคพเคญเคจเฅเคฆเคพ เคคเคฒ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคธเฅเคตเคค: เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคธเคจเค•เฅ‹ เคธเคฎเคฏเคฎเคพ เคฎเฅŒเคจ เคฐเคนเคจเฅเคนเฅ‹เคธเฅ เคตเคพ เค•เฅ‡เคตเคฒ เคคเฅ€ เค†เคตเคพเคœเคนเคฐเฅ‚ เคฎเคพเคคเฅเคฐ เค…เคจเฅเคฎเคคเคฟ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ เคœเฅเคจ เคคเคชเคพเคˆเค‚ เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ เคธเฅ€เคฎเคพเคญเคจเฅเคฆเคพ เคคเคฒ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เคธเฅเคตเคคเคƒ เค•เฅˆเคฒเคฟเคฌเฅเคฐเฅ‡เคถเคจ เค•เฅ‡ เคฆเฅŒเคฐเคพเคจ เคšเฅเคช เคฐเคนเฅ‡เค‚ เคฏเคพ เค•เฅ‡เคตเคฒ เค‰เคจ เค†เคตเคพเคœเคผเฅ‹เค‚ เค•เฅ€ เค…เคจเฅเคฎเคคเคฟ เคฆเฅ‡เค‚ เคœเคฟเคจเฅเคนเฅ‡เค‚ เค†เคช เคธเค‚เคตเฅ‡เคฆเคจเคถเฅ€เคฒเคคเคพ เคธเฅ€เคฎเคพ เคธเฅ‡ เคจเฅ€เคšเฅ‡ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€แ€ปแ€ญแ€”แ€บแ€Šแ€พแ€ญแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บ แ€แ€ญแ€แ€บแ€†แ€ญแ€แ€บแ€…แ€ฝแ€ฌ แ€”แ€ฑแ€•แ€ซ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธแ€กแ€†แ€„แ€ทแ€บแ€กแ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€บ แ€›แ€พแ€ญแ€…แ€ฑแ€œแ€ญแ€ฏแ€žแ€ฑแ€ฌ แ€กแ€žแ€ถแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏแ€žแ€ฌ แ€แ€ฝแ€„แ€ทแ€บแ€•แ€ผแ€ฏแ€•แ€ซแ‹', + thai: 'เธฃเธฐเธซเธงเนˆเธฒเธ‡เธเธฒเธฃเธ›เธฃเธฑเธšเน€เธ—เธตเธขเธšเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด เธญเธขเธนเนˆเน€เธ‡เธตเธขเธšเน† เธซเธฃเธทเธญเธญเธ™เธธเธเธฒเธ•เน€เธ‰เธžเธฒเธฐเน€เธชเธตเธขเธ‡เธ—เธตเนˆเธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธซเน‰เธญเธขเธนเนˆเธ•เนˆเธณเธเธงเนˆเธฒเน€เธเธ“เธ‘เนŒเธ„เธงเธฒเธกเน„เธง', + mandarin: '่‡ชๅŠจๆ กๅ‡†ๆœŸ้—ด่ฏทไฟๆŒๅฎ‰้™๏ผŒๆˆ–ไป…ๅ…่ฎธๆ‚จๅธŒๆœ›ไฝŽไบŽ็ตๆ•ๅบฆ้˜ˆๅ€ผ็š„ๅฃฐ้Ÿณใ€‚' }, appUpgradeRequired: { english: 'App Upgrade Required', @@ -5994,7 +8935,11 @@ export const localizations = { brazilian_portuguese: 'Atualizaรงรฃo do App Necessรกria', tok_pisin: 'Yu mas upgreidim app', indonesian: 'Pembaruan Aplikasi Diperlukan', - nepali: 'เคเคช เค…เคชเค—เฅเคฐเฅ‡เคก เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคเคช เค…เคชเค—เฅเคฐเฅ‡เคก เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เคเคช เค…เคชเค—เฅเคฐเฅ‡เคก เค†เคตเคถเฅเคฏเค• เคนเฅˆ', + burmese: 'แ€กแ€€แ€บแ€•แ€บแ€€แ€ญแ€ฏ แ€กแ€†แ€„แ€ทแ€บแ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแ€›แ€”แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เธญเธฑเธ›เน€เธเธฃเธ”เนเธญเธ›', + mandarin: '้œ€่ฆๅ‡็บงๅบ”็”จ' }, appUpgradeServerAhead: { english: @@ -6008,7 +8953,14 @@ export const localizations = { indonesian: 'Versi baru aplikasi diperlukan untuk mengakses fitur terbaru. Silakan perbarui untuk melanjutkan.', nepali: - 'เคจเคตเฅ€เคจเคคเคฎ เคธเฅเคตเคฟเคงเคพเคนเคฐเฅ‚ เคชเคนเฅเคเคš เค—เคฐเฅเคจ เคเคชเค•เฅ‹ เคจเคฏเคพเค เคธเค‚เคธเฅเค•เคฐเคฃ เค†เคตเคถเฅเคฏเค• เค›เฅค เค•เฅƒเคชเคฏเคพ เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคจเคตเฅ€เคจเคคเคฎ เคธเฅเคตเคฟเคงเคพเคนเคฐเฅ‚ เคชเคนเฅเคเคš เค—เคฐเฅเคจ เคเคชเค•เฅ‹ เคจเคฏเคพเค เคธเค‚เคธเฅเค•เคฐเคฃ เค†เคตเคถเฅเคฏเค• เค›เฅค เค•เฅƒเคชเคฏเคพ เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจ เค…เคชเคกเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคจเคตเฅ€เคจเคคเคฎ เคธเฅเคตเคฟเคงเคพเค“เค‚ เคคเค• เคชเคนเฅเค‚เคšเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคเคช เค•เคพ เคจเคฏเคพ เคธเค‚เคธเฅเค•เคฐเคฃ เค†เคตเคถเฅเคฏเค• เคนเฅˆเฅค เค•เฅƒเคชเคฏเคพ เคœเคพเคฐเฅ€ เคฐเค–เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค…เคชเคกเฅ‡เคŸ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€”แ€ฑแ€ฌแ€€แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€บ แ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€›แ€”แ€บ แ€กแ€€แ€บแ€•แ€บแ แ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธแ€กแ€žแ€…แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€†แ€€แ€บแ€œแ€€แ€บแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€”แ€บ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซแ‹', + thai: + 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เนƒเธซเธกเนˆเธ‚เธญเธ‡เนเธญเธ›เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธ–เธถเธ‡เธŸเธตเน€เธˆเธญเธฃเนŒเธฅเนˆเธฒเธชเธธเธ” เธเธฃเธธเธ“เธฒเธญเธฑเธ›เน€เธ”เธ•เน€เธžเธทเนˆเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญ', + mandarin: '้œ€่ฆๅบ”็”จ็š„ๆ–ฐ็‰ˆๆœฌๆ‰่ƒฝ่ฎฟ้—ฎๆœ€ๆ–ฐๅŠŸ่ƒฝใ€‚่ฏทๆ›ดๆ–ฐไปฅ็ปง็ปญใ€‚' }, appUpgradeServerBehind: { english: @@ -6022,7 +8974,14 @@ export const localizations = { indonesian: 'Versi aplikasi Anda lebih baru dari server. Silakan hubungi dukungan atau tunggu server diperbarui.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคเคช เคธเค‚เคธเฅเค•เคฐเคฃ เคธเคฐเฅเคญเคฐเคญเคจเฅเคฆเคพ เคจเคฏเคพเค เค›เฅค เค•เฅƒเคชเคฏเคพ เคธเคฎเคฐเฅเคฅเคจเคฒเคพเคˆ เคธเคฎเฅเคชเคฐเฅเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคตเคพ เคธเคฐเฅเคญเคฐ เค…เคชเคกเฅ‡เคŸ เคนเฅเคจเฅ‡ เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคเคช เคธเค‚เคธเฅเค•เคฐเคฃ เคธเคฐเฅเคญเคฐเคญเคจเฅเคฆเคพ เคจเคฏเคพเค เค›เฅค เค•เฅƒเคชเคฏเคพ เคธเคฎเคฐเฅเคฅเคจเคฒเคพเคˆ เคธเคฎเฅเคชเคฐเฅเค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคตเคพ เคธเคฐเฅเคญเคฐ เค…เคชเคกเฅ‡เคŸ เคนเฅเคจเฅ‡ เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เค†เคชเค•เคพ เคเคช เคธเค‚เคธเฅเค•เคฐเคฃ เคธเคฐเฅเคตเคฐ เคธเฅ‡ เคจเคฏเคพ เคนเฅˆเฅค เค•เฅƒเคชเคฏเคพ เคธเคนเคพเคฏเคคเคพ เคธเฅ‡ เคธเค‚เคชเคฐเฅเค• เค•เคฐเฅ‡เค‚ เคฏเคพ เคธเคฐเฅเคตเคฐ เค…เคชเคกเฅ‡เคŸ เคนเฅ‹เคจเฅ‡ เค•เฅ€ เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€บแ€•แ€บแ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธแ€žแ€Šแ€บ แ€†แ€ฌแ€—แ€ฌแ€‘แ€€แ€บ แ€•แ€ญแ€ฏแ€™แ€ญแ€ฏแ€žแ€…แ€บแ€žแ€Šแ€บแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€กแ€€แ€ฐแ€กแ€Šแ€ฎแ€€แ€ญแ€ฏ แ€†แ€€แ€บแ€žแ€ฝแ€šแ€บแ€•แ€ซ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€†แ€ฌแ€—แ€ฌ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€•แ€ซแ‹', + thai: + 'เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เนเธญเธ›เธ‚เธญเธ‡เธ„เธธเธ“เนƒเธซเธกเนˆเธเธงเนˆเธฒเธ‹เธตเธฃเนŒเน€เธงเธญเธฃเนŒ เธเธฃเธธเธ“เธฒเธ•เธดเธ”เธ•เนˆเธญเธเนˆเธฒเธขเธชเธ™เธฑเธšเธชเธ™เธธเธ™เธซเธฃเธทเธญเธฃเธญเนƒเธซเน‰เธ‹เธตเธฃเนŒเน€เธงเธญเธฃเนŒเธญเธฑเธ›เน€เธ”เธ•', + mandarin: 'ๆ‚จ็š„ๅบ”็”จ็‰ˆๆœฌๆฏ”ๆœๅŠกๅ™จๆ–ฐใ€‚่ฏท่”็ณปๆ”ฏๆŒๆˆ–็ญ‰ๅพ…ๆœๅŠกๅ™จๆ›ดๆ–ฐใ€‚' }, upgradeToVersion: { english: 'Please upgrade to version {version}', @@ -6030,7 +8989,11 @@ export const localizations = { brazilian_portuguese: 'Por favor atualize para a versรฃo {version}', tok_pisin: 'Plis upgreidim long version {version}', indonesian: 'Silakan perbarui ke versi {version}', - nepali: 'เค•เฅƒเคชเคฏเคพ เคธเค‚เคธเฅเค•เคฐเคฃ {version} เคฎเคพ เค…เคชเค—เฅเคฐเฅ‡เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅƒเคชเคฏเคพ เคธเค‚เคธเฅเค•เคฐเคฃ {version} เคฎเคพ เค…เคชเค—เฅเคฐเฅ‡เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅƒเคชเคฏเคพ เคธเค‚เคธเฅเค•เคฐเคฃ {version} เคฎเฅ‡เค‚ เค…เคชเค—เฅเคฐเฅ‡เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธ {version} แ€žแ€ญแ€ฏแ€ท แ€กแ€†แ€„แ€ทแ€บแ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแ€•แ€ซ', + thai: 'เธเธฃเธธเธ“เธฒเธญเธฑเธ›เน€เธเธฃเธ”เน€เธ›เน‡เธ™เน€เธงเธญเธฃเนŒเธŠเธฑเธ™ {version}', + mandarin: '่ฏทๅ‡็บงๅˆฐ็‰ˆๆœฌ {version}' }, currentVersion: { english: 'Current Version', @@ -6038,7 +9001,11 @@ export const localizations = { brazilian_portuguese: 'Versรฃo Atual', tok_pisin: 'Version nau', indonesian: 'Versi Saat Ini', - nepali: 'เคนเคพเคฒเค•เฅ‹ เคธเค‚เคธเฅเค•เคฐเคฃ' + nepali: 'เคนเคพเคฒเค•เฅ‹ เคธเค‚เคธเฅเค•เคฐเคฃ', + hindi: 'เคตเคฐเฅเคคเคฎเคพเคจ เคธเค‚เคธเฅเค•เคฐเคฃ', + burmese: 'แ€œแ€€แ€บแ€›แ€พแ€ญ แ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธ', + thai: 'เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™', + mandarin: 'ๅฝ“ๅ‰็‰ˆๆœฌ' }, requiredVersion: { english: 'Required Version', @@ -6046,7 +9013,11 @@ export const localizations = { brazilian_portuguese: 'Versรฃo Necessรกria', tok_pisin: 'Version yu mas gat', indonesian: 'Versi yang Diperlukan', - nepali: 'เค†เคตเคถเฅเคฏเค• เคธเค‚เคธเฅเค•เคฐเคฃ' + nepali: 'เค†เคตเคถเฅเคฏเค• เคธเค‚เคธเฅเค•เคฐเคฃ', + hindi: 'เค†เคตเคถเฅเคฏเค• เคธเค‚เคธเฅเค•เคฐเคฃ', + burmese: 'แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€ฑแ€ฌ แ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธ', + thai: 'เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เธ—เธตเนˆเธ•เน‰เธญเธ‡เธเธฒเธฃ', + mandarin: 'ๆ‰€้œ€็‰ˆๆœฌ' }, upgradeApp: { english: 'Upgrade App', @@ -6054,7 +9025,11 @@ export const localizations = { brazilian_portuguese: 'Atualizar App', tok_pisin: 'Upgreidim App', indonesian: 'Perbarui Aplikasi', - nepali: 'เคเคช เค…เคชเค—เฅเคฐเฅ‡เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคเคช เค…เคชเค—เฅเคฐเฅ‡เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเคช เค…เคชเค—เฅเคฐเฅ‡เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€บแ€•แ€บแ€€แ€ญแ€ฏ แ€กแ€†แ€„แ€ทแ€บแ€™แ€ผแ€พแ€„แ€ทแ€บแ€แ€„แ€บแ€•แ€ซ', + thai: 'เธญเธฑเธ›เน€เธเธฃเธ”เนเธญเธ›', + mandarin: 'ๅ‡็บงๅบ”็”จ' }, checkingSchemaVersion: { english: 'Checking schema compatibility...', @@ -6062,7 +9037,11 @@ export const localizations = { brazilian_portuguese: 'Verificando compatibilidade do esquema...', tok_pisin: 'Checkim schema compatibility...', indonesian: 'Memeriksa kompatibilitas skema...', - nepali: 'เคธเฅเค•เคฟเคฎเคพ เค…เคจเฅเค•เฅ‚เคฒเคคเคพ เคœเคพเคเคš เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคธเฅเค•เคฟเคฎเคพ เค…เคจเฅเค•เฅ‚เคฒเคคเคพ เคœเคพเคเคš เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคธเฅเค•เฅ€เคฎเคพ เค…เคจเฅเค•เฅ‚เคฒเคคเคพ เคœเคพเค‚เคš เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€…แ€ถแ€Šแ€ฝแ€พแ€”แ€บแ€ธ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€†แ€ฑแ€ธแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ•เธฃเธงเธˆเธชเธญเธšเธ„เธงเธฒเธกเน€เธ‚เน‰เธฒเธเธฑเธ™เน„เธ”เน‰เธ‚เธญเธ‡เธชเธ„เธตเธกเธฒ...', + mandarin: 'ๆญฃๅœจๆฃ€ๆŸฅๆžถๆž„ๅ…ผๅฎนๆ€ง...' }, scanningCorruptedAttachments: { english: 'Scanning for corrupted attachments...', @@ -6070,7 +9049,11 @@ export const localizations = { brazilian_portuguese: 'Procurando anexos corrompidos...', tok_pisin: 'Lukluk long ol bagarap fayl...', indonesian: 'Memindai lampiran yang rusak...', - nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเฅเค•เฅเคฏเคพเคจ เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเฅเค•เฅเคฏเคพเคจ เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค•เฅ‹เค‚ เค•เฅ‹ เคธเฅเค•เฅˆเคจ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€€แ€„แ€บแ€”แ€บแ€–แ€แ€บแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธชเนเธเธ™เธซเธฒเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข...', + mandarin: 'ๆญฃๅœจๆ‰ซๆๆŸๅ็š„้™„ไปถ...' }, noCorruptedAttachments: { english: 'No Corrupted Attachments', @@ -6078,7 +9061,11 @@ export const localizations = { brazilian_portuguese: 'Sem Anexos Corrompidos', tok_pisin: 'I no gat bagarap fayl', indonesian: 'Tidak Ada Lampiran Rusak', - nepali: 'เค•เฅเคจเฅˆ เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เค›เฅˆเคจ' + nepali: 'เค•เฅเคจเฅˆ เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เค›เฅˆเคจ', + hindi: 'เค•เฅ‹เคˆ เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคจเคนเฅ€เค‚', + burmese: 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธ แ€™แ€›แ€พแ€ญแ€•แ€ซ', + thai: 'เน„เธกเนˆเธกเธตเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข', + mandarin: 'ๆฒกๆœ‰ๆŸๅ็š„้™„ไปถ' }, attachmentDatabaseHealthy: { english: @@ -6090,7 +9077,11 @@ export const localizations = { tok_pisin: 'Database bilong ol fayl bilong yu i gutpela. Olgeta rekod i orait.', indonesian: 'Database lampiran Anda sehat. Semua catatan lampiran valid.', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคกเคพเคŸเคพเคฌเฅ‡เคธ เคธเฅเคตเคธเฅเคฅ เค›เฅค เคธเคฌเฅˆ เคธเค‚เคฒเค—เฅเคจเค• เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคฎเคพเคจเฅเคฏ เค›เคจเฅเฅค' + nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคกเคพเคŸเคพเคฌเฅ‡เคธ เคธเฅเคตเคธเฅเคฅ เค›เฅค เคธเคฌเฅˆ เคธเค‚เคฒเค—เฅเคจเค• เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคฎเคพเคจเฅเคฏ เค›เคจเฅเฅค', + hindi: 'เค†เคชเค•เคพ เคธเค‚เคฒเค—เฅเคจเค• เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคธเฅเคตเคธเฅเคฅ เคนเฅˆเฅค เคธเคญเฅ€ เคธเค‚เคฒเค—เฅเคจเค• เคฐเคฟเค•เฅ‰เคฐเฅเคก เคฎเคพเคจเฅเคฏ เคนเฅˆเค‚เฅค', + burmese: 'แ€žแ€„แ€บแ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€žแ€Šแ€บ แ€€แ€ปแ€”แ€บแ€ธแ€™แ€ฌแ€žแ€Šแ€บแ‹ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€แ€›แ€ฌแ€ธแ€แ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅเน„เธŸเธฅเนŒเนเธ™เธšเธ‚เธญเธ‡เธ„เธธเธ“เธญเธขเธนเนˆเนƒเธ™เธชเธ เธฒเธžเธ”เธต เธšเธฑเธ™เธ—เธถเธเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ–เธนเธเธ•เน‰เธญเธ‡', + mandarin: 'ๆ‚จ็š„้™„ไปถๆ•ฐๆฎๅบ“ๅฅๅบทใ€‚ๆ‰€ๆœ‰้™„ไปถ่ฎฐๅฝ•ๅ‡ๆœ‰ๆ•ˆใ€‚' }, corruptedAttachments: { english: 'Corrupted Attachments', @@ -6098,7 +9089,11 @@ export const localizations = { brazilian_portuguese: 'Anexos Corrompidos', tok_pisin: 'Ol Bagarap Fayl', indonesian: 'Lampiran Rusak', - nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚' + nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚', + hindi: 'เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค•', + burmese: 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข', + mandarin: 'ๆŸๅ็š„้™„ไปถ' }, foundCorruptedAttachments: { english: @@ -6142,7 +9137,11 @@ export const localizations = { brazilian_portuguese: 'Limpando...', tok_pisin: 'Mi klinim nau...', indonesian: 'Membersihkan...', - nepali: 'เคธเคซเคพ เค—เคฐเฅเคฆเฅˆ...' + nepali: 'เคธเคซเคพ เค—เคฐเฅเคฆเฅˆ...', + hindi: 'เคธเคซเคพเคˆ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚...', + burmese: 'แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€”แ€ฑแ€žแ€Šแ€บ...', + thai: 'เธเธณเธฅเธฑเธ‡เธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”...', + mandarin: 'ๆญฃๅœจๆธ…็†...' }, size: { english: 'Size', @@ -6150,7 +9149,11 @@ export const localizations = { brazilian_portuguese: 'Tamanho', tok_pisin: 'Saiz', indonesian: 'Ukuran', - nepali: 'เค†เค•เคพเคฐ' + nepali: 'เค†เค•เคพเคฐ', + hindi: 'เค†เค•เคพเคฐ', + burmese: 'แ€กแ€›แ€ฝแ€šแ€บแ€กแ€…แ€ฌแ€ธ', + thai: 'เธ‚เธ™เธฒเธ”', + mandarin: 'ๅคงๅฐ' }, attachmentId: { english: 'Attachment ID', @@ -6158,7 +9161,11 @@ export const localizations = { brazilian_portuguese: 'ID do Anexo', tok_pisin: 'ID bilong Fayl', indonesian: 'ID Lampiran', - nepali: 'เคธเค‚เคฒเค—เฅเคจเค• ID' + nepali: 'เคธเค‚เคฒเค—เฅเคจเค• ID', + hindi: 'เคธเค‚เคฒเค—เฅเคจเค• ID', + burmese: 'แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ ID', + thai: 'เธฃเธซเธฑเธชเน„เธŸเธฅเนŒเนเธ™เธš', + mandarin: '้™„ไปถID' }, localUri: { english: 'Local URI', @@ -6166,7 +9173,11 @@ export const localizations = { brazilian_portuguese: 'URI Local', tok_pisin: 'Local URI', indonesian: 'URI Lokal', - nepali: 'เคธเฅเคฅเคพเคจเฅ€เคฏ URI' + nepali: 'เคธเฅเคฅเคพเคจเฅ€เคฏ URI', + hindi: 'เคธเฅเคฅเคพเคจเฅ€เคฏ URI', + burmese: 'แ€’แ€ฑแ€žแ€แ€ฝแ€„แ€บแ€ธ URI', + thai: 'URI เธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™', + mandarin: 'ๆœฌๅœฐURI' }, associatedAssets: { english: 'Associated Assets ({count})', @@ -6190,7 +9201,11 @@ export const localizations = { brazilian_portuguese: 'Limpar Isto', tok_pisin: 'Klinim Dispela', indonesian: 'Bersihkan Ini', - nepali: 'เคฏเฅ‹ เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฏเฅ‹ เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‡เคธเฅ‡ เคธเคพเคซ เค•เคฐเฅ‡เค‚', + burmese: 'แ€คแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เธชเธดเนˆเธ‡เธ™เธตเน‰', + mandarin: 'ๆธ…็†ๆญค้กน' }, cleanCorruptedAttachment: { english: 'Clean Corrupted Attachment', @@ -6198,7 +9213,11 @@ export const localizations = { brazilian_portuguese: 'Limpar Anexo Corrompido', tok_pisin: 'Klinim Bagarap Fayl', indonesian: 'Bersihkan Lampiran Rusak', - nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข', + mandarin: 'ๆธ…็†ๆŸๅ็š„้™„ไปถ' }, cleanCorruptedAttachmentConfirm: { english: @@ -6212,7 +9231,14 @@ export const localizations = { indonesian: 'Ini akan menghapus catatan lampiran rusak dan referensinya dari database. Tindakan ini tidak dapat dibatalkan.', nepali: - 'เคฏเคธเคฒเฅ‡ เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคฐเฅ‡เค•เคฐเฅเคก เคฐ เคฏเคธเค•เฅ‹ เคธเคจเฅเคฆเคฐเฅเคญเคนเคฐเฅ‚ เคกเคพเคŸเคพเคฌเฅ‡เคธเคฌเคพเคŸ เคนเคŸเคพเค‰เคจเฅ‡เค›เฅค เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + 'เคฏเคธเคฒเฅ‡ เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคฐเฅ‡เค•เคฐเฅเคก เคฐ เคฏเคธเค•เฅ‹ เคธเคจเฅเคฆเคฐเฅเคญเคนเคฐเฅ‚ เคกเคพเคŸเคพเคฌเฅ‡เคธเคฌเคพเคŸ เคนเคŸเคพเค‰เคจเฅ‡เค›เฅค เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: + 'เคฏเคน เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคธเฅ‡ เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคฐเคฟเค•เฅ‰เคฐเฅเคก เค”เคฐ เค‡เคธเค•เฅ‡ เคธเค‚เคฆเคฐเฅเคญเฅ‹เค‚ เค•เฅ‹ เคนเคŸเคพ เคฆเฅ‡เค—เคพเฅค เคฏเคน เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เคจเคนเฅ€เค‚ เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพเฅค', + burmese: + 'แ€คแ€กแ€›แ€ฌแ€žแ€Šแ€บ แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€”แ€พแ€„แ€ทแ€บ แŽแ€„แ€บแ€ธแ แ€€แ€ญแ€ฏแ€ธแ€€แ€ฌแ€ธแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€™แ€พ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€™แ€Šแ€บแ‹ แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ‹', + thai: + 'เธชเธดเนˆเธ‡เธ™เธตเน‰เธˆเธฐเธฅเธšเธšเธฑเธ™เธ—เธถเธเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธขเนเธฅเธฐเธเธฒเธฃเธญเน‰เธฒเธ‡เธญเธดเธ‡เธˆเธฒเธเธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', + mandarin: '่ฟ™ๅฐ†ไปŽๆ•ฐๆฎๅบ“ไธญๅˆ ้™คๆŸๅ็š„้™„ไปถ่ฎฐๅฝ•ๅŠๅ…ถๅผ•็”จใ€‚ๆญคๆ“ไฝœๆ— ๆณ•ๆ’ค้”€ใ€‚' }, clean: { english: 'Clean', @@ -6220,7 +9246,11 @@ export const localizations = { brazilian_portuguese: 'Limpar', tok_pisin: 'Klinim', indonesian: 'Bersihkan', - nepali: 'เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคพเคซ เค•เคฐเฅ‡เค‚', + burmese: 'แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”', + mandarin: 'ๆธ…็†' }, corruptedAttachmentCleanedSuccess: { english: 'Corrupted attachment cleaned successfully.', @@ -6228,7 +9258,11 @@ export const localizations = { brazilian_portuguese: 'Anexo corrompido limpo com sucesso.', tok_pisin: 'Bagarap fayl i klinim gut pinis.', indonesian: 'Lampiran rusak berhasil dibersihkan.', - nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค' + nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค', + hindi: 'เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคพเคซ เค•เคฟเคฏเคพ เค—เคฏเคพเฅค', + burmese: 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹', + thai: 'เธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธขเธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง', + mandarin: 'ๆŸๅ็š„้™„ไปถๅทฒๆˆๅŠŸๆธ…็†ใ€‚' }, failedToCleanAttachment: { english: 'Failed to clean attachment: {error}', @@ -6244,7 +9278,11 @@ export const localizations = { brazilian_portuguese: 'Limpar Todos os Anexos Corrompidos', tok_pisin: 'Klinim Olgeta Bagarap Fayl', indonesian: 'Bersihkan Semua Lampiran Rusak', - nepali: 'เคธเคฌเฅˆ เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคฌเฅˆ เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคญเฅ€ เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซ', + thai: 'เธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธขเธ—เธฑเน‰เธ‡เธซเธกเธ”', + mandarin: 'ๆธ…็†ๆ‰€ๆœ‰ๆŸๅ็š„้™„ไปถ' }, cleanAllConfirm: { english: @@ -6280,7 +9318,11 @@ export const localizations = { brazilian_portuguese: 'Sucesso Parcial', tok_pisin: 'Sampela i Orait', indonesian: 'Berhasil Sebagian', - nepali: 'เค†เค‚เคถเคฟเค• เคธเคซเคฒเคคเคพ' + nepali: 'เค†เค‚เคถเคฟเค• เคธเคซเคฒเคคเคพ', + hindi: 'เค†เค‚เคถเคฟเค• เคธเคซเคฒเคคเคพ', + burmese: 'แ€แ€…แ€บแ€…แ€ญแ€แ€บแ€แ€…แ€บแ€•แ€ญแ€ฏแ€„แ€บแ€ธ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€™แ€พแ€ฏ', + thai: 'เธ„เธงเธฒเธกเธชเธณเน€เธฃเน‡เธˆเธšเธฒเธ‡เธชเนˆเธงเธ™', + mandarin: '้ƒจๅˆ†ๆˆๅŠŸ' }, cleanedAttachmentsWithErrors: { english: @@ -6292,7 +9334,11 @@ export const localizations = { tok_pisin: 'Klinim {cleaned} fayl. {errorCount} rong i kamap:\n\n{errors}', indonesian: 'Membersihkan {cleaned} lampiran. {errorCount} kesalahan terjadi:\n\n{errors}', - nepali: '{cleaned} เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟ เคญเคฏเฅ‹:\n\n{errors}' + nepali: '{cleaned} เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟ เคญเคฏเฅ‹:\n\n{errors}', + hindi: '{cleaned} เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฟเคฏเคพเฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟ เคนเฅเคˆ:\n\n{errors}', + burmese: '{cleaned} แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ‹ {errorCount} แ€กแ€™แ€พแ€ฌแ€ธ แ€–แ€ผแ€…แ€บแ€•แ€ฝแ€ฌแ€ธแ€แ€ฒแ€ทแ€žแ€Šแ€บ:\n\n{errors}', + thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธš {cleaned} เธฃเธฒเธขเธเธฒเธฃ เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ” {errorCount} เธฃเธฒเธขเธเธฒเธฃ:\n\n{errors}', + mandarin: 'ๅทฒๆธ…็† {cleaned} ไธช้™„ไปถใ€‚ๅ‘็”Ÿ {errorCount} ไธช้”™่ฏฏ:\n\n{errors}' }, cleanedAttachmentsWithErrorsPlural: { english: @@ -6305,7 +9351,11 @@ export const localizations = { indonesian: 'Membersihkan {cleaned} lampiran. {errorCount} kesalahan terjadi:\n\n{errors}', nepali: - '{cleaned} เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคญเคฏเฅ‹:\n\n{errors}' + '{cleaned} เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคญเคฏเฅ‹:\n\n{errors}', + hindi: '{cleaned} เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฟเคเฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคนเฅเคˆเค‚:\n\n{errors}', + burmese: '{cleaned} แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ‹ {errorCount} แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธ แ€–แ€ผแ€…แ€บแ€•แ€ฝแ€ฌแ€ธแ€แ€ฒแ€ทแ€žแ€Šแ€บ:\n\n{errors}', + thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธš {cleaned} เธฃเธฒเธขเธเธฒเธฃ เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ” {errorCount} เธฃเธฒเธขเธเธฒเธฃ:\n\n{errors}', + mandarin: 'ๅทฒๆธ…็† {cleaned} ไธช้™„ไปถใ€‚ๅ‘็”Ÿ {errorCount} ไธช้”™่ฏฏ:\n\n{errors}' }, successfullyCleanedAttachments: { english: 'Successfully cleaned {cleaned} corrupted attachment.', @@ -6313,7 +9363,11 @@ export const localizations = { brazilian_portuguese: 'Limpou com sucesso {cleaned} anexo corrompido.', tok_pisin: 'Klinim gut {cleaned} bagarap fayl.', indonesian: 'Berhasil membersihkan {cleaned} lampiran rusak.', - nepali: '{cleaned} เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค' + nepali: '{cleaned} เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค', + hindi: '{cleaned} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคพเคซ เค•เคฟเคฏเคพ เค—เคฏเคพเฅค', + burmese: '{cleaned} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹', + thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {cleaned} เธฃเธฒเธขเธเธฒเธฃเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅทฒๆˆๅŠŸๆธ…็† {cleaned} ไธชๆŸๅ็š„้™„ไปถใ€‚' }, successfullyCleanedAttachmentsPlural: { english: 'Successfully cleaned {cleaned} corrupted attachments.', @@ -6321,7 +9375,11 @@ export const localizations = { brazilian_portuguese: 'Limpou com sucesso {cleaned} anexos corrompidos.', tok_pisin: 'Klinim gut {cleaned} bagarap fayl.', indonesian: 'Berhasil membersihkan {cleaned} lampiran rusak.', - nepali: '{cleaned} เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค' + nepali: '{cleaned} เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค', + hindi: '{cleaned} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคพเคซ เค•เคฟเค เค—เคเฅค', + burmese: '{cleaned} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹', + thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {cleaned} เธฃเธฒเธขเธเธฒเธฃเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅทฒๆˆๅŠŸๆธ…็† {cleaned} ไธชๆŸๅ็š„้™„ไปถใ€‚' }, failedToCleanAttachments: { english: 'Failed to clean attachments: {error}', @@ -6329,7 +9387,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao limpar anexos: {error}', tok_pisin: 'I no inap klinim ol fayl: {error}', indonesian: 'Gagal membersihkan lampiran: {error}', - nepali: 'เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ: {error}' + nepali: 'เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ: {error}', + hindi: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ: {error}', + burmese: 'แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ: {error}', + thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธšเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ: {error}', + mandarin: 'ๆธ…็†้™„ไปถๅคฑ่ดฅ: {error}' }, failedToLoadCorruptedAttachments: { english: 'Failed to load corrupted attachments. Please try again.', @@ -6339,7 +9401,11 @@ export const localizations = { 'Falha ao carregar anexos corrompidos. Por favor, tente novamente.', tok_pisin: 'I no inap loadim ol bagarap fayl. Plis traim gen.', indonesian: 'Gagal memuat lampiran rusak. Silakan coba lagi.', - nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + burmese: 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + thai: 'เน‚เธซเธฅเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธขเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๅŠ ่ฝฝๆŸๅ็š„้™„ไปถๅคฑ่ดฅใ€‚่ฏท้‡่ฏ•ใ€‚' }, unnamed: { english: 'Unnamed', @@ -6347,7 +9413,11 @@ export const localizations = { brazilian_portuguese: 'Sem nome', tok_pisin: 'I no gat nem', indonesian: 'Tanpa nama', - nepali: 'เคจเคพเคฎ เคจเคญเคเค•เฅ‹' + nepali: 'เคจเคพเคฎ เคจเคญเคเค•เฅ‹', + hindi: 'เคฌเคฟเคจเคพ เคจเคพเคฎ', + burmese: 'แ€กแ€™แ€Šแ€บแ€™แ€ฒแ€ท', + thai: 'เน„เธกเนˆเธกเธตเธŠเธทเนˆเธญ', + mandarin: 'ๆœชๅ‘ฝๅ' }, backToProjects: { english: 'Back to Projects', @@ -6355,7 +9425,11 @@ export const localizations = { brazilian_portuguese: 'Voltar aos Projetos', tok_pisin: 'Go bek long ol Projek', indonesian: 'Kembali ke Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚เคฎเคพ เคซเคฐเฅเค•เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚เคฎเคพ เคซเคฐเฅเค•เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเค“เค‚ เคชเคฐ เคตเคพเคชเคธ', + burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€žแ€ญแ€ฏแ€ท แ€•แ€ผแ€”แ€บแ€žแ€ฝแ€ฌแ€ธแ€•แ€ซ', + thai: 'เธเธฅเธฑเธšเน„เธ›เธ—เธตเนˆเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + mandarin: '่ฟ”ๅ›ž้กน็›ฎ' }, downloaded: { english: 'Downloaded', @@ -6363,7 +9437,11 @@ export const localizations = { brazilian_portuguese: 'Baixado', tok_pisin: 'Downloaded', indonesian: 'Diunduh', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคฏเฅ‹' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคฏเฅ‹', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธฅเน‰เธง', + mandarin: 'ๅทฒไธ‹่ฝฝ' }, freeUpSpace: { english: 'Free Up Space', @@ -6371,7 +9449,11 @@ export const localizations = { brazilian_portuguese: 'Liberar Espaรงo', tok_pisin: 'Free Up Space', indonesian: 'Bebaskan Ruang', - nepali: 'เค เคพเค‰เค เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค เคพเค‰เค เค–เคพเคฒเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคœเค—เคน เค–เคพเคฒเฅ€ เค•เคฐเฅ‡เค‚', + burmese: 'แ€”แ€ฑแ€›แ€ฌ แ€œแ€ฝแ€แ€บแ€™แ€ผแ€ฑแ€ฌแ€€แ€บแ€•แ€ซ', + thai: 'เธ›เธฅเนˆเธญเธขเธžเธทเน‰เธ™เธ—เธตเนˆ', + mandarin: '้‡Šๆ”พ็ฉบ้—ด' }, storageUsed: { english: 'Storage Used', @@ -6379,7 +9461,11 @@ export const localizations = { brazilian_portuguese: 'Espaรงo Usado', tok_pisin: 'Storage Used', indonesian: 'Penyimpanan yang Digunakan', - nepali: 'เคชเฅเคฐเคฏเฅ‹เค— เคญเคเค•เฅ‹ เคญเคฃเฅเคกเคพเคฐเคฃ' + nepali: 'เคชเฅเคฐเคฏเฅ‹เค— เคญเคเค•เฅ‹ เคญเคฃเฅเคกเคพเคฐเคฃ', + hindi: 'เค‰เคชเคฏเฅ‹เค— เค•เฅ€ เค—เคˆ เคธเค‚เค—เฅเคฐเคนเคฃ', + burmese: 'แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€žแ€ญแ€ฏแ€œแ€พแ€ฑแ€ฌแ€„แ€บแ€™แ€พแ€ฏ', + thai: 'เธžเธทเน‰เธ™เธ—เธตเนˆเธˆเธฑเธ”เน€เธเน‡เธšเธ—เธตเนˆเนƒเธŠเน‰', + mandarin: 'ๅทฒ็”จๅญ˜ๅ‚จ' }, notDownloaded: { english: 'Not Downloaded', @@ -6387,7 +9473,11 @@ export const localizations = { brazilian_portuguese: 'Nรฃo Baixado', tok_pisin: 'Not Downloaded', indonesian: 'Tidak Diunduh', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคเค•เฅ‹ เค›เฅˆเคจ' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคญเคเค•เฅ‹ เค›เฅˆเคจ', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคจเคนเฅ€เค‚ เคนเฅเค†', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บแ€™แ€œแ€ฏแ€•แ€บแ€›แ€žแ€ฑแ€ธแ€•แ€ซ', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเน„เธ”เน‰เธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”', + mandarin: 'ๆœชไธ‹่ฝฝ' }, missingCloudData: { english: 'Missing Cloud Data', @@ -6395,7 +9485,11 @@ export const localizations = { brazilian_portuguese: 'Dados na Nuvem Faltando', tok_pisin: 'No gat ol data long cloud', indonesian: 'Data Cloud Hilang', - nepali: 'เค•เฅเคฒเคพเค‰เคก เคกเคพเคŸเคพ เคนเคฐเคพเค‡เคฐเคนเฅ‡เค•เฅ‹ เค›' + nepali: 'เค•เฅเคฒเคพเค‰เคก เคกเคพเคŸเคพ เคนเคฐเคพเค‡เคฐเคนเฅ‡เค•เฅ‹ เค›', + hindi: 'เค•เฅเคฒเคพเค‰เคก เคกเฅ‡เคŸเคพ เค—เคพเคฏเคฌ', + burmese: 'Cloud แ€’แ€ฑแ€แ€ฌ แ€•แ€ปแ€ฑแ€ฌแ€€แ€บแ€†แ€ฏแ€ถแ€ธแ€”แ€ฑแ€žแ€Šแ€บ', + thai: 'เธ‚เน‰เธญเธกเธนเธฅเธ„เธฅเธฒเธงเธ”เนŒเธซเธฒเธขเน„เธ›', + mandarin: 'ไบ‘ๆ•ฐๆฎ็ผบๅคฑ' }, deleteAccount: { english: 'Delete Account', @@ -6403,7 +9497,11 @@ export const localizations = { brazilian_portuguese: 'Excluir Conta', tok_pisin: 'Rausim Account', indonesian: 'Hapus Akun', - nepali: 'เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค–เคพเคคเคพ เคนเคŸเคพเคเค‚', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ซ', + thai: 'เธฅเธšเธšเธฑเธเธŠเธต', + mandarin: 'ๅˆ ้™ค่ดฆๆˆท' }, accountDeletionTitle: { english: 'Delete Your Account', @@ -6411,7 +9509,11 @@ export const localizations = { brazilian_portuguese: 'Excluir Sua Conta', tok_pisin: 'Rausim Account Bilong Yu', indonesian: 'Hapus Akun Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเคพ เค–เคพเคคเคพ เคนเคŸเคพเคเค‚', + burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ซ', + thai: 'เธฅเธšเธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: 'ๅˆ ้™คๆ‚จ็š„่ดฆๆˆท' }, accountDeletionWarning: { english: @@ -6425,7 +9527,13 @@ export const localizations = { indonesian: 'Setelah menghapus akun Anda, Anda tidak akan dapat mendaftar atau masuk saat offline. Anda harus online untuk membuat akun baru atau masuk.', nepali: - 'เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเคเคชเค›เคฟ, เคคเคชเคพเคˆเค‚ เค…เคซเคฒเคพเค‡เคจ เคนเฅเคเคฆเคพ เคฆเคฐเฅเคคเคพ เคตเคพ เคฒเค— เค‡เคจ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคจเคฏเคพเค เค–เคพเคคเคพ เคฌเคจเคพเค‰เคจ เคตเคพ เคฒเค— เค‡เคจ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค' + 'เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเคเคชเค›เคฟ, เคคเคชเคพเคˆเค‚ เค…เคซเคฒเคพเค‡เคจ เคนเฅเคเคฆเคพ เคฆเคฐเฅเคคเคพ เคตเคพ เคฒเค— เค‡เคจ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคจเคฏเคพเค เค–เคพเคคเคพ เคฌเคจเคพเค‰เคจ เคตเคพ เคฒเค— เค‡เคจ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: + 'เค–เคพเคคเคพ เคนเคŸเคพเคจเฅ‡ เค•เฅ‡ เคฌเคพเคฆ, เค†เคช เค‘เคซเคฒเคพเค‡เคจ เคนเฅ‹เคจเฅ‡ เคชเคฐ เคชเค‚เคœเฅ€เค•เคฐเคฃ เคฏเคพ เคฒเฅ‰เค— เค‡เคจ เคจเคนเฅ€เค‚ เค•เคฐ เคธเค•เฅ‡เค‚เค—เฅ‡เฅค เคจเคฏเคพ เค–เคพเคคเคพ เคฌเคจเคพเคจเฅ‡ เคฏเคพ เคฒเฅ‰เค— เค‡เคจ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เคจเคพ เคšเคพเคนเคฟเคเฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€”แ€ฑแ€ฌแ€€แ€บแŠ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€กแ€žแ€…แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€›แ€”แ€บ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธซเธฅเธฑเธ‡เธˆเธฒเธเธฅเธšเธšเธฑเธเธŠเธตเนเธฅเน‰เธง เธ„เธธเธ“เธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™เธซเธฃเธทเธญเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเนเธšเธšเธญเธญเธŸเน„เธฅเธ™เนŒเน„เธ”เน‰ เธ„เธธเธ“เธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เธšเธฑเธเธŠเธตเนƒเธซเธกเนˆเธซเธฃเธทเธญเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš', + mandarin: 'ๅˆ ้™ค่ดฆๆˆทๅŽ๏ผŒๆ‚จๅฐ†ๆ— ๆณ•ๅœจ็ฆป็บฟๆ—ถๆณจๅ†Œๆˆ–็™ปๅฝ•ใ€‚ๆ‚จๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๅˆ›ๅปบๆ–ฐ่ดฆๆˆทๆˆ–็™ปๅฝ•ใ€‚' }, accountDeletionPIIWarning: { english: @@ -6439,7 +9547,13 @@ export const localizations = { indonesian: 'Akun Anda akan dinonaktifkan (penghapusan lunak). Semua data Anda akan dilestarikan, tetapi Anda tidak akan dapat mengakses aplikasi hingga Anda memulihkan akun Anda. Anda dapat memulihkan akun Anda kapan saja, tetapi Anda harus online untuk melakukannya.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค—เคฐเคฟเคจเฅ‡เค› (เคธเคซเฅเคŸ เคกเคฟเคฒเคฟเคŸ)เฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฌเฅˆ เคกเคพเคŸเคพ เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเคจเฅ‡เค›, เคคเคฐ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคจเค—เคฐเฅ‡เคธเคฎเฅเคฎ เคเคช เคชเคนเฅเคเคš เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคคเคชเคพเคˆเค‚ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคคเฅเคฏเคธเค•เคพ เคฒเคพเค—เคฟ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค—เคฐเคฟเคจเฅ‡เค› (เคธเคซเฅเคŸ เคกเคฟเคฒเคฟเคŸ)เฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฌเฅˆ เคกเคพเคŸเคพ เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเคจเฅ‡เค›, เคคเคฐ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เคจเค—เคฐเฅ‡เคธเคฎเฅเคฎ เคเคช เคชเคนเฅเคเคš เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅ‡ เค›เฅˆเคจเฅค เคคเคชเคพเคˆเค‚ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคคเฅเคฏเคธเค•เคพ เคฒเคพเค—เคฟ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: + 'เค†เคชเค•เคพ เค–เคพเคคเคพ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค•เคฐ เคฆเคฟเคฏเคพ เคœเคพเคเค—เคพ (เคธเฅ‰เคซเฅเคŸ เคกเคฟเคฒเฅ€เคŸ)เฅค เค†เคชเค•เคพ เคธเคญเฅ€ เคกเฅ‡เคŸเคพ เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเฅ‡เค—เคพ, เคฒเฅ‡เค•เคฟเคจ เคœเคฌ เคคเค• เค†เคช เค…เคชเคจเคพ เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เคจเคนเฅ€เค‚ เค•เคฐเคคเฅ‡ เคคเคฌ เคคเค• เค†เคช เคเคช เคคเค• เคชเคนเฅเค‚เคš เคจเคนเฅ€เค‚ เคธเค•เฅ‡เค‚เค—เฅ‡เฅค เค†เคช เค•เคฟเคธเฅ€ เคญเฅ€ เคธเคฎเคฏ เค…เคชเคจเคพ เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚, เคฒเฅ‡เค•เคฟเคจ เค‡เคธเค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เคจเคพ เคšเคพเคนเคฟเคเฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ญแ€แ€บแ€žแ€ญแ€™แ€บแ€ธแ€™แ€Šแ€บ (แ€•แ€ปแ€ฑแ€ฌแ€ทแ€•แ€ปแ€ฑแ€ฌแ€„แ€บแ€ธแ€–แ€ปแ€€แ€บแ€แ€ผแ€„แ€บแ€ธ)แ‹ แ€žแ€„แ€บแ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€‘แ€ญแ€”แ€บแ€ธแ€žแ€ญแ€™แ€บแ€ธแ€™แ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€™แ€žแ€Šแ€บแ€กแ€‘แ€ญ แ€กแ€€แ€บแ€•แ€บแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€™แ€›แ€•แ€ซแ‹ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€™แ€†แ€ญแ€ฏ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ (เธเธฒเธฃเธฅเธšเนเธšเธšเธ™เธธเนˆเธกเธ™เธงเธฅ) เธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเธ–เธนเธเน€เธเน‡เธšเน„เธงเน‰ เนเธ•เนˆเธ„เธธเธ“เธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เน€เธ‚เน‰เธฒเธ–เธถเธ‡เนเธญเธ›เน„เธ”เน‰เธˆเธ™เธเธงเนˆเธฒเธ„เธธเธ“เธˆเธฐเธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธต เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธตเน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ เนเธ•เนˆเธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเธญเธขเธนเนˆ', + mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅœ็”จ๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จ็š„ๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†่ขซไฟ็•™๏ผŒไฝ†ๅœจๆ‚จๆขๅค่ดฆๆˆทไน‹ๅ‰ๆ‚จๅฐ†ๆ— ๆณ•่ฎฟ้—ฎๅบ”็”จใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๆขๅค่ดฆๆˆท๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟใ€‚' }, accountDeletionContributionsInfo: { english: @@ -6453,7 +9567,13 @@ export const localizations = { indonesian: 'Semua kontribusi Anda (proyek, quest, aset, terjemahan, suara) akan dilestarikan dan akan tetap publik sesuai dengan syarat yang telah Anda setujui saat bergabung. Akun Anda dapat dipulihkan kapan saja, dan semua data Anda akan dapat diakses lagi.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เคพ เคธเคฌเฅˆ เคฏเฅ‹เค—เคฆเคพเคจเคนเคฐเฅ‚ (เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚, เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚, เคเคธเฅ‡เคŸเคนเคฐเฅ‚, เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚, เคฎเคคเคนเคฐเฅ‚) เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเคจเฅ‡เค›เคจเฅ เคฐ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคเคฆเคพ เคธเคนเคฎเคค เคญเคเค•เคพ เคธเคฐเฅเคคเคนเคฐเฅ‚ เค…เคจเฅเคธเคพเคฐ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคฐเคนเคจเฅ‡เค›เคจเฅเฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›, เคฐ เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฌเฅˆ เคกเคพเคŸเคพ เคซเฅ‡เคฐเคฟ เคชเคนเฅเคเคšเคฏเฅ‹เค—เฅเคฏ เคนเฅเคจเฅ‡เค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เคพ เคธเคฌเฅˆ เคฏเฅ‹เค—เคฆเคพเคจเคนเคฐเฅ‚ (เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคนเคฐเฅ‚, เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚, เคเคธเฅ‡เคŸเคนเคฐเฅ‚, เค…เคจเฅเคตเคพเคฆเคนเคฐเฅ‚, เคฎเคคเคนเคฐเฅ‚) เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเคจเฅ‡เค›เคจเฅ เคฐ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคเคฆเคพ เคธเคนเคฎเคค เคญเคเค•เคพ เคธเคฐเฅเคคเคนเคฐเฅ‚ เค…เคจเฅเคธเคพเคฐ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคฐเคนเคจเฅ‡เค›เคจเฅเฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›, เคฐ เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฌเฅˆ เคกเคพเคŸเคพ เคซเฅ‡เคฐเคฟ เคชเคนเฅเคเคšเคฏเฅ‹เค—เฅเคฏ เคนเฅเคจเฅ‡เค›เฅค', + hindi: + 'เค†เคชเค•เฅ‡ เคธเคญเฅ€ เคฏเฅ‹เค—เคฆเคพเคจ (เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคเค‚, เค•เฅเคตเฅ‡เคธเฅเคŸ, เคเคธเฅ‡เคŸ, เค…เคจเฅเคตเคพเคฆ, เคตเฅ‹เคŸ) เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเคนเฅ‡เค‚เค—เฅ‡ เค”เคฐ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เคชเคฐ เค†เคชเค•เฅ€ เคธเคนเคฎเคคเคฟ เค•เฅ‡ เค…เคจเฅเคธเคพเคฐ เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคฐเคนเฅ‡เค‚เค—เฅ‡เฅค เค†เคชเค•เคพ เค–เคพเคคเคพ เค•เคฟเคธเฅ€ เคญเฅ€ เคธเคฎเคฏ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพ เคนเฅˆ, เค”เคฐ เค†เคชเค•เคพ เคธเคญเฅ€ เคกเฅ‡เคŸเคพ เคซเคฟเคฐ เคธเฅ‡ เคชเคนเฅเค‚เคš เคฏเฅ‹เค—เฅเคฏ เคนเฅ‹เค—เคพเฅค', + burmese: + 'แ€žแ€„แ€บแ แ€•แ€ซแ€แ€„แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€ฝแ€€แ€บแ€™แ€พแ€ฏแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ (แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแŠ แ€แ€›แ€ฎแ€ธแ€…แ€‰แ€บแ€™แ€ปแ€ฌแ€ธแŠ แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแŠ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแŠ แ€™แ€ฒแ€™แ€ปแ€ฌแ€ธ) แ€‘แ€ญแ€”แ€บแ€ธแ€žแ€ญแ€™แ€บแ€ธแ€™แ€Šแ€บแŠ แ€•แ€ซแ€แ€„แ€บแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€กแ€› แ€™แ€ปแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€•แ€ผแ€Šแ€บแ€žแ€ฐแ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ‹ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€™แ€†แ€ญแ€ฏ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“ (เน‚เธ„เธฃเธ‡เธเธฒเธฃ เธ เธฒเธฃเธเธดเธˆ เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ เธเธฒเธฃเนเธ›เธฅ votes) เธˆเธฐเธ–เธนเธเน€เธเน‡เธšเธฃเธฑเธเธฉเธฒเนเธฅเธฐเธˆเธฐเธขเธฑเธ‡เธ„เธ‡เน€เธ›เน‡เธ™เธชเธฒเธ˜เธฒเธฃเธ“เธฐเธ•เธฒเธกเธ‚เน‰เธญเธเธณเธซเธ™เธ”เธ—เธตเนˆเธ„เธธเธ“เน„เธ”เน‰เธ•เธเธฅเธ‡เน€เธกเธทเนˆเธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธก เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธตเน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ เนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน„เธ”เน‰เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', + mandarin: 'ๆ‚จ็š„ๆ‰€ๆœ‰่ดก็Œฎ๏ผˆ้กน็›ฎใ€ไปปๅŠกใ€่ต„ไบงใ€็ฟป่ฏ‘ใ€ๆŠ•็ฅจ๏ผ‰ๅฐ†่ขซไฟ็•™๏ผŒๅนถๅฐ†ๆ นๆฎๆ‚จๅŠ ๅ…ฅๆ—ถๅŒๆ„็š„ๆกๆฌพไฟๆŒๅ…ฌๅผ€ใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๆขๅค่ดฆๆˆท๏ผŒๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†ๅ†ๆฌกๅฏ่ฎฟ้—ฎใ€‚' }, accountDeletionConfirm: { english: @@ -6467,7 +9587,13 @@ export const localizations = { indonesian: 'Apakah Anda benar-benar yakin ingin menghapus akun Anda? Anda dapat memulihkannya nanti, tetapi Anda harus online untuk melakukannya.', nepali: - 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค›? เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคชเค›เคฟ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคคเฅเคฏเคธเค•เคพ เคฒเคพเค—เคฟ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค' + 'เค•เฅ‡ เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจ เคจเคฟเคถเฅเคšเคฟเคค เคนเฅเคจเฅเคนเฅเคจเฅเค›? เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคชเค›เคฟ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคคเฅเคฏเคธเค•เคพ เคฒเคพเค—เคฟ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: + 'เค•เฅเคฏเคพ เค†เคช เคตเคพเค•เคˆ เค…เคชเคจเคพ เค–เคพเคคเคพ เคนเคŸเคพเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚? เค†เคช เค‡เคธเฅ‡ เคฌเคพเคฆ เคฎเฅ‡เค‚ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚, เคฒเฅ‡เค•เคฟเคจ เค‡เคธเค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เคจเคพ เคšเคพเคนเคฟเคเฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€›แ€”แ€บ แ€žแ€ฑแ€แ€ปแ€ฌแ€•แ€ซแ€žแ€œแ€ฌแ€ธ? แ€”แ€ฑแ€ฌแ€€แ€บแ€™แ€พ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธ„เธธเธ“เนเธ™เนˆเนƒเธˆเธซเธฃเธทเธญเน„เธกเนˆเธงเนˆเธฒเธ•เน‰เธญเธ‡เธเธฒเธฃเธฅเธšเธšเธฑเธเธŠเธต? เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน„เธ”เน‰เนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡ เนเธ•เนˆเธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเธญเธขเธนเนˆ', + mandarin: 'ๆ‚จ็กฎๅฎš่ฆๅˆ ้™คๆ‚จ็š„่ดฆๆˆทๅ—๏ผŸๆ‚จๅฏไปฅ็จๅŽๆขๅค๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๆ“ไฝœใ€‚' }, accountDeletionConfirmMessage: { english: @@ -6481,7 +9607,13 @@ export const localizations = { indonesian: 'Akun Anda akan dihapus (penghapusan lunak). Anda dapat memulihkannya nanti dari layar login, tetapi Anda harus online untuk memulihkannya.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‡เคจเฅ‡เค› (เคธเคซเฅเคŸ เคกเคฟเคฒเคฟเคŸ)เฅค เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคชเค›เคฟ เคฒเค—เค‡เคจ เคธเฅเค•เฅเคฐเคฟเคจเคฌเคพเคŸ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‡เคจเฅ‡เค› (เคธเคซเฅเคŸ เคกเคฟเคฒเคฟเคŸ)เฅค เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคชเค›เคฟ เคฒเค—เค‡เคจ เคธเฅเค•เฅเคฐเคฟเคจเคฌเคพเคŸ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: + 'เค†เคชเค•เคพ เค–เคพเคคเคพ เคนเคŸเคพ เคฆเคฟเคฏเคพ เคœเคพเคเค—เคพ (เคธเฅ‰เคซเฅเคŸ เคกเคฟเคฒเฅ€เคŸ)เฅค เค†เคช เค‡เคธเฅ‡ เคฌเคพเคฆ เคฎเฅ‡เค‚ เคฒเฅ‰เค—เคฟเคจ เคธเฅเค•เฅเคฐเฅ€เคจ เคธเฅ‡ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚, เคฒเฅ‡เค•เคฟเคจ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เคจเคพ เคšเคพเคนเคฟเคเฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€™แ€Šแ€บ (แ€•แ€ปแ€ฑแ€ฌแ€ทแ€•แ€ปแ€ฑแ€ฌแ€„แ€บแ€ธแ€–แ€ปแ€€แ€บแ€แ€ผแ€„แ€บแ€ธ)แ‹ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€…แ€แ€›แ€„แ€บแ€™แ€พ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹', + thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธฅเธš (เธเธฒเธฃเธฅเธšเนเธšเธšเธ™เธธเนˆเธกเธ™เธงเธฅ) เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน„เธ”เน‰เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡ เนเธ•เนˆเธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเธญเธขเธนเนˆเน€เธžเธทเนˆเธญเธเธนเน‰เธ„เธทเธ™', + mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅˆ ้™ค๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จๅฏไปฅ็จๅŽไปŽ็™ปๅฝ•ๅฑๅน•ๆขๅค๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๆขๅคใ€‚' }, accountDeletionStep1Title: { english: 'Step 1: Understand the Consequences', @@ -6489,7 +9621,11 @@ export const localizations = { brazilian_portuguese: 'Etapa 1: Entender as Consequรชncias', tok_pisin: 'Step 1: Save ol Samting Bai Kamap', indonesian: 'Langkah 1: Pahami Konsekuensinya', - nepali: 'เคšเคฐเคฃ เฅง: เคชเคฐเคฟเคฃเคพเคฎเคนเคฐเฅ‚ เคฌเฅเคเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคšเคฐเคฃ เฅง: เคชเคฐเคฟเคฃเคพเคฎเคนเคฐเฅ‚ เคฌเฅเคเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคšเคฐเคฃ 1: เคชเคฐเคฟเคฃเคพเคฎ เคธเคฎเคเฅ‡เค‚', + burmese: 'แ€กแ€†แ€„แ€ทแ€บ แ: แ€›แ€œแ€’แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€”แ€ฌแ€ธแ€œแ€Šแ€บแ€•แ€ซ', + thai: 'เธ‚เธฑเน‰เธ™เธ•เธญเธ™เธ—เธตเนˆ 1: เธ—เธณเธ„เธงเธฒเธกเน€เธ‚เน‰เธฒเนƒเธˆเธœเธฅเธ—เธตเนˆเธ•เธฒเธกเธกเธฒ', + mandarin: 'ๆญฅ้ชค 1๏ผšไบ†่งฃๅŽๆžœ' }, accountDeletionStep2Title: { english: 'Step 2: Final Confirmation', @@ -6497,7 +9633,11 @@ export const localizations = { brazilian_portuguese: 'Etapa 2: Confirmaรงรฃo Final', tok_pisin: 'Step 2: Final Confirm', indonesian: 'Langkah 2: Konfirmasi Akhir', - nepali: 'เคšเคฐเคฃ เฅจ: เค…เคจเฅเคคเคฟเคฎ เคชเฅเคทเฅเคŸเคฟ' + nepali: 'เคšเคฐเคฃ เฅจ: เค…เคจเฅเคคเคฟเคฎ เคชเฅเคทเฅเคŸเคฟ', + hindi: 'เคšเคฐเคฃ 2: เค…เค‚เคคเคฟเคฎ เคชเฅเคทเฅเคŸเคฟ', + burmese: 'แ€กแ€†แ€„แ€ทแ€บ แ‚: แ€”แ€ฑแ€ฌแ€€แ€บแ€†แ€ฏแ€ถแ€ธ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บ', + thai: 'เธ‚เธฑเน‰เธ™เธ•เธญเธ™เธ—เธตเนˆ 2: เธเธฒเธฃเธขเธทเธ™เธขเธฑเธ™เธ„เธฃเธฑเน‰เธ‡เธชเธธเธ”เธ—เน‰เธฒเธข', + mandarin: 'ๆญฅ้ชค 2๏ผšๆœ€็ปˆ็กฎ่ฎค' }, accountDeletionSuccess: { english: @@ -6511,7 +9651,13 @@ export const localizations = { indonesian: 'Akun Anda telah berhasil dihapus (penghapusan lunak). Anda dapat memulihkannya nanti, tetapi Anda harus online untuk melakukannya. Anda akan keluar sekarang.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฎเฅ‡เคŸเคพเค‡เคฏเฅ‹ (เคธเคซเฅเคŸ เคกเคฟเคฒเคฟเคŸ)เฅค เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคชเค›เคฟ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคคเฅเคฏเคธเค•เคพ เคฒเคพเค—เคฟ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคคเคชเคพเคˆเค‚ เค…เคฌ เคธเคพเค‡เคจ เค†เค‰เคŸ เคนเฅเคจเฅเคนเฅเคจเฅ‡เค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฎเฅ‡เคŸเคพเค‡เคฏเฅ‹ (เคธเคซเฅเคŸ เคกเคฟเคฒเคฟเคŸ)เฅค เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคชเค›เคฟ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคคเคฐ เคคเฅเคฏเคธเค•เคพ เคฒเคพเค—เคฟ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคคเคชเคพเคˆเค‚ เค…เคฌ เคธเคพเค‡เคจ เค†เค‰เคŸ เคนเฅเคจเฅเคนเฅเคจเฅ‡เค›เฅค', + hindi: + 'เค†เคชเค•เคพ เค–เคพเคคเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคนเคŸเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ (เคธเฅ‰เคซเฅเคŸ เคกเคฟเคฒเฅ€เคŸ)เฅค เค†เคช เค‡เคธเฅ‡ เคฌเคพเคฆ เคฎเฅ‡เค‚ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚, เคฒเฅ‡เค•เคฟเคจ เค‡เคธเค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เคจเคพ เคšเคพเคนเคฟเคเฅค เค…เคฌ เค†เคช เคธเคพเค‡เคจ เค†เค‰เคŸ เคนเฅ‹ เคœเคพเคเค‚เค—เฅ‡เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€–แ€ปแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ (แ€•แ€ปแ€ฑแ€ฌแ€ทแ€•แ€ปแ€ฑแ€ฌแ€„แ€บแ€ธแ€–แ€ปแ€€แ€บแ€แ€ผแ€„แ€บแ€ธ)แ‹ แ€”แ€ฑแ€ฌแ€€แ€บแ€™แ€พ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹ แ€šแ€แ€ฏ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฝแ€€แ€บแ€™แ€Šแ€บแ‹', + thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธฅเธšเธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง (เธเธฒเธฃเธฅเธšเนเธšเธšเธ™เธธเนˆเธกเธ™เธงเธฅ) เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน„เธ”เน‰เนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡ เนเธ•เนˆเธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเธญเธขเธนเนˆ เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธญเธญเธเธˆเธฒเธเธฃเธฐเธšเธšเธ•เธญเธ™เธ™เธตเน‰', + mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅทฒๆˆๅŠŸๅˆ ้™ค๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จๅฏไปฅ็จๅŽๆขๅค๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟใ€‚ๆ‚จ็Žฐๅœจๅฐ†่ขซ็™ปๅ‡บใ€‚' }, accountDeletionError: { english: 'Failed to delete account: {error}', @@ -6519,7 +9665,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao excluir conta: {error}', tok_pisin: 'I no inap rausim account: {error}', indonesian: 'Gagal menghapus akun: {error}', - nepali: 'เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจ เค…เคธเคซเคฒ: {error}' + nepali: 'เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‰เคจ เค…เคธเคซเคฒ: {error}', + hindi: 'เค–เคพเคคเคพ เคนเคŸเคพเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ: {error}', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€–แ€ปแ€€แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ: {error}', + thai: 'เธฅเธšเธšเธฑเธเธŠเธตเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ: {error}', + mandarin: 'ๅˆ ้™ค่ดฆๆˆทๅคฑ่ดฅ: {error}' }, accountDeletedTitle: { english: 'Account Deleted', @@ -6527,7 +9677,11 @@ export const localizations = { brazilian_portuguese: 'Conta Excluรญda', tok_pisin: 'Account i Raus', indonesian: 'Akun Dihapus', - nepali: 'เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‡เคฏเฅ‹' + nepali: 'เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‡เคฏเฅ‹', + hindi: 'เค–เคพเคคเคพ เคนเคŸเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บ แ€–แ€ปแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธšเธฑเธเธŠเธตเธ–เธนเธเธฅเธšเนเธฅเน‰เธง', + mandarin: '่ดฆๆˆทๅทฒๅˆ ้™ค' }, accountDeletedMessage: { english: @@ -6541,7 +9695,13 @@ export const localizations = { indonesian: 'Akun Anda telah dihapus. Anda dapat memulihkannya untuk mendapatkan kembali akses ke semua data Anda, atau Anda dapat keluar dan kembali ke layar login.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‡เคเค•เฅ‹ เค›เฅค เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เคธเคฌเฅˆ เคกเคพเคŸเคพเคฎเคพ เคชเคนเฅเคเคš เคชเฅเคจ: เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเคจ เคฏเคธเคฒเคพเคˆ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคตเคพ เคคเคชเคพเคˆเค‚ เคฒเค—เค†เค‰เคŸ เค—เคฐเฅ‡เคฐ เคฒเค—เค‡เคจ เคธเฅเค•เฅเคฐเคฟเคจเคฎเคพ เคซเคฐเฅเค•เคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคฎเฅ‡เคŸเคพเค‡เคเค•เฅ‹ เค›เฅค เคคเคชเคพเคˆเค‚ เค†เคซเฅเคจเฅ‹ เคธเคฌเฅˆ เคกเคพเคŸเคพเคฎเคพ เคชเคนเฅเคเคš เคชเฅเคจ: เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเคจ เคฏเคธเคฒเคพเคˆ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›, เคตเคพ เคคเคชเคพเคˆเค‚ เคฒเค—เค†เค‰เคŸ เค—เคฐเฅ‡เคฐ เคฒเค—เค‡เคจ เคธเฅเค•เฅเคฐเคฟเคจเคฎเคพ เคซเคฐเฅเค•เคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค†เคชเค•เคพ เค–เคพเคคเคพ เคนเคŸเคพ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆเฅค เค†เคช เค‡เคธเฅ‡ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐ เค…เคชเคจเฅ‡ เคธเคญเฅ€ เคกเฅ‡เคŸเคพ เคคเค• เคชเคนเฅเค‚เคš เคชเคพ เคธเค•เคคเฅ‡ เคนเฅˆเค‚, เคฏเคพ เคฒเฅ‰เค— เค†เค‰เคŸ เค•เคฐเค•เฅ‡ เคฒเฅ‰เค—เคฟเคจ เคธเฅเค•เฅเคฐเฅ€เคจ เคชเคฐ เคตเคพเคชเคธ เคœเคพ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€›แ€”แ€บ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฝแ€€แ€บแ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€…แ€แ€›แ€„แ€บแ€žแ€ญแ€ฏแ€ท แ€•แ€ผแ€”แ€บแ€žแ€ฝแ€ฌแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธฅเธšเนเธฅเน‰เธง เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธ–เธถเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“เน„เธ”เน‰ เธซเธฃเธทเธญเธญเธญเธเธˆเธฒเธเธฃเธฐเธšเธšเนเธฅเธฐเธเธฅเธฑเธšเน„เธ›เธซเธ™เน‰เธฒเธˆเธญเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš', + mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅทฒๅˆ ้™คใ€‚ๆ‚จๅฏไปฅๆขๅคๅฎƒไปฅ้‡ๆ–ฐ่ฎฟ้—ฎๆ‰€ๆœ‰ๆ•ฐๆฎ๏ผŒๆˆ–็™ปๅ‡บๅนถ่ฟ”ๅ›ž็™ปๅฝ•ๅฑๅน•ใ€‚' }, restoreAccount: { english: 'Restore Account', @@ -6549,7 +9709,11 @@ export const localizations = { brazilian_portuguese: 'Restaurar Conta', tok_pisin: 'Restore Account', indonesian: 'Pulihkan Akun', - nepali: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€•แ€ซ', + thai: 'เธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธต', + mandarin: 'ๆขๅค่ดฆๆˆท' }, restoreAccountConfirmTitle: { english: 'Restore Account?', @@ -6557,7 +9721,11 @@ export const localizations = { brazilian_portuguese: 'Restaurar Conta?', tok_pisin: 'Restore Account?', indonesian: 'Pulihkan Akun?', - nepali: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจเฅ‡?' + nepali: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจเฅ‡?', + hindi: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐเฅ‡เค‚?', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€™แ€œแ€ฌแ€ธ?', + thai: 'เธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธต?', + mandarin: 'ๆขๅค่ดฆๆˆท๏ผŸ' }, restoreAccountConfirmMessage: { english: @@ -6571,7 +9739,13 @@ export const localizations = { indonesian: 'Akun Anda akan dipulihkan sepenuhnya. Semua data Anda akan dapat diakses lagi, dan Anda dapat melanjutkan menggunakan aplikasi secara normal.', nepali: - 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคชเฅ‚เคฐเฅเคฃ เคฐเฅ‚เคชเคฎเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเคฟเคจเฅ‡เค›เฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฌเฅˆ เคกเคพเคŸเคพ เคซเฅ‡เคฐเคฟ เคชเคนเฅเคเคšเคฏเฅ‹เค—เฅเคฏ เคนเฅเคจเฅ‡เค›, เคฐ เคคเคชเคพเคˆเค‚ เคธเคพเคฎเคพเคจเฅเคฏ เคฐเฅ‚เคชเคฎเคพ เคเคช เคชเฅเคฐเคฏเฅ‹เค— เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคชเฅ‚เคฐเฅเคฃ เคฐเฅ‚เคชเคฎเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเคฟเคจเฅ‡เค›เฅค เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเคฌเฅˆ เคกเคพเคŸเคพ เคซเฅ‡เคฐเคฟ เคชเคนเฅเคเคšเคฏเฅ‹เค—เฅเคฏ เคนเฅเคจเฅ‡เค›, เคฐ เคคเคชเคพเคˆเค‚ เคธเคพเคฎเคพเคจเฅเคฏ เคฐเฅ‚เคชเคฎเคพ เคเคช เคชเฅเคฐเคฏเฅ‹เค— เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เค†เคชเค•เคพ เค–เคพเคคเคพ เคชเฅ‚เคฐเฅ€ เคคเคฐเคน เคธเฅ‡ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เคนเฅ‹ เคœเคพเคเค—เคพเฅค เค†เคชเค•เคพ เคธเคญเฅ€ เคกเฅ‡เคŸเคพ เคซเคฟเคฐ เคธเฅ‡ เคชเคนเฅเค‚เคš เคฏเฅ‹เค—เฅเคฏ เคนเฅ‹เค—เคพ, เค”เคฐ เค†เคช เคธเคพเคฎเคพเคจเฅเคฏ เคฐเฅ‚เคช เคธเฅ‡ เคเคช เค•เคพ เค‰เคชเคฏเฅ‹เค— เคœเคพเคฐเฅ€ เคฐเค– เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€Šแ€ทแ€บแ€…แ€ฏแ€ถแ€…แ€ฝแ€ฌ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€™แ€Šแ€บแ‹ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแŠ แ€กแ€€แ€บแ€•แ€บแ€€แ€ญแ€ฏ แ€•แ€ฏแ€ถแ€™แ€พแ€”แ€บแ€†แ€€แ€บแ€žแ€ฏแ€ถแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธเธนเน‰เธ„เธทเธ™เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ เธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน„เธ”เน‰เธญเธตเธเธ„เธฃเธฑเน‰เธ‡ เนเธฅเธฐเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เนเธญเธ›เน„เธ”เน‰เธ•เธฒเธกเธ›เธเธ•เธด', + mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅฎŒๅ…จๆขๅคใ€‚ๆ‚จ็š„ๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†ๅ†ๆฌกๅฏ่ฎฟ้—ฎ๏ผŒๆ‚จๅฏไปฅ็ปง็ปญๆญฃๅธธไฝฟ็”จๅบ”็”จใ€‚' }, accountRestoreSuccess: { english: 'Your account has been successfully restored. Welcome back!', @@ -6580,7 +9754,11 @@ export const localizations = { 'Sua conta foi restaurada com sucesso. Bem-vindo de volta!', tok_pisin: 'Account bilong yu i restore pinis. Welkam bek!', indonesian: 'Akun Anda telah berhasil dipulihkan. Selamat datang kembali!', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเคฟเคฏเฅ‹เฅค เคซเฅ‡เคฐเคฟ เคธเฅเคตเคพเค—เคค เค›!' + nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเคฟเคฏเฅ‹เฅค เคซเฅ‡เคฐเคฟ เคธเฅเคตเคพเค—เคค เค›!', + hindi: 'เค†เคชเค•เคพ เค–เคพเคคเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เคนเฅ‹ เค—เคฏเคพเฅค เคตเคพเคชเคธ เคธเฅเคตเคพเค—เคค เคนเฅˆ!', + burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€•แ€ผแ€”แ€บแ€œแ€ฌแ€žแ€Šแ€ทแ€บแ€กแ€แ€ฝแ€€แ€บ แ€€แ€ผแ€ญแ€ฏแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ!', + thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธเธนเน‰เธ„เธทเธ™เธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง เธขเธดเธ™เธ”เธตเธ•เน‰เธญเธ™เธฃเธฑเธšเธเธฅเธฑเธš!', + mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅทฒๆˆๅŠŸๆขๅคใ€‚ๆฌข่ฟŽๅ›žๆฅ๏ผ' }, accountRestoreError: { english: 'Failed to restore account: {error}', @@ -6588,7 +9766,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao restaurar conta: {error}', tok_pisin: 'I no inap restore account: {error}', indonesian: 'Gagal memulihkan akun: {error}', - nepali: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ: {error}' + nepali: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ: {error}', + hindi: 'เค–เคพเคคเคพ เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ: {error}', + burmese: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ: {error}', + thai: 'เธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธตเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ: {error}', + mandarin: 'ๆขๅค่ดฆๆˆทๅคฑ่ดฅ: {error}' }, signInRequired: { english: 'Sign In Required', @@ -6596,7 +9778,11 @@ export const localizations = { brazilian_portuguese: 'Login Necessรกrio', tok_pisin: 'Mas I Mas Sign In', indonesian: 'Masuk Diperlukan', - nepali: 'เคธเคพเค‡เคจ เค‡เคจ เค†เคตเคถเฅเคฏเค• เค›' + nepali: 'เคธเคพเค‡เคจ เค‡เคจ เค†เคตเคถเฅเคฏเค• เค›', + hindi: 'เคธเคพเค‡เคจ เค‡เคจ เค†เคตเคถเฅเคฏเค•', + burmese: 'แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บ', + thai: 'เธ•เน‰เธญเธ‡เน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš', + mandarin: '้œ€่ฆ็™ปๅฝ•' }, blockContentLoginMessage: { english: @@ -6610,7 +9796,13 @@ export const localizations = { indonesian: 'Kami menyimpan informasi tentang apa yang akan diblokir di akun Anda. Silakan daftar untuk memastikan konten yang diblokir dapat disembunyikan dengan benar.', nepali: - 'เคนเคพเคฎเฅ€ เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพเคฎเคพ เค•เฅ‡ เคฌเฅเคฒเค• เค—เคฐเฅเคจเฅ‡ เคฌเคพเคฐเฅ‡ เคœเคพเคจเค•เคพเคฐเฅ€ เคญเคฃเฅเคกเคพเคฐเคฃ เค—เคฐเฅเค›เฅŒเค‚เฅค เค•เฅƒเคชเคฏเคพ เคฌเฅเคฒเค• เค—เคฐเคฟเคเค•เฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฐเคพเคฎเฅเคฐเคฐเฅ€ เคฒเฅเค•เคพเค‰เคจ เคธเค•เคฟเคจเฅ‡ เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค—เคฐเฅเคจ เคฆเคฐเฅเคคเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคนเคพเคฎเฅ€ เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพเคฎเคพ เค•เฅ‡ เคฌเฅเคฒเค• เค—เคฐเฅเคจเฅ‡ เคฌเคพเคฐเฅ‡ เคœเคพเคจเค•เคพเคฐเฅ€ เคญเคฃเฅเคกเคพเคฐเคฃ เค—เคฐเฅเค›เฅŒเค‚เฅค เค•เฅƒเคชเคฏเคพ เคฌเฅเคฒเค• เค—เคฐเคฟเคเค•เฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฐเคพเคฎเฅเคฐเคฐเฅ€ เคฒเฅเค•เคพเค‰เคจ เคธเค•เคฟเคจเฅ‡ เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค—เคฐเฅเคจ เคฆเคฐเฅเคคเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคนเคฎ เค†เคชเค•เฅ‡ เค–เคพเคคเฅ‡ เคฎเฅ‡เค‚ เค•เฅเคฏเคพ เคฌเฅเคฒเฅ‰เค• เค•เคฐเคจเคพ เคนเฅˆ เค‡เคธเค•เฅ€ เคœเคพเคจเค•เคพเคฐเฅ€ เคธเค‚เค—เฅเคฐเคนเฅ€เคค เค•เคฐเคคเฅ‡ เคนเฅˆเค‚เฅค เคฌเฅเคฒเฅ‰เค• เค•เฅ€ เค—เคˆ เคธเคพเคฎเค—เฅเคฐเฅ€ เค•เฅ‹ เค เฅ€เค• เคธเฅ‡ เค›เคฟเคชเคพเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค•เฅƒเคชเคฏเคพ เคชเค‚เคœเฅ€เค•เคฐเคฃ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€ฝแ€„แ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€•แ€ญแ€แ€บแ€†แ€ญแ€ฏแ€ทแ€™แ€Šแ€บแ€€แ€ญแ€ฏ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ท แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€•แ€ญแ€แ€บแ€†แ€ญแ€ฏแ€ทแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€žแ€„แ€ทแ€บแ€œแ€ปแ€ฑแ€ฌแ€บแ€…แ€ฝแ€ฌ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€›แ€”แ€บ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€•แ€ซแ‹', + thai: 'เน€เธฃเธฒเน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅเน€เธเธตเนˆเธขเธงเธเธฑเธšเธชเธดเนˆเธ‡เธ—เธตเนˆเธ•เน‰เธญเธ‡เธšเธฅเน‡เธญเธเนƒเธ™เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“ เธเธฃเธธเธ“เธฒเธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™เน€เธžเธทเนˆเธญเนƒเธซเน‰เนเธ™เนˆเนƒเธˆเธงเนˆเธฒเธชเธฒเธกเธฒเธฃเธ–เธ‹เนˆเธญเธ™เน€เธ™เธทเน‰เธญเธซเธฒเธ—เธตเนˆเธ–เธนเธเธšเธฅเน‡เธญเธเน„เธ”เน‰เธญเธขเนˆเธฒเธ‡เธ–เธนเธเธ•เน‰เธญเธ‡', + mandarin: 'ๆˆ‘ไปฌๅœจๆ‚จ็š„่ดฆๆˆทไธญๅญ˜ๅ‚จๆœ‰ๅ…ณ่ฆๅฑ่”ฝๅ†…ๅฎน็š„ไฟกๆฏใ€‚่ฏทๆณจๅ†Œไปฅ็กฎไฟ่ขซๅฑ่”ฝ็š„ๅ†…ๅฎนๅฏไปฅๆญฃ็กฎ้š่—ใ€‚' }, connected: { english: 'Connected', @@ -6618,7 +9810,11 @@ export const localizations = { brazilian_portuguese: 'Conectado', tok_pisin: 'i connect pinis', indonesian: 'Terhubung', - nepali: 'เคœเคกเคพเคจ เคญเคฏเฅ‹' + nepali: 'เคœเคกเคพเคจ เคญเคฏเฅ‹', + hindi: 'เค•เคจเฅ‡เค•เฅเคŸ เคนเฅ‹ เค—เคฏเคพ', + burmese: 'แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญเนเธฅเน‰เธง', + mandarin: 'ๅทฒ่ฟžๆŽฅ' }, downloadStatus: { english: 'Download Status', @@ -6626,7 +9822,11 @@ export const localizations = { brazilian_portuguese: 'Status de Download', tok_pisin: 'Download Status', indonesian: 'Status Unduhan', - nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅเคฅเคฟเคคเคฟ' + nepali: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅเคฅเคฟเคคเคฟ', + hindi: 'เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅเคฅเคฟเคคเคฟ', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บ แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑ', + thai: 'เธชเธ–เธฒเธ™เธฐเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”', + mandarin: 'ไธ‹่ฝฝ็Šถๆ€' }, powersyncStatus: { english: 'PowerSync Status', @@ -6634,7 +9834,11 @@ export const localizations = { brazilian_portuguese: 'Status do PowerSync', tok_pisin: 'PowerSync Status', indonesian: 'Status PowerSync', - nepali: 'PowerSync เคธเฅเคฅเคฟเคคเคฟ' + nepali: 'PowerSync เคธเฅเคฅเคฟเคคเคฟ', + hindi: 'PowerSync เคธเฅเคฅเคฟเคคเคฟ', + burmese: 'PowerSync แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑ', + thai: 'เธชเธ–เธฒเธ™เธฐ PowerSync', + mandarin: 'PowerSync ็Šถๆ€' }, networkStatus: { english: 'Network Status', @@ -6642,7 +9846,11 @@ export const localizations = { brazilian_portuguese: 'Status da Rede', tok_pisin: 'Network Status', indonesian: 'Status Jaringan', - nepali: 'เคจเฅ‡เคŸเคตเคฐเฅเค• เคธเฅเคฅเคฟเคคเคฟ' + nepali: 'เคจเฅ‡เคŸเคตเคฐเฅเค• เคธเฅเคฅเคฟเคคเคฟ', + hindi: 'เคจเฅ‡เคŸเคตเคฐเฅเค• เคธเฅเคฅเคฟเคคเคฟ', + burmese: 'แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑ', + thai: 'เธชเธ–เธฒเธ™เธฐเน€เธ„เธฃเธทเธญเธ‚เนˆเธฒเธข', + mandarin: '็ฝ‘็ปœ็Šถๆ€' }, attachmentDownloadProgress: { english: 'Attachment Download Progress', @@ -6650,7 +9858,11 @@ export const localizations = { brazilian_portuguese: 'Progresso de Download de Anexos', tok_pisin: 'Attachment Download Progress', indonesian: 'Kemajuan Unduhan Lampiran', - nepali: 'เคธเค‚เคฒเค—เฅเคจเค• เคกเคพเค‰เคจเคฒเฅ‹เคก เคชเฅเคฐเค—เคคเคฟ' + nepali: 'เคธเค‚เคฒเค—เฅเคจเค• เคกเคพเค‰เคจเคฒเฅ‹เคก เคชเฅเคฐเค—เคคเคฟ', + hindi: 'เคธเค‚เคฒเค—เฅเคจเค• เคกเคพเค‰เคจเคฒเฅ‹เคก เคชเฅเคฐเค—เคคเคฟ', + burmese: 'แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บ แ€แ€ญแ€ฏแ€ธแ€แ€€แ€บแ€™แ€พแ€ฏ', + thai: 'เธ„เธงเธฒเธกเธ„เธทเธšเธซเธ™เน‰เธฒเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เน„เธŸเธฅเนŒเนเธ™เธš', + mandarin: '้™„ไปถไธ‹่ฝฝ่ฟ›ๅบฆ' }, overallProgress: { english: 'Overall Progress', @@ -6658,7 +9870,11 @@ export const localizations = { brazilian_portuguese: 'Progresso Geral', tok_pisin: 'Overall Progress', indonesian: 'Kemajuan Keseluruhan', - nepali: 'เคธเคฎเค—เฅเคฐ เคชเฅเคฐเค—เคคเคฟ' + nepali: 'เคธเคฎเค—เฅเคฐ เคชเฅเคฐเค—เคคเคฟ', + hindi: 'เค•เฅเคฒ เคชเฅเคฐเค—เคคเคฟ', + burmese: 'แ€…แ€ฏแ€…แ€ฏแ€•แ€ฑแ€ซแ€„แ€บแ€ธ แ€แ€ญแ€ฏแ€ธแ€แ€€แ€บแ€™แ€พแ€ฏ', + thai: 'เธ„เธงเธฒเธกเธ„เธทเธšเธซเธ™เน‰เธฒเธฃเธงเธก', + mandarin: 'ๆ€ปไฝ“่ฟ›ๅบฆ' }, currentDownload: { english: 'Current Download', @@ -6666,7 +9882,11 @@ export const localizations = { brazilian_portuguese: 'Download Atual', tok_pisin: 'Current Download', indonesian: 'Unduhan Saat Ini', - nepali: 'เคนเคพเคฒเค•เฅ‹ เคกเคพเค‰เคจเคฒเฅ‹เคก' + nepali: 'เคนเคพเคฒเค•เฅ‹ เคกเคพเค‰เคจเคฒเฅ‹เคก', + hindi: 'เคตเคฐเฅเคคเคฎเคพเคจ เคกเคพเค‰เคจเคฒเฅ‹เคก', + burmese: 'แ€œแ€€แ€บแ€›แ€พแ€ญ แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บ', + thai: 'เธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™', + mandarin: 'ๅฝ“ๅ‰ไธ‹่ฝฝ' }, currentUpload: { english: 'Current Upload', @@ -6674,7 +9894,11 @@ export const localizations = { brazilian_portuguese: 'Upload Atual', tok_pisin: 'Current Upload', indonesian: 'Unggahan Saat Ini', - nepali: 'เคนเคพเคฒเค•เฅ‹ เค…เคชเคฒเฅ‹เคก' + nepali: 'เคนเคพเคฒเค•เฅ‹ เค…เคชเคฒเฅ‹เคก', + hindi: 'เคตเคฐเฅเคคเคฎเคพเคจ เค…เคชเคฒเฅ‹เคก', + burmese: 'แ€œแ€€แ€บแ€›แ€พแ€ญ แ€กแ€•แ€บแ€œแ€ฏแ€’แ€บ', + thai: 'เธเธฒเธฃเธญเธฑเธ›เน‚เธซเธฅเธ”เธ›เธฑเธˆเธˆเธธเธšเธฑเธ™', + mandarin: 'ๅฝ“ๅ‰ไธŠไผ ' }, queueStatus: { english: 'Queue Status', @@ -6682,7 +9906,11 @@ export const localizations = { brazilian_portuguese: 'Status da Fila', tok_pisin: 'Queue Status', indonesian: 'Status Antrian', - nepali: 'เคฒเคพเคฎ เคธเฅเคฅเคฟเคคเคฟ' + nepali: 'เคฒเคพเคฎ เคธเฅเคฅเคฟเคคเคฟ', + hindi: 'เค•เคคเคพเคฐ เคธเฅเคฅเคฟเคคเคฟ', + burmese: 'แ€แ€”แ€บแ€ธแ€…แ€ฎแ€™แ€พแ€ฏ แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑ', + thai: 'เธชเธ–เธฒเธ™เธฐเธ„เธดเธง', + mandarin: '้˜Ÿๅˆ—็Šถๆ€' }, allSynced: { english: 'All files synced', @@ -6690,7 +9918,11 @@ export const localizations = { brazilian_portuguese: 'Todos os arquivos sincronizados', tok_pisin: 'Olgeta file i sync pinis', indonesian: 'Semua file disinkronkan', - nepali: 'เคธเคฌเฅˆ เคซเคพเค‡เคฒเคนเคฐเฅ‚ เคธเคฟเค™เฅเค• เคญเคฏเฅ‹' + nepali: 'เคธเคฌเฅˆ เคซเคพเค‡เคฒเคนเคฐเฅ‚ เคธเคฟเค™เฅเค• เคญเคฏเฅ‹', + hindi: 'เคธเคญเฅ€ เคซเคพเค‡เคฒเฅ‡เค‚ เคธเคฟเค‚เค• เคนเฅ‹ เค—เคˆเค‚', + burmese: 'แ€–แ€ญแ€ฏแ€„แ€บแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน„เธŸเธฅเนŒเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‹เธดเธ‡เธ„เนŒเนเธฅเน‰เธง', + mandarin: 'ๆ‰€ๆœ‰ๆ–‡ไปถๅทฒๅŒๆญฅ' }, signInToViewDownloadStatus: { english: 'Please sign in to view download status and sync information.', @@ -6701,7 +9933,11 @@ export const localizations = { tok_pisin: 'Plis sign in long lukim download status na sync info.', indonesian: 'Silakan masuk untuk melihat status unduhan dan informasi sinkronisasi.', - nepali: 'เค•เฅƒเคชเคฏเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅเคฅเคฟเคคเคฟ เคฐ เคธเคฟเค‚เค• เคœเคพเคจเค•เคพเคฐเฅ€ เคนเฅ‡เคฐเฅเคจ เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + nepali: 'เค•เฅƒเคชเคฏเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅเคฅเคฟเคคเคฟ เคฐ เคธเคฟเค‚เค• เคœเคพเคจเค•เคพเคฐเฅ€ เคนเฅ‡เคฐเฅเคจ เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: 'เค•เฅƒเคชเคฏเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅเคฅเคฟเคคเคฟ เค”เคฐ เคธเคฟเค‚เค• เคœเคพเคจเค•เคพเคฐเฅ€ เคฆเฅ‡เค–เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเคพเค‡เคจ เค‡เคจ เค•เคฐเฅ‡เค‚เฅค', + burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บ แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑแ€”แ€พแ€„แ€ทแ€บ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธ แ€กแ€แ€ปแ€€แ€บแ€กแ€œแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€›แ€”แ€บ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€•แ€ซแ‹', + thai: 'เธเธฃเธธเธ“เธฒเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธ”เธนเธชเธ–เธฒเธ™เธฐเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒ', + mandarin: '่ฏท็™ปๅฝ•ไปฅๆŸฅ็œ‹ไธ‹่ฝฝ็Šถๆ€ๅ’ŒๅŒๆญฅไฟกๆฏใ€‚' }, unsynced: { english: 'Unsynced', @@ -6709,7 +9945,11 @@ export const localizations = { brazilian_portuguese: 'Nรฃo sincronizado', tok_pisin: 'i no sync yet', indonesian: 'Tidak disinkronkan', - nepali: 'เคธเคฟเค™เฅเค• เคญเคเค•เฅ‹ เค›เฅˆเคจ' + nepali: 'เคธเคฟเค™เฅเค• เคญเคเค•เฅ‹ เค›เฅˆเคจ', + hindi: 'เคธเคฟเค‚เค• เคจเคนเฅ€เค‚ เคนเฅเค†', + burmese: 'แ€‘แ€•แ€บแ€แ€ฐแ€™แ€•แ€ผแ€ฏแ€›แ€žแ€ฑแ€ธ', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเน„เธ”เน‰เธ‹เธดเธ‡เธ„เนŒ', + mandarin: 'ๆœชๅŒๆญฅ' }, onboardingCreateProjectTitle: { english: 'Record a Bible, or any other content', @@ -6717,7 +9957,11 @@ export const localizations = { brazilian_portuguese: 'Grave uma Bรญblia ou qualquer outro conteรบdo', tok_pisin: 'Rekodim Baibel o ol narapela samting', indonesian: 'Rekam Alkitab atau konten lainnya', - nepali: 'เคฌเคพเค‡เคฌเคฒ เคตเคพ เค…เคจเฅเคฏ เค•เฅเคจเฅˆ เคชเคจเคฟ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเคพเค‡เคฌเคฒ เคตเคพ เค…เคจเฅเคฏ เค•เฅเคจเฅˆ เคชเคจเคฟ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเคพเค‡เคฌเคฒ เคฏเคพ เค•เฅ‹เคˆ เค…เคจเฅเคฏ เคธเคพเคฎเค—เฅเคฐเฅ€ เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€กแ€แ€ผแ€ฌแ€ธแ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏแ€™แ€†แ€ญแ€ฏ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€•แ€ซ', + thai: 'เธšเธฑเธ™เธ—เธถเธเธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒเธซเธฃเธทเธญเน€เธ™เธทเน‰เธญเธซเธฒเธญเธทเนˆเธ™เน†', + mandarin: 'ๅฝ•ๅˆถๅœฃ็ปๆˆ–ไปปไฝ•ๅ…ถไป–ๅ†…ๅฎน' }, onboardingCreateProjectSubtitle: { english: 'Start by creating your first project', @@ -6725,7 +9969,11 @@ export const localizations = { brazilian_portuguese: 'Comece criando seu primeiro projeto', tok_pisin: 'Stat long mekim nupela projek', indonesian: 'Mulai dengan membuat proyek pertama Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เคชเคนเคฟเคฒเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅ‡เคฐ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เคชเคนเคฟเคฒเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅ‡เคฐ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเคพ เคชเคนเคฒเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฌเคจเคพเค•เคฐ เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€•แ€‘แ€™แ€†แ€ฏแ€ถแ€ธ แ€•แ€›แ€ฑแ€ฌแ€‚แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€แ€ผแ€„แ€บแ€ธแ€–แ€ผแ€„แ€ทแ€บ แ€…แ€แ€„แ€บแ€•แ€ซ', + thai: 'เน€เธฃเธดเนˆเธกเธ•เน‰เธ™เธ”เน‰เธงเธขเธเธฒเธฃเธชเธฃเน‰เธฒเธ‡เน‚เธ›เธฃเน€เธˆเธเธ•เนŒเนเธฃเธเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: '้€š่ฟ‡ๅˆ›ๅปบๆ‚จ็š„็ฌฌไธ€ไธช้กน็›ฎๅผ€ๅง‹' }, onboardingCreateProjectExample: { english: 'Stories', @@ -6733,7 +9981,11 @@ export const localizations = { brazilian_portuguese: 'Histรณrias', tok_pisin: 'Stori', indonesian: 'Cerita', - nepali: 'เค•เคฅเคพเคนเคฐเฅ‚' + nepali: 'เค•เคฅเคพเคนเคฐเฅ‚', + hindi: 'เค•เคนเคพเคจเคฟเคฏเคพเค', + burmese: 'แ€•แ€ฏแ€ถแ€•แ€ผแ€„แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เน€เธฃเธทเนˆเธญเธ‡เธฃเธฒเธง', + mandarin: 'ๆ•…ไบ‹' }, onboardingCreateProjectDescription: { english: 'Example project name', @@ -6741,7 +9993,11 @@ export const localizations = { brazilian_portuguese: 'Nome do projeto de exemplo', tok_pisin: 'Nem bilong projek olsem', indonesian: 'Nama proyek contoh', - nepali: 'เค‰เคฆเคพเคนเคฐเคฃ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคพเคฎ' + nepali: 'เค‰เคฆเคพเคนเคฐเคฃ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคพเคฎ', + hindi: 'เค‰เคฆเคพเคนเคฐเคฃ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคจเคพเคฎ', + burmese: 'แ€ฅแ€•แ€™แ€ฌ แ€•แ€›แ€ฑแ€ฌแ€‚แ€ปแ€€แ€บ แ€กแ€™แ€Šแ€บ', + thai: 'เธŠเธทเนˆเธญเน‚เธ›เธฃเน€เธˆเธเธ•เนŒเธ•เธฑเธงเธญเธขเนˆเธฒเธ‡', + mandarin: '็คบไพ‹้กน็›ฎๅ็งฐ' }, onboardingCreateProject: { english: 'Create Project', @@ -6749,7 +10005,11 @@ export const localizations = { brazilian_portuguese: 'Criar Projeto', tok_pisin: 'Mekim Projek', indonesian: 'Buat Proyek', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฌเคจเคพเคเค‚', + burmese: 'แ€•แ€›แ€ฑแ€ฌแ€‚แ€ปแ€€แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เน‚เธ›เธฃเน€เธˆเธเธ•เนŒ', + mandarin: 'ๅˆ›ๅปบ้กน็›ฎ' }, onboardingCreateQuestTitle: { english: 'Organize your content', @@ -6757,7 +10017,11 @@ export const localizations = { brazilian_portuguese: 'Organize seu conteรบdo', tok_pisin: 'Oganaisim samting bilong yu', indonesian: 'Organisir konten Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เคธเคพเคฎเค—เฅเคฐเฅ€ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเฅ€ เคธเคพเคฎเค—เฅเคฐเฅ€ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€…แ€ฎแ€…แ€‰แ€บแ€•แ€ซ', + thai: 'เธˆเธฑเธ”เธฃเธฐเน€เธšเธตเธขเธšเน€เธ™เธทเน‰เธญเธซเธฒเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: 'ๆ•ด็†ๆ‚จ็š„ๅ†…ๅฎน' }, onboardingCreateQuestSubtitle: { english: 'Add quests to break down your project into manageable pieces', @@ -6768,7 +10032,13 @@ export const localizations = { indonesian: 'Tambahkan quest untuk membagi proyek Anda menjadi bagian yang dapat dikelola', nepali: - 'เค†เคซเฅเคจเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฒเคพเคˆ เคตเฅเคฏเคตเคธเฅเคฅเคพเคชเคจ เคฏเฅ‹เค—เฅเคฏ เคŸเฅเค•เฅเคฐเคพเคนเคฐเฅ‚เคฎเคพ เคตเคฟเคญเคพเคœเคจ เค—เคฐเฅเคจ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚ เคฅเคชเฅเคจเฅเคนเฅ‹เคธเฅ' + 'เค†เคซเฅเคจเฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฒเคพเคˆ เคตเฅเคฏเคตเคธเฅเคฅเคพเคชเคจ เคฏเฅ‹เค—เฅเคฏ เคŸเฅเค•เฅเคฐเคพเคนเคฐเฅ‚เคฎเคพ เคตเคฟเคญเคพเคœเคจ เค—เคฐเฅเคจ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚ เคฅเคชเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: + 'เค…เคชเคจเฅ‡ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค•เฅ‹ เคชเฅเคฐเคฌเค‚เคงเคจเฅ€เคฏ เคŸเฅเค•เคกเคผเฅ‹เค‚ เคฎเฅ‡เค‚ เคตเคฟเคญเคพเคœเคฟเคค เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค•เฅเคตเฅ‡เคธเฅเคŸ เคœเฅ‹เคกเคผเฅ‡เค‚', + burmese: + 'แ€žแ€„แ€บแ แ€•แ€›แ€ฑแ€ฌแ€‚แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€…แ€ฎแ€™แ€ถแ€แ€”แ€ทแ€บแ€แ€ฝแ€ฒแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€กแ€–แ€ผแ€…แ€บ แ€แ€ฝแ€ฒแ€›แ€”แ€บ quest แ€™แ€ปแ€ฌแ€ธ แ€‘แ€Šแ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธžเธดเนˆเธกเน€เธ„เธงเธชเธ•เนŒเน€เธžเธทเนˆเธญเนเธšเนˆเธ‡เน‚เธ›เธฃเน€เธˆเธเธ•เนŒเธ‚เธญเธ‡เธ„เธธเธ“เธญเธญเธเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ—เธตเนˆเธˆเธฑเธ”เธเธฒเธฃเน„เธ”เน‰', + mandarin: 'ๆทปๅŠ ไปปๅŠกไปฅๅฐ†ๆ‚จ็š„้กน็›ฎๅˆ†่งฃไธบๅฏ็ฎก็†็š„้ƒจๅˆ†' }, onboardingQuestExample1: { english: 'Story 1', @@ -6776,7 +10046,11 @@ export const localizations = { brazilian_portuguese: 'Histรณria 1', tok_pisin: 'Stori 1', indonesian: 'Cerita 1', - nepali: 'เค•เคฅเคพ เฅง' + nepali: 'เค•เคฅเคพ เฅง', + hindi: 'เค•เคนเคพเคจเฅ€ 1', + burmese: 'แ€•แ€ฏแ€ถแ€•แ€ผแ€„แ€บ แ', + thai: 'เน€เธฃเธทเนˆเธญเธ‡เธฃเธฒเธง 1', + mandarin: 'ๆ•…ไบ‹ 1' }, onboardingQuestExample2: { english: 'Story 2', @@ -6784,7 +10058,11 @@ export const localizations = { brazilian_portuguese: 'Histรณria 2', tok_pisin: 'Stori 2', indonesian: 'Cerita 2', - nepali: 'เค•เคฅเคพ เฅจ' + nepali: 'เค•เคฅเคพ เฅจ', + hindi: 'เค•เคนเคพเคจเฅ€ 2', + burmese: 'แ€•แ€ฏแ€ถแ€•แ€ผแ€„แ€บ แ‚', + thai: 'เน€เธฃเธทเนˆเธญเธ‡เธฃเธฒเธง 2', + mandarin: 'ๆ•…ไบ‹ 2' }, onboardingCreateQuest: { english: 'Create Quest', @@ -6792,7 +10070,11 @@ export const localizations = { brazilian_portuguese: 'Criar Missรฃo', tok_pisin: 'Mekim Kwest', indonesian: 'Buat Quest', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฌเคจเคพเคเค‚', + burmese: 'Quest แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ๅˆ›ๅปบไปปๅŠก' }, onboardingRecordAudioTitle: { english: 'Start recording', @@ -6800,7 +10082,11 @@ export const localizations = { brazilian_portuguese: 'Comece a gravar', tok_pisin: 'Stat long rekodim', indonesian: 'Mulai merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€…แ€แ€„แ€บแ€•แ€ซ', + thai: 'เน€เธฃเธดเนˆเธกเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅผ€ๅง‹ๅฝ•ๅˆถ' }, onboardingRecordAudioSubtitle: { english: 'Hold the button to record, or slide to record anytime you talk', @@ -6813,7 +10099,14 @@ export const localizations = { indonesian: 'Tahan tombol untuk merekam, atau geser untuk merekam kapan saja Anda berbicara', nepali: - 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคฌเคŸเคจ เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅ, เคตเคพ เคคเคชเคพเคˆเค‚ เคฌเฅ‹เคฒเฅเคฆเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคธเฅเคฒเคพเค‡เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคฌเคŸเคจ เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅ, เคตเคพ เคคเคชเคพเคˆเค‚ เคฌเฅ‹เคฒเฅเคฆเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคธเฅเคฒเคพเค‡เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: + 'เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฌเคŸเคจ เคฆเคฌเคพเค เคฐเค–เฅ‡เค‚, เคฏเคพ เคœเคฌ เคญเฅ€ เค†เคช เคฌเฅ‹เคฒเฅ‡เค‚ เคคเฅ‹ เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเฅเคฒเคพเค‡เคก เค•เคฐเฅ‡เค‚', + burmese: + 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€œแ€ฏแ€แ€บแ€€แ€ญแ€ฏ แ€€แ€ญแ€ฏแ€„แ€บแ€‘แ€ฌแ€ธแ€•แ€ซ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€žแ€„แ€บแ€…แ€€แ€ฌแ€ธแ€•แ€ผแ€ฑแ€ฌแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€›แ€ฝแ€พแ€ฑแ€ทแ€•แ€ซ', + thai: + 'เธเธ”เธ›เธธเนˆเธกเธ„เน‰เธฒเธ‡เน„เธงเน‰เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธ เธซเธฃเธทเธญเน€เธฅเธทเนˆเธญเธ™เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเน€เธกเธทเนˆเธญเนƒเธ”เธเน‡เธ•เธฒเธกเธ—เธตเนˆเธ„เธธเธ“เธžเธนเธ”', + mandarin: 'ๆŒ‰ไฝๆŒ‰้’ฎๅฝ•ๅˆถ๏ผŒๆˆ–ๆป‘ๅŠจไปฅๅœจๆ‚จ่ฏด่ฏๆ—ถ้šๆ—ถๅฝ•ๅˆถ' }, onboardingRecordMethod1: { english: 'Hold button to record', @@ -6821,7 +10114,11 @@ export const localizations = { brazilian_portuguese: 'Mantenha pressionado para gravar', tok_pisin: 'Holim button long rekodim', indonesian: 'Tahan tombol untuk merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคฌเคŸเคจ เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคฌเคŸเคจ เคฅเคฟเคšเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฌเคŸเคจ เคฆเคฌเคพเค เคฐเค–เฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€œแ€ฏแ€แ€บแ€€แ€ญแ€ฏ แ€€แ€ญแ€ฏแ€„แ€บแ€‘แ€ฌแ€ธแ€•แ€ซ', + thai: 'เธเธ”เธ›เธธเนˆเธกเธ„เน‰เธฒเธ‡เน„เธงเน‰เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๆŒ‰ไฝๆŒ‰้’ฎๅฝ•ๅˆถ' }, onboardingRecordMethod2: { english: 'Slide to record anytime you talk', @@ -6829,7 +10126,11 @@ export const localizations = { brazilian_portuguese: 'Deslize para gravar quando falar', tok_pisin: 'Slipim long rekodim taim yu toktok', indonesian: 'Geser untuk merekam kapan saja Anda berbicara', - nepali: 'เคฌเฅ‹เคฒเฅเคฆเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคธเฅเคฒเคพเค‡เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเฅ‹เคฒเฅเคฆเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคฌเฅ‡เคฒเคพ เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ เคธเฅเคฒเคพเค‡เคก เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคœเคฌ เคญเฅ€ เค†เคช เคฌเฅ‹เคฒเฅ‡เค‚ เคคเฅ‹ เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเฅเคฒเคพเค‡เคก เค•เคฐเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ€…แ€€แ€ฌแ€ธแ€•แ€ผแ€ฑแ€ฌแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€›แ€ฝแ€พแ€ฑแ€ทแ€•แ€ซ', + thai: 'เน€เธฅเธทเนˆเธญเธ™เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเน€เธกเธทเนˆเธญเนƒเธ”เธเน‡เธ•เธฒเธกเธ—เธตเนˆเธ„เธธเธ“เธžเธนเธ”', + mandarin: 'ๆป‘ๅŠจไปฅๅœจๆ‚จ่ฏด่ฏๆ—ถ้šๆ—ถๅฝ•ๅˆถ' }, onboardingStartRecording: { english: 'Start Recording', @@ -6837,7 +10138,11 @@ export const localizations = { brazilian_portuguese: 'Iniciar Gravaรงรฃo', tok_pisin: 'Stat Rekodim', indonesian: 'Mulai Merekam', - nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€…แ€แ€„แ€บแ€•แ€ซ', + thai: 'เน€เธฃเธดเนˆเธกเธšเธฑเธ™เธ—เธถเธ', + mandarin: 'ๅผ€ๅง‹ๅฝ•ๅˆถ' }, onboardingInviteTitle: { english: 'Work together', @@ -6845,7 +10150,11 @@ export const localizations = { brazilian_portuguese: 'Trabalhe juntos', tok_pisin: 'Wok wantaim', indonesian: 'Bekerja bersama', - nepali: 'เคธเคเค—เฅˆ เค•เคพเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคเค—เฅˆ เค•เคพเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคพเคฅ เคฎเฅ‡เค‚ เค•เคพเคฎ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€แ€ฐแ€แ€€แ€ฝ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€•แ€ซ', + thai: 'เธ—เธณเธ‡เธฒเธ™เธฃเนˆเธงเธกเธเธฑเธ™', + mandarin: 'ไธ€่ตทๅทฅไฝœ' }, onboardingInviteSubtitle: { english: @@ -6859,7 +10168,14 @@ export const localizations = { indonesian: 'Undang orang lain untuk berkolaborasi. Mereka akan menerima notifikasi dan melihat proyek Anda di daftar mereka', nepali: - 'เค…เคฐเฅ‚เคฒเคพเคˆ เคธเคนเคฏเฅ‹เค— เค—เคฐเฅเคจ เคจเคฟเคฎเฅเคคเฅ‹ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅเฅค เค‰เคจเฅ€เคนเคฐเฅ‚เคฒเฅ‡ เคธเฅ‚เคšเคจเคพ เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเคจเฅ‡เค›เคจเฅ เคฐ เค‰เคจเฅ€เคนเคฐเฅ‚เค•เฅ‹ เคธเฅ‚เคšเฅ€เคฎเคพ เคคเคชเคพเคˆเค‚เค•เฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฆเฅ‡เค–เฅเคจเฅ‡เค›เคจเฅ' + 'เค…เคฐเฅ‚เคฒเคพเคˆ เคธเคนเคฏเฅ‹เค— เค—เคฐเฅเคจ เคจเคฟเคฎเฅเคคเฅ‹ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅเฅค เค‰เคจเฅ€เคนเคฐเฅ‚เคฒเฅ‡ เคธเฅ‚เคšเคจเคพ เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเคจเฅ‡เค›เคจเฅ เคฐ เค‰เคจเฅ€เคนเคฐเฅ‚เค•เฅ‹ เคธเฅ‚เคšเฅ€เคฎเคพ เคคเคชเคพเคˆเค‚เค•เฅ‹ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฆเฅ‡เค–เฅเคจเฅ‡เค›เคจเฅ', + hindi: + 'เคฆเฅ‚เคธเคฐเฅ‹เค‚ เค•เฅ‹ เคธเคนเคฏเฅ‹เค— เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฐเฅ‡เค‚เฅค เค‰เคจเฅเคนเฅ‡เค‚ เคเค• เคธเฅ‚เคšเคจเคพ เคฎเคฟเคฒเฅ‡เค—เฅ€ เค”เคฐ เคตเฅ‡ เค…เคชเคจเฅ€ เคธเฅ‚เคšเฅ€ เคฎเฅ‡เค‚ เค†เคชเค•เคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฆเฅ‡เค–เฅ‡เค‚เค—เฅ‡', + burmese: + 'แ€กแ€แ€ผแ€ฌแ€ธแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€ฐแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€”แ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€•แ€ซแ‹ แ€žแ€ฐแ€แ€ญแ€ฏแ€ทแ€žแ€Šแ€บ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€แ€ปแ€€แ€บแ€แ€…แ€บแ€แ€ฏ แ€›แ€›แ€พแ€ญแ€™แ€Šแ€บแ€–แ€ผแ€…แ€บแ€•แ€ผแ€ฎแ€ธ แ€žแ€ฐแ€แ€ญแ€ฏแ€ทแ แ€…แ€ฌแ€›แ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€žแ€„แ€บแ แ€•แ€›แ€ฑแ€ฌแ€‚แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€™แ€ผแ€„แ€บแ€›แ€™แ€Šแ€บ', + thai: + 'เน€เธŠเธดเธเธœเธนเน‰เธญเธทเนˆเธ™เนƒเธซเน‰เธฃเนˆเธงเธกเธกเธทเธญเธเธฑเธ™ เธžเธงเธเน€เธ‚เธฒเธˆเธฐเน„เธ”เน‰เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธฅเธฐเน€เธซเน‡เธ™เน‚เธ›เธฃเน€เธˆเธเธ•เนŒเธ‚เธญเธ‡เธ„เธธเธ“เนƒเธ™เธฃเธฒเธขเธเธฒเธฃเธ‚เธญเธ‡เธžเธงเธเน€เธ‚เธฒ', + mandarin: '้‚€่ฏทไป–ไบบๅไฝœใ€‚ไป–ไปฌๅฐ†ๆ”ถๅˆฐ้€š็Ÿฅๅนถๅœจไป–ไปฌ็š„ๅˆ—่กจไธญ็œ‹ๅˆฐๆ‚จ็š„้กน็›ฎ' }, onboardingInviteBenefit1: { english: 'They receive a notification', @@ -6867,7 +10183,11 @@ export const localizations = { brazilian_portuguese: 'Eles recebem uma notificaรงรฃo', tok_pisin: 'Ol kisim notis', indonesian: 'Mereka menerima notifikasi', - nepali: 'เค‰เคจเฅ€เคนเคฐเฅ‚เคฒเฅ‡ เคธเฅ‚เคšเคจเคพ เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเค›เคจเฅ' + nepali: 'เค‰เคจเฅ€เคนเคฐเฅ‚เคฒเฅ‡ เคธเฅ‚เคšเคจเคพ เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเค›เคจเฅ', + hindi: 'เค‰เคจเฅเคนเฅ‡เค‚ เคเค• เคธเฅ‚เคšเคจเคพ เคฎเคฟเคฒเคคเฅ€ เคนเฅˆ', + burmese: 'แ€žแ€ฐแ€แ€ญแ€ฏแ€ทแ€žแ€Šแ€บ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€แ€ปแ€€แ€บแ€แ€…แ€บแ€แ€ฏ แ€›แ€›แ€พแ€ญแ€žแ€Šแ€บ', + thai: 'เธžเธงเธเน€เธ‚เธฒเน„เธ”เน‰เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™', + mandarin: 'ไป–ไปฌไผšๆ”ถๅˆฐ้€š็Ÿฅ' }, onboardingInviteBenefit2: { english: 'Project appears in their list', @@ -6875,7 +10195,11 @@ export const localizations = { brazilian_portuguese: 'O projeto aparece em sua lista', tok_pisin: 'Projek i kamap long list bilong ol', indonesian: 'Proyek muncul di daftar mereka', - nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค‰เคจเฅ€เคนเคฐเฅ‚เค•เฅ‹ เคธเฅ‚เคšเฅ€เคฎเคพ เคฆเฅ‡เค–เคฟเคจเฅเค›' + nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค‰เคจเฅ€เคนเคฐเฅ‚เค•เฅ‹ เคธเฅ‚เคšเฅ€เคฎเคพ เคฆเฅ‡เค–เคฟเคจเฅเค›', + hindi: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค‰เคจเค•เฅ€ เคธเฅ‚เคšเฅ€ เคฎเฅ‡เค‚ เคฆเคฟเค–เคพเคˆ เคฆเฅ‡เคคเคพ เคนเฅˆ', + burmese: 'แ€•แ€›แ€ฑแ€ฌแ€‚แ€ปแ€€แ€บแ€žแ€Šแ€บ แ€žแ€ฐแ€แ€ญแ€ฏแ€ทแ แ€…แ€ฌแ€›แ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ฑแ€ซแ€บแ€œแ€ฌแ€žแ€Šแ€บ', + thai: 'เน‚เธ›เธฃเน€เธˆเธเธ•เนŒเธ›เธฃเธฒเธเธเนƒเธ™เธฃเธฒเธขเธเธฒเธฃเธ‚เธญเธ‡เธžเธงเธเน€เธ‚เธฒ', + mandarin: '้กน็›ฎๅ‡บ็Žฐๅœจไป–ไปฌ็š„ๅˆ—่กจไธญ' }, onboardingInviteCollaborators: { english: 'Invite Collaborators', @@ -6883,7 +10207,11 @@ export const localizations = { brazilian_portuguese: 'Convidar Colaboradores', tok_pisin: 'Singim Ol Wokman', indonesian: 'Undang Kolaborator', - nepali: 'เคธเคนเค•เคฐเฅเคฎเฅ€เคนเคฐเฅ‚เคฒเคพเคˆ เคจเคฟเคฎเฅเคคเฅ‹ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคนเค•เคฐเฅเคฎเฅ€เคนเคฐเฅ‚เคฒเคพเคˆ เคจเคฟเคฎเฅเคคเฅ‹ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคนเคฏเฅ‹เค—เคฟเคฏเฅ‹เค‚ เค•เฅ‹ เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ฐแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€•แ€ซ', + thai: 'เน€เธŠเธดเธเธœเธนเน‰เธฃเนˆเธงเธกเธ‡เธฒเธ™', + mandarin: '้‚€่ฏทๅไฝœ่€…' }, onboardingContinue: { english: 'Continue', @@ -6891,7 +10219,11 @@ export const localizations = { brazilian_portuguese: 'Continuar', tok_pisin: 'Gohet', indonesian: 'Lanjutkan', - nepali: 'เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคœเคพเคฐเฅ€ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคœเคพเคฐเฅ€ เคฐเค–เฅ‡เค‚', + burmese: 'แ€†แ€€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซ', + thai: 'เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญ', + mandarin: '็ปง็ปญ' }, onboardingBible: { english: 'Bible', @@ -6899,7 +10231,11 @@ export const localizations = { brazilian_portuguese: 'Bรญblia', tok_pisin: 'Baibel', indonesian: 'Alkitab', - nepali: 'เคฌเคพเค‡เคฌเคฒ' + nepali: 'เคฌเคพเค‡เคฌเคฒ', + hindi: 'เคฌเคพเค‡เคฌเคฒ', + burmese: 'แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ', + thai: 'เธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒ', + mandarin: 'ๅœฃ็ป' }, onboardingOther: { english: 'Other', @@ -6907,7 +10243,11 @@ export const localizations = { brazilian_portuguese: 'Outro', tok_pisin: 'Narapela', indonesian: 'Lainnya', - nepali: 'เค…เคจเฅเคฏ' + nepali: 'เค…เคจเฅเคฏ', + hindi: 'เค…เคจเฅเคฏ', + burmese: 'แ€กแ€แ€ผแ€ฌแ€ธ', + thai: 'เธญเธทเนˆเธ™เน†', + mandarin: 'ๅ…ถไป–' }, onboardingBibleSelectBookTitle: { english: 'Select a Book', @@ -6915,7 +10255,11 @@ export const localizations = { brazilian_portuguese: 'Selecione um Livro', tok_pisin: 'Pilim Buk', indonesian: 'Pilih Buku', - nepali: 'เคเค‰เคŸเคพ เคชเฅเคธเฅเคคเค• เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคเค‰เคŸเคพ เคชเฅเคธเฅเคคเค• เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเค• เคชเฅเคธเฅเคคเค• เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€…แ€ฌแ€กแ€ฏแ€•แ€บแ€แ€…แ€บแ€กแ€ฏแ€•แ€บแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธซเธ™เธฑเธ‡เธชเธทเธญ', + mandarin: '้€‰ๆ‹ฉไธ€ๆœฌไนฆ' }, onboardingBibleSelectBookSubtitle: { english: 'Choose which book of the Bible to translate', @@ -6923,7 +10267,11 @@ export const localizations = { brazilian_portuguese: 'Escolha qual livro da Bรญblia traduzir', tok_pisin: 'Pilim wanpela buk bilong Baibel long tanim', indonesian: 'Pilih buku Alkitab mana yang akan diterjemahkan', - nepali: 'เคฌเคพเค‡เคฌเคฒเค•เฅ‹ เค•เฅเคจ เคชเฅเคธเฅเคคเค• เค…เคจเฅเคตเคพเคฆ เค—เคฐเฅเคจเฅ‡ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเคพเค‡เคฌเคฒเค•เฅ‹ เค•เฅเคจ เคชเฅเคธเฅเคคเค• เค…เคจเฅเคตเคพเคฆ เค—เคฐเฅเคจเฅ‡ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคšเฅเคจเฅ‡เค‚ เค•เคฟ เคฌเคพเค‡เคฌเคฒ เค•เฅ€ เค•เฅŒเคจ เคธเฅ€ เคชเฅเคธเฅเคคเค• เค•เคพ เค…เคจเฅเคตเคพเคฆ เค•เคฐเคจเคพ เคนเฅˆ', + burmese: 'แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌแ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บ แ€…แ€ฌแ€กแ€ฏแ€•แ€บแ€€แ€ญแ€ฏ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€›แ€™แ€Šแ€บแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธซเธ™เธฑเธ‡เธชเธทเธญเน€เธฅเนˆเธกเน„เธซเธ™เธ‚เธญเธ‡เธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒเธ—เธตเนˆเธˆเธฐเนเธ›เธฅ', + mandarin: '้€‰ๆ‹ฉ่ฆ็ฟป่ฏ‘็š„ๅœฃ็ปไนฆ็ฑ' }, onboardingBibleBookExample1: { english: 'Genesis', @@ -6931,7 +10279,11 @@ export const localizations = { brazilian_portuguese: 'Gรชnesis', tok_pisin: 'Jenesis', indonesian: 'Kejadian', - nepali: 'เค‰เคคเฅเคชเคคเฅเคคเคฟ' + nepali: 'เค‰เคคเฅเคชเคคเฅเคคเคฟ', + hindi: 'เค‰เคคเฅเคชเคคเฅเคคเคฟ', + burmese: 'แ€€แ€ฌแ€œแ€กแ€…', + thai: 'เธ›เธเธกเธเธฒเธฅ', + mandarin: 'ๅˆ›ไธ–่ฎฐ' }, onboardingBibleBookExample2: { english: 'Matthew', @@ -6939,7 +10291,11 @@ export const localizations = { brazilian_portuguese: 'Mateus', tok_pisin: 'Matyu', indonesian: 'Matius', - nepali: 'เคฎเคคเฅเคคเฅ€' + nepali: 'เคฎเคคเฅเคคเฅ€', + hindi: 'เคฎเคคเฅเคคเฅ€', + burmese: 'แ€™แ€ฟแ€ฒ', + thai: 'เธกเธฑเธ—เธ˜เธดเธง', + mandarin: '้ฉฌๅคช็ฆ้Ÿณ' }, onboardingBibleCreateChapterTitle: { english: 'Create Chapter Quests', @@ -6947,7 +10303,11 @@ export const localizations = { brazilian_portuguese: 'Criar Quests de Capรญtulos', tok_pisin: 'Mekim Ol Kwest bilong Kapitol', indonesian: 'Buat Quest Bab', - nepali: 'เค…เคงเฅเคฏเคพเคฏ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคงเฅเคฏเคพเคฏ เค•เฅเคตเฅ‡เคธเฅเคŸเคนเคฐเฅ‚ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคงเฅเคฏเคพเคฏ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฌเคจเคพเคเค‚', + burmese: 'แ€กแ€แ€”แ€บแ€ธ Quest แ€™แ€ปแ€ฌแ€ธ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เน€เธ„เธงเธชเธ•เนŒเธšเธ—', + mandarin: 'ๅˆ›ๅปบ็ซ ่Š‚ไปปๅŠก' }, onboardingBibleCreateChapterSubtitle: { english: 'Each chapter becomes a quest you can work on', @@ -6957,7 +10317,11 @@ export const localizations = { 'Cada capรญtulo se torna uma quest em que vocรช pode trabalhar', tok_pisin: 'Olgeta kapitol i kamap wanpela kwest yu ken wok long en', indonesian: 'Setiap bab menjadi quest yang dapat Anda kerjakan', - nepali: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เค…เคงเฅเคฏเคพเคฏ เคเค‰เคŸเคพ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฌเคจเฅเค› เคœเคธเคฎเคพ เคคเคชเคพเคˆเค‚ เค•เคพเคฎ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›' + nepali: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เค…เคงเฅเคฏเคพเคฏ เคเค‰เคŸเคพ เค•เฅเคตเฅ‡เคธเฅเคŸ เคฌเคจเฅเค› เคœเคธเคฎเคพ เคคเคชเคพเคˆเค‚ เค•เคพเคฎ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›', + hindi: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เค…เคงเฅเคฏเคพเคฏ เคเค• เค•เฅเคตเฅ‡เคธเฅเคŸ เคฌเคจ เคœเคพเคคเคพ เคนเฅˆ เคœเคฟเคธ เคชเคฐ เค†เคช เค•เคพเคฎ เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚', + burmese: 'แ€กแ€แ€”แ€บแ€ธแ€แ€…แ€บแ€แ€”แ€บแ€ธแ€…แ€ฎแ€žแ€Šแ€บ แ€žแ€„แ€บแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌ quest แ€แ€…แ€บแ€แ€ฏ แ€–แ€ผแ€…แ€บแ€œแ€ฌแ€žแ€Šแ€บ', + thai: 'เนเธ•เนˆเธฅเธฐเธšเธ—เธˆเธฐเธเธฅเธฒเธขเน€เธ›เน‡เธ™เน€เธ„เธงเธชเธ•เนŒเธ—เธตเนˆเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธ—เธณเธ‡เธฒเธ™เน„เธ”เน‰', + mandarin: 'ๆฏไธ€็ซ ้ƒฝๆˆไธบไธ€ไธชๆ‚จๅฏไปฅๅค„็†็š„ไปปๅŠก' }, onboardingBibleChapterExample1: { english: 'Chapter 1', @@ -6965,7 +10329,11 @@ export const localizations = { brazilian_portuguese: 'Capรญtulo 1', tok_pisin: 'Kapitol 1', indonesian: 'Bab 1', - nepali: 'เค…เคงเฅเคฏเคพเคฏ เฅง' + nepali: 'เค…เคงเฅเคฏเคพเคฏ เฅง', + hindi: 'เค…เคงเฅเคฏเคพเคฏ 1', + burmese: 'แ€กแ€แ€”แ€บแ€ธ แ', + thai: 'เธšเธ—เธ—เธตเนˆ 1', + mandarin: '็ฌฌ1็ซ ' }, onboardingBibleChapterExample2: { english: 'Chapter 2', @@ -6973,7 +10341,11 @@ export const localizations = { brazilian_portuguese: 'Capรญtulo 2', tok_pisin: 'Kapitol 2', indonesian: 'Bab 2', - nepali: 'เค…เคงเฅเคฏเคพเคฏ เฅจ' + nepali: 'เค…เคงเฅเคฏเคพเคฏ เฅจ', + hindi: 'เค…เคงเฅเคฏเคพเคฏ 2', + burmese: 'แ€กแ€แ€”แ€บแ€ธ แ‚', + thai: 'เธšเธ—เธ—เธตเนˆ 2', + mandarin: '็ฌฌ2็ซ ' }, onboardingVisionTitle: { english: 'Every language. Every culture.', @@ -6981,7 +10353,11 @@ export const localizations = { brazilian_portuguese: 'Cada idioma. Cada cultura.', tok_pisin: 'Olgeta tokples. Olgeta kalsa.', indonesian: 'Setiap bahasa. Setiap budaya.', - nepali: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคญเคพเคทเคพเฅค เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคธเค‚เคธเฅเค•เฅƒเคคเคฟเฅค' + nepali: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคญเคพเคทเคพเฅค เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคธเค‚เคธเฅเค•เฅƒเคคเคฟเฅค', + hindi: 'เคนเคฐ เคญเคพเคทเคพเฅค เคนเคฐ เคธเค‚เคธเฅเค•เฅƒเคคเคฟเฅค', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€แ€ญแ€ฏแ€„แ€บแ€ธแ‹ แ€šแ€‰แ€บแ€€แ€ปแ€ฑแ€ธแ€™แ€พแ€ฏแ€แ€ญแ€ฏแ€„แ€บแ€ธแ‹', + thai: 'เธ—เธธเธเธ เธฒเธฉเธฒ เธ—เธธเธเธงเธฑเธ’เธ™เธ˜เธฃเธฃเธก', + mandarin: 'ๆฏ็ง่ฏญ่จ€ใ€‚ๆฏ็งๆ–‡ๅŒ–ใ€‚' }, onboardingVisionSubtitle: { english: @@ -6995,7 +10371,14 @@ export const localizations = { indonesian: 'Kumpulkan data bahasa teks dan audio dengan cepat. Lokal pertama, sinkronkan saat terhubung. Berkolaborasi, terjemahkan, validasi.', nepali: - 'เคชเคพเค  เคฐ เค…เคกเคฟเคฏเฅ‹ เคญเคพเคทเคพ เคกเคพเคŸเคพ เค›เคฟเคŸเฅเคŸเฅˆ เคธเค™เฅเค•เคฒเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคธเฅเคฅเคพเคจเฅ€เคฏ-เคชเฅเคฐเคฅเคฎ, เคœเคกเคพเคจ เคนเฅเคเคฆเคพ เคธเคฟเค‚เค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคธเคนเคฏเฅ‹เค— เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ, เค…เคจเฅเคตเคพเคฆ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ, เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค' + 'เคชเคพเค  เคฐ เค…เคกเคฟเคฏเฅ‹ เคญเคพเคทเคพ เคกเคพเคŸเคพ เค›เคฟเคŸเฅเคŸเฅˆ เคธเค™เฅเค•เคฒเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคธเฅเคฅเคพเคจเฅ€เคฏ-เคชเฅเคฐเคฅเคฎ, เคœเคกเคพเคจ เคนเฅเคเคฆเคพ เคธเคฟเค‚เค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคธเคนเคฏเฅ‹เค— เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ, เค…เคจเฅเคตเคพเคฆ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ, เคชเฅเคฐเคฎเคพเคฃเคฟเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', + hindi: + 'เคชเคพเค  เค”เคฐ เค‘เคกเคฟเคฏเฅ‹ เคญเคพเคทเคพ เคกเฅ‡เคŸเคพ เคœเคฒเฅเคฆเฅ€ เคธเฅ‡ เคเค•เคคเฅเคฐ เค•เคฐเฅ‡เค‚เฅค เคธเฅเคฅเคพเคจเฅ€เคฏ-เคชเฅเคฐเคฅเคฎ, เค•เคจเฅ‡เค•เฅเคŸ เคนเฅ‹เคจเฅ‡ เคชเคฐ เคธเคฟเค‚เค• เค•เคฐเฅ‡เค‚เฅค เคธเคนเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚, เค…เคจเฅเคตเคพเคฆ เค•เคฐเฅ‡เค‚, เคฎเคพเคจเฅเคฏ เค•เคฐเฅ‡เค‚เฅค', + burmese: + 'แ€…แ€ฌแ€žแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€กแ€žแ€ถ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€’แ€ฑแ€แ€ฌแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€™แ€ผแ€”แ€บแ€…แ€ฏแ€†แ€ฑแ€ฌแ€„แ€บแ€ธแ€•แ€ซแ‹ แ€’แ€ฑแ€žแ€แ€ฝแ€„แ€บแ€ธ-แ€ฆแ€ธแ€…แ€ฌแ€ธแ€•แ€ฑแ€ธแŠ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€•แ€ซแ‹ แ€•แ€ฐแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€•แ€ซแŠ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€•แ€ซแŠ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซแ‹', + thai: + 'เธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเธ เธฒเธฉเธฒเธ‚เน‰เธญเธ„เธงเธฒเธกเนเธฅเธฐเน€เธชเธตเธขเธ‡เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธง เน€เธ™เน‰เธ™เธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™เธเนˆเธญเธ™ เธ‹เธดเธ‡เธ„เนŒเน€เธกเธทเนˆเธญเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญ เธฃเนˆเธงเธกเธกเธทเธญ เนเธ›เธฅ เนเธฅเธฐเธ•เธฃเธงเธˆเธชเธญเธš', + mandarin: 'ๅฟซ้€Ÿๆ”ถ้›†ๆ–‡ๆœฌๅ’Œ้Ÿณ้ข‘่ฏญ่จ€ๆ•ฐๆฎใ€‚ๆœฌๅœฐไผ˜ๅ…ˆ๏ผŒ่ฟžๆŽฅๆ—ถๅŒๆญฅใ€‚ๅไฝœใ€็ฟป่ฏ‘ใ€้ชŒ่ฏใ€‚' }, onboardingVisionStatement1: { english: "Every language having access to the world's knowledge.", @@ -7003,7 +10386,11 @@ export const localizations = { brazilian_portuguese: 'Cada idioma tendo acesso ao conhecimento do mundo.', tok_pisin: 'Olgeta tokples i gat akses long save bilong wol.', indonesian: 'Setiap bahasa memiliki akses ke pengetahuan dunia.', - nepali: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคญเคพเคทเคพเคฒเฅ‡ เคตเคฟเคถเฅเคตเค•เฅ‹ เคœเฅเคžเคพเคจเคฎเคพ เคชเคนเฅเคเคš เคชเคพเค‰เคจเฅ‡เฅค' + nepali: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคญเคพเคทเคพเคฒเฅ‡ เคตเคฟเคถเฅเคตเค•เฅ‹ เคœเฅเคžเคพเคจเคฎเคพ เคชเคนเฅเคเคš เคชเคพเค‰เคจเฅ‡เฅค', + hindi: 'เคนเคฐ เคญเคพเคทเคพ เค•เฅ‹ เคฆเฅเคจเคฟเคฏเคพ เค•เฅ‡ เคœเฅเคžเคพเคจ เคคเค• เคชเคนเฅเค‚เคš เคนเฅ‹เฅค', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€แ€ญแ€ฏแ€„แ€บแ€ธแ€žแ€Šแ€บ แ€€แ€™แ€นแ€˜แ€ฌแ แ€กแ€žแ€ญแ€•แ€Šแ€ฌแ€žแ€ญแ€ฏแ€ท แ€›แ€ฑแ€ฌแ€€แ€บแ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: 'เธ—เธธเธเธ เธฒเธฉเธฒเธกเธตเธเธฒเธฃเน€เธ‚เน‰เธฒเธ–เธถเธ‡เธ„เธงเธฒเธกเธฃเธนเน‰เธ‚เธญเธ‡เน‚เธฅเธ', + mandarin: 'ๆฏ็ง่ฏญ่จ€้ƒฝ่ƒฝ่Žทๅพ—ไธ–็•Œ็Ÿฅ่ฏ†ใ€‚' }, onboardingVisionStatement2: { english: 'Every culture sharing its meaning with the world.', @@ -7012,7 +10399,11 @@ export const localizations = { 'Cada cultura compartilhando seu significado com o mundo.', tok_pisin: 'Olgeta kalsa i salim save bilong en i go long wol.', indonesian: 'Setiap budaya berbagi maknanya dengan dunia.', - nepali: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคธเค‚เคธเฅเค•เฅƒเคคเคฟเคฒเฅ‡ เค†เคซเฅเคจเฅ‹ เค…เคฐเฅเคฅ เคตเคฟเคถเฅเคตเคธเคเค— เคธเคพเคเคพ เค—เคฐเฅเคจเฅ‡เฅค' + nepali: 'เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคธเค‚เคธเฅเค•เฅƒเคคเคฟเคฒเฅ‡ เค†เคซเฅเคจเฅ‹ เค…เคฐเฅเคฅ เคตเคฟเคถเฅเคตเคธเคเค— เคธเคพเคเคพ เค—เคฐเฅเคจเฅ‡เฅค', + hindi: 'เคนเคฐ เคธเค‚เคธเฅเค•เฅƒเคคเคฟ เค…เคชเคจเคพ เค…เคฐเฅเคฅ เคฆเฅเคจเคฟเคฏเคพ เค•เฅ‡ เคธเคพเคฅ เคธเคพเคเคพ เค•เคฐ เคฐเคนเฅ€ เคนเฅˆเฅค', + burmese: 'แ€šแ€‰แ€บแ€€แ€ปแ€ฑแ€ธแ€™แ€พแ€ฏแ€แ€ญแ€ฏแ€„แ€บแ€ธแ€žแ€Šแ€บ แŽแ€„แ€บแ€ธแ แ€กแ€“แ€ญแ€•แ€นแ€•แ€ฌแ€šแ€บแ€€แ€ญแ€ฏ แ€€แ€™แ€นแ€˜แ€ฌแ€”แ€พแ€„แ€ทแ€บ แ€™แ€ปแ€พแ€แ€ฑแ€”แ€ฑแ€žแ€Šแ€บแ‹', + thai: 'เธ—เธธเธเธงเธฑเธ’เธ™เธ˜เธฃเธฃเธกเนเธšเนˆเธ‡เธ›เธฑเธ™เธ„เธงเธฒเธกเธซเธกเธฒเธขเธเธฑเธšเน‚เธฅเธ', + mandarin: 'ๆฏ็งๆ–‡ๅŒ–้ƒฝๅœจไธŽไธ–็•Œๅˆ†ไบซๅ…ถๆ„ไน‰ใ€‚' }, onboardingVisionCC0: { english: 'CC0/public domain data ensures no party can stop this vision.', @@ -7025,7 +10416,14 @@ export const localizations = { indonesian: 'Data CC0/domain publik memastikan tidak ada pihak yang dapat menghentikan visi ini.', nepali: - 'CC0/เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคกเฅ‹เคฎเฅ‡เคจ เคกเคพเคŸเคพเคฒเฅ‡ เค•เฅเคจเฅˆ เคชเคจเคฟ เคชเค•เฅเคทเคฒเฅ‡ เคฏเฅ‹ เคฆเฅƒเคทเฅเคŸเคฟเค•เฅ‹เคฃเคฒเคพเคˆ เคฐเฅ‹เค•เฅเคจ เคจเคธเค•เฅเคจเฅ‡ เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค—เคฐเฅเค›เฅค' + 'CC0/เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคกเฅ‹เคฎเฅ‡เคจ เคกเคพเคŸเคพเคฒเฅ‡ เค•เฅเคจเฅˆ เคชเคจเคฟ เคชเค•เฅเคทเคฒเฅ‡ เคฏเฅ‹ เคฆเฅƒเคทเฅเคŸเคฟเค•เฅ‹เคฃเคฒเคพเคˆ เคฐเฅ‹เค•เฅเคจ เคจเคธเค•เฅเคจเฅ‡ เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค—เคฐเฅเค›เฅค', + hindi: + 'CC0/เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคกเฅ‹เคฎเฅ‡เคจ เคกเฅ‡เคŸเคพ เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค•เคฐเคคเคพ เคนเฅˆ เค•เคฟ เค•เฅ‹เคˆ เคญเฅ€ เคชเค•เฅเคท เค‡เคธ เคฆเฅƒเคทเฅเคŸเคฟ เค•เฅ‹ เคฐเฅ‹เค• เคจเคนเฅ€เค‚ เคธเค•เคคเคพเฅค', + burmese: + 'CC0/แ€•แ€ผแ€Šแ€บแ€žแ€ฐแ€ทแ€’แ€ญแ€ฏแ€™แ€ญแ€”แ€บแ€ธ แ€’แ€ฑแ€แ€ฌแ€žแ€Šแ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€–แ€ฝแ€ฒแ€ทแ€™แ€ปแ€พ แ€คแ€™แ€ปแ€พแ€ฑแ€ฌแ€บแ€™แ€พแ€”แ€บแ€ธแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€›แ€•แ€บแ€แ€”แ€ทแ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธ แ€žแ€ฑแ€แ€ปแ€ฌแ€…แ€ฑแ€žแ€Šแ€บแ‹', + thai: + 'เธ‚เน‰เธญเธกเธนเธฅ CC0/เธชเธฒเธ˜เธฒเธฃเธ“เธชเธกเธšเธฑเธ•เธดเธฃเธฑเธšเธ›เธฃเธฐเธเธฑเธ™เธงเนˆเธฒเน„เธกเนˆเธกเธตเธเนˆเธฒเธขเนƒเธ”เธชเธฒเธกเธฒเธฃเธ–เธซเธขเธธเธ”เธงเธดเธชเธฑเธขเธ—เธฑเธจเธ™เนŒเธ™เธตเน‰เน„เธ”เน‰', + mandarin: 'CC0/ๅ…ฌๅ…ฑ้ข†ๅŸŸๆ•ฐๆฎ็กฎไฟๆฒกๆœ‰ไปปไฝ•ไธ€ๆ–นๅฏไปฅ้˜ปๆญข่ฟ™ไธ€ๆ„ฟๆ™ฏใ€‚' }, onboardingOurVision: { english: 'Our Vision', @@ -7033,7 +10431,11 @@ export const localizations = { brazilian_portuguese: 'Nossa Visรฃo', tok_pisin: 'Visen Bilong Mipela', indonesian: 'Visi Kami', - nepali: 'เคนเคพเคฎเฅเคฐเฅ‹ เคฆเฅƒเคทเฅเคŸเคฟ' + nepali: 'เคนเคพเคฎเฅเคฐเฅ‹ เคฆเฅƒเคทเฅเคŸเคฟ', + hindi: 'เคนเคฎเคพเคฐเฅ€ เคฆเฅƒเคทเฅเคŸเคฟ', + burmese: 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ทแ แ€™แ€ปแ€พแ€ฑแ€ฌแ€บแ€™แ€พแ€”แ€บแ€ธแ€แ€ปแ€€แ€บ', + thai: 'เธงเธดเธชเธฑเธขเธ—เธฑเธจเธ™เนŒเธ‚เธญเธ‡เน€เธฃเธฒ', + mandarin: 'ๆˆ‘ไปฌ็š„ๆ„ฟๆ™ฏ' }, onboardingSelectLanguageTitle: { english: 'Choose Your Language', @@ -7041,7 +10443,11 @@ export const localizations = { brazilian_portuguese: 'Escolha Seu Idioma', tok_pisin: 'Pilim Tokples Bilong Yu', indonesian: 'Pilih Bahasa Anda', - nepali: 'เค†เคซเฅเคจเฅ‹ เคญเคพเคทเคพ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค†เคซเฅเคจเฅ‹ เคญเคพเคทเคพ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค…เคชเคจเฅ€ เคญเคพเคทเคพ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€žแ€„แ€บแ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธ เธฒเธฉเธฒเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: '้€‰ๆ‹ฉๆ‚จ็š„่ฏญ่จ€' }, onboardingSelectLanguageSubtitle: { english: "Select the language you'd like to use for the app interface", @@ -7051,7 +10457,11 @@ export const localizations = { 'Selecione o idioma que deseja usar para a interface do aplicativo', tok_pisin: 'Pilim tokples yu laikim long yusim long app', indonesian: 'Pilih bahasa yang ingin Anda gunakan untuk antarmuka aplikasi', - nepali: 'เคเคช เค‡เคจเฅเคŸเคฐเคซเฅ‡เคธเค•เฅ‹ เคฒเคพเค—เคฟ เคคเคชเคพเคˆเค‚ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅ‡ เคญเคพเคทเคพ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคเคช เค‡เคจเฅเคŸเคฐเคซเฅ‡เคธเค•เฅ‹ เคฒเคพเค—เคฟ เคคเคชเคพเคˆเค‚ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅ‡ เคญเคพเคทเคพ เคšเคฏเคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคเคช เค‡เค‚เคŸเคฐเคซเฅ‡เคธ เค•เฅ‡ เคฒเคฟเค เค†เคช เคœเคฟเคธ เคญเคพเคทเคพ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚ เค‰เคธเฅ‡ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€กแ€€แ€บแ€•แ€บแ แ€กแ€„แ€บแ€แ€ฌแ€–แ€ฑแ€ทแ€…แ€บแ€กแ€แ€ฝแ€€แ€บ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€œแ€ญแ€ฏแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธ เธฒเธฉเธฒเธ—เธตเนˆเธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเนƒเธŠเน‰เธชเธณเธซเธฃเธฑเธšเธญเธดเธ™เน€เธ—เธญเธฃเนŒเน€เธŸเธ‹เนเธญเธ›', + mandarin: '้€‰ๆ‹ฉๆ‚จๅธŒๆœ›็”จไบŽๅบ”็”จ็•Œ้ข็š„่ฏญ่จ€' }, exportProgress: { english: 'Export Progress', @@ -7059,7 +10469,11 @@ export const localizations = { brazilian_portuguese: 'Progresso de Exportaรงรฃo', tok_pisin: 'Export Progress', indonesian: 'Progres Exportasi', - nepali: 'เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเค—เคคเคฟ' + nepali: 'เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเค—เคคเคฟ', + hindi: 'เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเค—เคคเคฟ', + burmese: 'แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏ แ€แ€ญแ€ฏแ€ธแ€แ€€แ€บแ€™แ€พแ€ฏ', + thai: 'เธ„เธงเธฒเธกเธ„เธทเธšเธซเธ™เน‰เธฒเธเธฒเธฃเธชเนˆเธ‡เธญเธญเธ', + mandarin: 'ๅฏผๅ‡บ่ฟ›ๅบฆ' }, exporting: { english: 'Exporting chapter... This may take a few moments.', @@ -7068,7 +10482,11 @@ export const localizations = { 'Exportando capรญtulo... Isso pode levar alguns momentos.', tok_pisin: 'Exporting chapter... This may take a few moments.', indonesian: 'Mengekspor bab... Ini mungkin memakan beberapa saat.', - nepali: 'เค…เคงเฅเคฏเคพเคฏ เคจเคฟเคฐเฅเคฏเคพเคค เค—เคฐเฅเคฆเฅˆ... เคฏเคธเคฒเฅ‡ เค•เฅ‡เคนเฅ€ เค•เฅเคทเคฃ เคฒเคฟเคจ เคธเค•เฅเค›เฅค' + nepali: 'เค…เคงเฅเคฏเคพเคฏ เคจเคฟเคฐเฅเคฏเคพเคค เค—เคฐเฅเคฆเฅˆ... เคฏเคธเคฒเฅ‡ เค•เฅ‡เคนเฅ€ เค•เฅเคทเคฃ เคฒเคฟเคจ เคธเค•เฅเค›เฅค', + hindi: 'เค…เคงเฅเคฏเคพเคฏ เคจเคฟเคฐเฅเคฏเคพเคค เคนเฅ‹ เคฐเคนเคพ เคนเฅˆ... เค‡เคธเคฎเฅ‡เค‚ เค•เฅเค› เค•เฅเคทเคฃ เคฒเค— เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: 'แ€กแ€แ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€”แ€ฑแ€žแ€Šแ€บ... แ€แ€แ€€แ€ผแ€ฌแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เธเธณเธฅเธฑเธ‡เธชเนˆเธ‡เธญเธญเธเธšเธ—... เธญเธฒเธˆเนƒเธŠเน‰เน€เธงเธฅเธฒเธชเธฑเธเธ„เธฃเธนเนˆ', + mandarin: 'ๆญฃๅœจๅฏผๅ‡บ็ซ ่Š‚... ๅฏ่ƒฝ้œ€่ฆไธ€ไบ›ๆ—ถ้—ดใ€‚' }, exportReady: { english: 'Export is ready!', @@ -7076,7 +10494,11 @@ export const localizations = { brazilian_portuguese: 'Exportaรงรฃo pronta!', tok_pisin: 'Export is ready!', indonesian: 'Ekspor siap!', - nepali: 'เคจเคฟเคฐเฅเคฏเคพเคค เคคเคฏเคพเคฐ เค›!' + nepali: 'เคจเคฟเคฐเฅเคฏเคพเคค เคคเคฏเคพเคฐ เค›!', + hindi: 'เคจเคฟเคฐเฅเคฏเคพเคค เคคเฅˆเคฏเคพเคฐ เคนเฅˆ!', + burmese: 'แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏ แ€กแ€†แ€„แ€บแ€žแ€„แ€ทแ€บแ€•แ€ซแ€•แ€ผแ€ฎ!', + thai: 'เธเธฒเธฃเธชเนˆเธ‡เธญเธญเธเธžเธฃเน‰เธญเธกเนเธฅเน‰เธง!', + mandarin: 'ๅฏผๅ‡บๅทฒๅฐฑ็ปช๏ผ' }, share: { english: 'Share', @@ -7084,7 +10506,11 @@ export const localizations = { brazilian_portuguese: 'Compartilhar', tok_pisin: 'Share', indonesian: 'Bagikan', - nepali: 'เคธเคพเคเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเคพเคเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคพเคเคพ เค•เคฐเฅ‡เค‚', + burmese: 'แ€™แ€ปแ€พแ€แ€ฑแ€•แ€ซ', + thai: 'เนเธŠเธฃเนŒ', + mandarin: 'ๅˆ†ไบซ' }, exportFailed: { english: 'Export failed', @@ -7092,7 +10518,11 @@ export const localizations = { brazilian_portuguese: 'Exportaรงรฃo falhou', tok_pisin: 'Export failed', indonesian: 'Ekspor gagal', - nepali: 'เคจเคฟเคฐเฅเคฏเคพเคค เค…เคธเคซเคฒ เคญเคฏเฅ‹' + nepali: 'เคจเคฟเคฐเฅเคฏเคพเคค เค…เคธเคซเคฒ เคญเคฏเฅ‹', + hindi: 'เคจเคฟเคฐเฅเคฏเคพเคค เคตเคฟเคซเคฒ', + burmese: 'แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธญเธญเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: 'ๅฏผๅ‡บๅคฑ่ดฅ' }, close: { english: 'Close', @@ -7100,7 +10530,11 @@ export const localizations = { brazilian_portuguese: 'Fechar', tok_pisin: 'Close', indonesian: 'Tutup', - nepali: 'เคฌเคจเฅเคฆ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฌเคจเฅเคฆ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเค‚เคฆ เค•เคฐเฅ‡เค‚', + burmese: 'แ€•แ€ญแ€แ€บแ€•แ€ซ', + thai: 'เธ›เธดเธ”', + mandarin: 'ๅ…ณ้—ญ' }, exportForDistribution: { english: 'Export for Distribution', @@ -7108,7 +10542,11 @@ export const localizations = { brazilian_portuguese: 'Exportar para distribuiรงรฃo', tok_pisin: 'Export for Distribution', indonesian: 'Ekspor untuk Distribusi', - nepali: 'เคตเคฟเคคเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เคจเคฟเคฐเฅเคฏเคพเคค' + nepali: 'เคตเคฟเคคเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เคจเคฟเคฐเฅเคฏเคพเคค', + hindi: 'เคตเคฟเคคเคฐเคฃ เค•เฅ‡ เคฒเคฟเค เคจเคฟเคฐเฅเคฏเคพเคค', + burmese: 'แ€–แ€ผแ€”แ€ทแ€บแ€–แ€ผแ€ฐแ€ธแ€›แ€”แ€บ แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธญเธญเธเน€เธžเธทเนˆเธญเธเธฒเธฃเนเธˆเธเธˆเนˆเธฒเธข', + mandarin: 'ๅฏผๅ‡บไปฅไพ›ๅˆ†ๅ‘' }, exportForDistributionDescription: { english: 'This export is intended for public distribution and sharing.', @@ -7119,7 +10557,11 @@ export const localizations = { tok_pisin: 'Dispela export bilong wok long putim igo aut long olgeta na kisim sindaun wantaim ol arapela.', indonesian: 'Ekspor ini dimaksudkan untuk distribusi dan pembagian publik.', - nepali: 'เคฏเฅ‹ เคจเคฟเคฐเฅเคฏเคพเคค เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคตเคฟเคคเคฐเคฃ เคฐ เคธเคพเคเฅ‡เคฆเคพเคฐเฅ€เค•เฅ‹ เคฒเคพเค—เคฟ เคนเฅ‹เฅค' + nepali: 'เคฏเฅ‹ เคจเคฟเคฐเฅเคฏเคพเคค เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคตเคฟเคคเคฐเคฃ เคฐ เคธเคพเคเฅ‡เคฆเคพเคฐเฅ€เค•เฅ‹ เคฒเคพเค—เคฟ เคนเฅ‹เฅค', + hindi: 'เคฏเคน เคจเคฟเคฐเฅเคฏเคพเคค เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคตเคฟเคคเคฐเคฃ เค”เคฐ เคธเคพเคเคพเค•เคฐเคฃ เค•เฅ‡ เคฒเคฟเค เคนเฅˆเฅค', + burmese: 'แ€คแ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€•แ€ผแ€Šแ€บแ€žแ€ฐแ€ท แ€–แ€ผแ€”แ€ทแ€บแ€–แ€ผแ€ฐแ€ธแ€™แ€พแ€ฏแ€”แ€พแ€„แ€ทแ€บ แ€™แ€ปแ€พแ€แ€ฑแ€™แ€พแ€ฏแ€กแ€แ€ฝแ€€แ€บ แ€›แ€Šแ€บแ€›แ€ฝแ€šแ€บแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเธชเนˆเธ‡เธญเธญเธเธ™เธตเน‰เธกเธตเน„เธงเน‰เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเธเธˆเนˆเธฒเธขเนเธฅเธฐเนเธšเนˆเธ‡เธ›เธฑเธ™เธชเธฒเธ˜เธฒเธฃเธ“เธฐ', + mandarin: 'ๆญคๅฏผๅ‡บ็”จไบŽๅ…ฌๅ…ฑๅˆ†ๅ‘ๅ’Œๅ…ฑไบซใ€‚' }, exportForFeedback: { english: 'Export for Feedback', @@ -7127,7 +10569,11 @@ export const localizations = { brazilian_portuguese: 'Exportar para feedback', tok_pisin: 'Export for Feedback', indonesian: 'Ekspor untuk Feedback', - nepali: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพเค•เฅ‹ เคฒเคพเค—เคฟ เคจเคฟเคฐเฅเคฏเคพเคค' + nepali: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพเค•เฅ‹ เคฒเคพเค—เคฟ เคจเคฟเคฐเฅเคฏเคพเคค', + hindi: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เค•เฅ‡ เคฒเคฟเค เคจเคฟเคฐเฅเคฏเคพเคค', + burmese: 'แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€กแ€แ€ฝแ€€แ€บ แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธญเธญเธเน€เธžเธทเนˆเธญเธฃเธฑเธšเธ‚เน‰เธญเน€เธชเธ™เธญเนเธ™เธฐ', + mandarin: 'ๅฏผๅ‡บไปฅไพ›ๅ้ฆˆ' }, exportForFeedbackDescription: { english: 'This export is intended for feedback and sharing.', @@ -7136,7 +10582,11 @@ export const localizations = { 'Esta exportaรงรฃo รฉ destinada a feedback e compartilhado.', tok_pisin: 'Dispela export bilong wok long feedback o share.', indonesian: 'Ekspor ini dimaksudkan untuk feedback dan pembagian.', - nepali: 'เคฏเฅ‹ เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคฐ เคธเคพเคเฅ‡เคฆเคพเคฐเฅ€เค•เฅ‹ เคฒเคพเค—เคฟ เคนเฅ‹เฅค' + nepali: 'เคฏเฅ‹ เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคฐ เคธเคพเคเฅ‡เคฆเคพเคฐเฅ€เค•เฅ‹ เคฒเคพเค—เคฟ เคนเฅ‹เฅค', + hindi: 'เคฏเคน เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เค”เคฐ เคธเคพเคเคพเค•เคฐเคฃ เค•เฅ‡ เคฒเคฟเค เคนเฅˆเฅค', + burmese: 'แ€คแ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€”แ€พแ€„แ€ทแ€บ แ€™แ€ปแ€พแ€แ€ฑแ€™แ€พแ€ฏแ€กแ€แ€ฝแ€€แ€บ แ€›แ€Šแ€บแ€›แ€ฝแ€šแ€บแ€žแ€Šแ€บแ‹', + thai: 'เธเธฒเธฃเธชเนˆเธ‡เธญเธญเธเธ™เธตเน‰เธกเธตเน„เธงเน‰เธชเธณเธซเธฃเธฑเธšเธฃเธฑเธšเธ‚เน‰เธญเน€เธชเธ™เธญเนเธ™เธฐเนเธฅเธฐเธเธฒเธฃเนเธšเนˆเธ‡เธ›เธฑเธ™', + mandarin: 'ๆญคๅฏผๅ‡บ็”จไบŽๅ้ฆˆๅ’Œๅ…ฑไบซใ€‚' }, selectExportType: { english: 'Select Export Type', @@ -7144,7 +10594,11 @@ export const localizations = { brazilian_portuguese: 'Selecionar tipo de exportaรงรฃo', tok_pisin: 'Makim kain export', indonesian: 'Pilih Jenis Ekspor', - nepali: 'เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเค•เคพเคฐ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเค•เคพเคฐ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคจเคฟเคฐเฅเคฏเคพเคค เคชเฅเคฐเค•เคพเคฐ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏ แ€กแ€™แ€ปแ€ญแ€ฏแ€ธแ€กแ€…แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธ›เธฃเธฐเน€เธ เธ—เธเธฒเธฃเธชเนˆเธ‡เธญเธญเธ', + mandarin: '้€‰ๆ‹ฉๅฏผๅ‡บ็ฑปๅž‹' }, shareLocally: { english: 'Share File', @@ -7152,7 +10606,11 @@ export const localizations = { brazilian_portuguese: 'Compartilhar arquivo', tok_pisin: 'Shareim file', indonesian: 'Bagikan file', - nepali: 'เคซเคพเค‡เคฒ เคธเคพเคเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคซเคพเค‡เคฒ เคธเคพเคเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคซเคพเค‡เคฒ เคธเคพเคเคพ เค•เคฐเฅ‡เค‚', + burmese: 'แ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€™แ€ปแ€พแ€แ€ฑแ€•แ€ซ', + thai: 'เนเธŠเธฃเนŒเน„เธŸเธฅเนŒ', + mandarin: 'ๅˆ†ไบซๆ–‡ไปถ' }, shareLocallyDescription: { english: 'Create a local audio file to save or share', @@ -7161,7 +10619,11 @@ export const localizations = { 'Criar um arquivo de รกudio local para salvar ou compartilhar', tok_pisin: 'Mekim lokal audio fail long save o shareim', indonesian: 'Buat file audio lokal untuk disimpan atau dibagikan', - nepali: 'เคธเฅเคฐเค•เฅเคทเคฟเคค เคตเคพ เคธเคพเคเคพ เค—เคฐเฅเคจ เคธเฅเคฅเคพเคจเฅ€เคฏ เค…เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคธเฅเคฐเค•เฅเคทเคฟเคค เคตเคพ เคธเคพเคเคพ เค—เคฐเฅเคจ เคธเฅเคฅเคพเคจเฅ€เคฏ เค…เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคธเคนเฅ‡เคœเคจเฅ‡ เคฏเคพ เคธเคพเคเคพ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคเค• เคธเฅเคฅเคพเคจเฅ€เคฏ เค‘เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒ เคฌเคจเคพเคเค‚', + burmese: 'แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€›แ€”แ€บ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€™แ€ปแ€พแ€แ€ฑแ€›แ€”แ€บ แ€’แ€ฑแ€žแ€แ€ฝแ€„แ€บแ€ธ แ€กแ€žแ€ถแ€–แ€ญแ€ฏแ€„แ€บแ€แ€…แ€บแ€แ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ซ', + thai: 'เธชเธฃเน‰เธฒเธ‡เน„เธŸเธฅเนŒเน€เธชเธตเธขเธ‡เธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเธซเธฃเธทเธญเนเธŠเธฃเนŒ', + mandarin: 'ๅˆ›ๅปบๆœฌๅœฐ้Ÿณ้ข‘ๆ–‡ไปถไปฅไฟๅญ˜ๆˆ–ๅ…ฑไบซ' }, questExport: { english: 'Quest Export', @@ -7169,7 +10631,11 @@ export const localizations = { brazilian_portuguese: 'Exportaรงรฃo de Quest', tok_pisin: 'Quest Export', indonesian: 'Ekspor Quest', - nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคจเคฟเคฐเฅเคฏเคพเคค' + nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคจเคฟเคฐเฅเคฏเคพเคค', + hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคจเคฟเคฐเฅเคฏเคพเคค', + burmese: 'Quest แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏ', + thai: 'เธชเนˆเธ‡เธญเธญเธเน€เธ„เธงเธชเธ•เนŒ', + mandarin: 'ไปปๅŠกๅฏผๅ‡บ' }, questExportDescription: { english: @@ -7183,7 +10649,13 @@ export const localizations = { indonesian: 'Ekspor pasal-pasal alkitab sebagai file audio untuk dibagikan dan didistribusikan', nepali: - 'เคธเคพเคเฅ‡เคฆเคพเคฐเฅ€ เคฐ เคตเคฟเคคเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เคฌเคพเค‡เคฌเคฒ เค…เคงเฅเคฏเคพเคฏเคนเคฐเฅ‚เคฒเคพเคˆ เค…เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒเคนเคฐเฅ‚เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคจเคฟเคฐเฅเคฏเคพเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + 'เคธเคพเคเฅ‡เคฆเคพเคฐเฅ€ เคฐ เคตเคฟเคคเคฐเคฃเค•เฅ‹ เคฒเคพเค—เคฟ เคฌเคพเค‡เคฌเคฒ เค…เคงเฅเคฏเคพเคฏเคนเคฐเฅ‚เคฒเคพเคˆ เค…เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒเคนเคฐเฅ‚เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคจเคฟเคฐเฅเคฏเคพเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: + 'เคธเคพเคเคพเค•เคฐเคฃ เค”เคฐ เคตเคฟเคคเคฐเคฃ เค•เฅ‡ เคฒเคฟเค เคฌเคพเค‡เคฌเคฒ เค…เคงเฅเคฏเคพเคฏเฅ‹เค‚ เค•เฅ‹ เค‘เคกเคฟเคฏเฅ‹ เคซเคพเค‡เคฒเฅ‹เค‚ เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเฅ‡เค‚', + burmese: + 'แ€™แ€ปแ€พแ€แ€ฑแ€›แ€”แ€บแ€”แ€พแ€„แ€ทแ€บ แ€–แ€ผแ€”แ€ทแ€บแ€–แ€ผแ€ฐแ€ธแ€›แ€”แ€บแ€กแ€แ€ฝแ€€แ€บ แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ แ€กแ€แ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€žแ€ถแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€กแ€–แ€ผแ€…แ€บ แ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', + thai: 'เธชเนˆเธ‡เธญเธญเธเธšเธ—เธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒเน€เธ›เน‡เธ™เน„เธŸเธฅเนŒเน€เธชเธตเธขเธ‡เน€เธžเธทเนˆเธญเนเธŠเธฃเนŒเนเธฅเธฐเนเธˆเธเธˆเนˆเธฒเธข', + mandarin: 'ๅฐ†ๅœฃ็ป็ซ ่Š‚ๅฏผๅ‡บไธบ้Ÿณ้ข‘ๆ–‡ไปถไปฅไพ›ๅ…ฑไบซๅ’Œๅˆ†ๅ‘' }, transcription: { english: 'Transcription', @@ -7191,7 +10663,11 @@ export const localizations = { brazilian_portuguese: 'Transcriรงรฃo', tok_pisin: 'Transcription', indonesian: 'Transkripsi', - nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจ' + nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจ', + hindi: 'เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ', + burmese: 'แ€กแ€žแ€ถแ€–แ€ผแ€„แ€ทแ€บ แ€›แ€ฑแ€ธแ€žแ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธ', + thai: 'เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธก', + mandarin: '่ฝฌๅฝ•' }, transcriptions: { english: 'Transcriptions', @@ -7199,7 +10675,11 @@ export const localizations = { brazilian_portuguese: 'Transcriรงรตes', tok_pisin: 'Ol Transcription', indonesian: 'Transkripsi', - nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจเคนเคฐเฅ‚' + nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจเคนเคฐเฅ‚', + hindi: 'เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ', + burmese: 'แ€กแ€žแ€ถแ€–แ€ผแ€„แ€ทแ€บ แ€›แ€ฑแ€ธแ€žแ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธก', + mandarin: '่ฝฌๅฝ•' }, noTranscriptionsYet: { english: 'No transcriptions yet. Be the first to transcribe!', @@ -7209,7 +10689,11 @@ export const localizations = { tok_pisin: 'I no gat transcription yet. Yu ken namba wan long transcribe!', indonesian: 'Belum ada transkripsi. Jadilah yang pertama mentranskripsi!', nepali: - 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจ เค›เฅˆเคจเฅค เคชเคนเคฟเคฒเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคพเค‡เคฌเคฐ เคฌเคจเฅเคจเฅเคนเฅ‹เคธเฅ!' + 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจ เค›เฅˆเคจเฅค เคชเคนเคฟเคฒเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคพเค‡เคฌเคฐ เคฌเคจเฅเคจเฅเคนเฅ‹เคธเฅ!', + hindi: 'เค…เคญเฅ€ เคคเค• เค•เฅ‹เคˆ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคจเคนเฅ€เค‚ เคนเฅˆเฅค เคชเคนเคฒเฅ‡ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคพเค‡เคฌ เค•เคฐเคจเฅ‡ เคตเคพเคฒเฅ‡ เคฌเคจเฅ‡เค‚!', + burmese: 'แ€กแ€žแ€ถแ€–แ€ผแ€„แ€ทแ€บ แ€›แ€ฑแ€ธแ€žแ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ธแ€•แ€ซแ‹ แ€•แ€‘แ€™แ€†แ€ฏแ€ถแ€ธ แ€›แ€ฑแ€ธแ€žแ€ฌแ€ธแ€žแ€ฐ แ€–แ€ผแ€…แ€บแ€•แ€ซ!', + thai: 'เธขเธฑเธ‡เน„เธกเนˆเธกเธตเธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธก เน€เธ›เน‡เธ™เธ„เธ™เนเธฃเธเธ—เธตเนˆเธ–เธญเธ”เธ„เธงเธฒเธก!', + mandarin: '่ฟ˜ๆฒกๆœ‰่ฝฌๅฝ•ใ€‚ๆˆไธบ็ฌฌไธ€ไธช่ฝฌๅฝ•็š„ไบบ๏ผ' }, transcriptionDescription: { english: 'Enable automatic transcription of audio recordings', @@ -7218,7 +10702,11 @@ export const localizations = { 'Habilitar transcriรงรฃo automรกtica de gravaรงรตes de รกudio', tok_pisin: 'Enablem automatic transcription bilong audio recordings', indonesian: 'Aktifkan transkripsi otomatis rekaman audio', - nepali: 'เค…เคกเคฟเคฏเฅ‹ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคนเคฐเฅ‚เค•เฅ‹ เคธเฅเคตเคšเคพเคฒเคฟเคค เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคกเคฟเคฏเฅ‹ เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™เคนเคฐเฅ‚เค•เฅ‹ เคธเฅเคตเคšเคพเคฒเคฟเคค เคŸเฅเคฐเคพเคจเฅเคธเค•เฅเคฐเคฟเคชเฅเคธเคจ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เค‘เคกเคฟเคฏเฅ‹ เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เค•เฅ€ เคธเฅเคตเคšเคพเคฒเคฟเคค เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€žแ€ถแ€–แ€™แ€บแ€ธแ€šแ€ฐแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€กแ€žแ€ถแ€–แ€ผแ€„แ€ทแ€บ แ€›แ€ฑแ€ธแ€žแ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเธ‚เธญเธ‡เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเน€เธชเธตเธขเธ‡', + mandarin: 'ๅฏ็”จ้Ÿณ้ข‘ๅฝ•้Ÿณ็š„่‡ชๅŠจ่ฝฌๅฝ•' }, transcriptionComplete: { english: 'Transcription Complete', @@ -7226,7 +10714,11 @@ export const localizations = { brazilian_portuguese: 'Transcriรงรฃo concluรญda', tok_pisin: 'Transcription i pinis', indonesian: 'Transkripsi selesai', - nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจ เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹' + nepali: 'เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจ เคชเฅ‚เคฐเคพ เคญเคฏเฅ‹', + hindi: 'เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคชเฅ‚เคฐเฅเคฃ', + burmese: 'แ€กแ€žแ€ถแ€–แ€ผแ€„แ€ทแ€บ แ€›แ€ฑแ€ธแ€žแ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธ แ€•แ€ผแ€ฎแ€ธแ€…แ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธกเน€เธชเธฃเน‡เธˆเธชเธกเธšเธนเธฃเธ“เนŒ', + mandarin: '่ฝฌๅฝ•ๅฎŒๆˆ' }, copyFeedbackLink: { english: 'Copy Feedback Link', @@ -7234,7 +10726,11 @@ export const localizations = { brazilian_portuguese: 'Copiar link de feedback', tok_pisin: 'Kopim feedback link', indonesian: 'Salin Tautan Umpan Balik', - nepali: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคฒเคฟเค‚เค• เค•เคชเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคฒเคฟเค‚เค• เค•เคชเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคฒเคฟเค‚เค• เค•เฅ‰เคชเฅ€ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บ แ€œแ€„แ€ทแ€บแ€แ€บแ€€แ€ญแ€ฏ แ€€แ€ฐแ€ธแ€šแ€ฐแ€•แ€ซ', + thai: 'เธ„เธฑเธ”เธฅเธญเธเธฅเธดเธ‡เธเนŒเธ‚เน‰เธญเน€เธชเธ™เธญเนเธ™เธฐ', + mandarin: 'ๅคๅˆถๅ้ฆˆ้“พๆŽฅ' }, copyFeedbackLinkDescription: { english: 'Copy a link to share for feedback', @@ -7242,7 +10738,11 @@ export const localizations = { brazilian_portuguese: 'Copiar um link para compartilhar para feedback', tok_pisin: 'Kopim link long shareim bilong feedback', indonesian: 'Salin tautan untuk dibagikan untuk umpan balik', - nepali: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพเค•เฅ‹ เคฒเคพเค—เคฟ เคธเคพเคเคพ เค—เคฐเฅเคจ เคฒเคฟเค‚เค• เค•เคชเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพเค•เฅ‹ เคฒเคพเค—เคฟ เคธเคพเคเคพ เค—เคฐเฅเคจ เคฒเคฟเค‚เค• เค•เคชเฅ€ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เค•เฅ‡ เคฒเคฟเค เคธเคพเคเคพ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคเค• เคฒเคฟเค‚เค• เค•เฅ‰เคชเฅ€ เค•เคฐเฅ‡เค‚', + burmese: 'แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€กแ€แ€ฝแ€€แ€บ แ€™แ€ปแ€พแ€แ€ฑแ€›แ€”แ€บ แ€œแ€„แ€ทแ€บแ€แ€บแ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€€แ€ฐแ€ธแ€šแ€ฐแ€•แ€ซ', + thai: 'เธ„เธฑเธ”เธฅเธญเธเธฅเธดเธ‡เธเนŒเน€เธžเธทเนˆเธญเนเธŠเธฃเนŒเธชเธณเธซเธฃเธฑเธšเธฃเธฑเธšเธ‚เน‰เธญเน€เธชเธ™เธญเนเธ™เธฐ', + mandarin: 'ๅคๅˆถ้“พๆŽฅไปฅๅˆ†ไบซๅ้ฆˆ' }, feedbackLinkNote: { english: @@ -7256,7 +10756,14 @@ export const localizations = { indonesian: 'Catatan: Kami berencana untuk mengimplementasikan tautan ke situs web LangQuest di mana ekspor dapat dilihat dan dikomentari di masa depan.', nepali: - 'เคจเฅ‹เคŸ: เคนเคพเคฎเฅ€ เคญเคตเคฟเคทเฅเคฏเคฎเคพ LangQuest เคตเฅ‡เคฌเคธเคพเค‡เคŸเคฎเคพ เคฒเคฟเค‚เค• เคฒเคพเค—เฅ‚ เค—เคฐเฅเคจเฅ‡ เคฏเฅ‹เคœเคจเคพ เคฌเคจเคพเค‡เคฐเคนเฅ‡เค•เคพ เค›เฅŒเค‚ เคœเคนเคพเค เคจเคฟเคฐเฅเคฏเคพเคคเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจ เคฐ เคŸเคฟเคชเฅเคชเคฃเฅ€ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค' + 'เคจเฅ‹เคŸ: เคนเคพเคฎเฅ€ เคญเคตเคฟเคทเฅเคฏเคฎเคพ LangQuest เคตเฅ‡เคฌเคธเคพเค‡เคŸเคฎเคพ เคฒเคฟเค‚เค• เคฒเคพเค—เฅ‚ เค—เคฐเฅเคจเฅ‡ เคฏเฅ‹เคœเคจเคพ เคฌเคจเคพเค‡เคฐเคนเฅ‡เค•เคพ เค›เฅŒเค‚ เคœเคนเคพเค เคจเคฟเคฐเฅเคฏเคพเคคเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจ เคฐ เคŸเคฟเคชเฅเคชเคฃเฅ€ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค', + hindi: + 'เคจเฅ‹เคŸ: เคนเคฎ เคญเคตเคฟเคทเฅเคฏ เคฎเฅ‡เค‚ LangQuest เคตเฅ‡เคฌเคธเคพเค‡เคŸ เคชเคฐ เคเค• เคฒเคฟเค‚เค• เคฒเคพเค—เฅ‚ เค•เคฐเคจเฅ‡ เค•เฅ€ เคฏเฅ‹เคœเคจเคพ เคฌเคจเคพ เคฐเคนเฅ‡ เคนเฅˆเค‚ เคœเคนเคพเค‚ เคจเคฟเคฐเฅเคฏเคพเคค เคฆเฅ‡เค–เฅ‡ เค”เคฐ เคŸเคฟเคชเฅเคชเคฃเฅ€ เค•เฅ€ เคœเคพ เคธเค•เฅ‡เค‚เค—เฅ‡เฅค', + burmese: + 'แ€™แ€พแ€แ€บแ€แ€ปแ€€แ€บ- แ€กแ€”แ€ฌแ€‚แ€แ€บแ€แ€ฝแ€„แ€บ แ€‘แ€ฏแ€แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ผแ€ฎแ€ธ แ€™แ€พแ€แ€บแ€แ€ปแ€€แ€บแ€•แ€ฑแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌ LangQuest แ€แ€€แ€บแ€˜แ€บแ€†แ€ญแ€ฏแ€’แ€บแ€žแ€ญแ€ฏแ€ท แ€œแ€„แ€ทแ€บแ€แ€บแ€แ€…แ€บแ€แ€ฏ แ€กแ€€แ€ฑแ€ฌแ€„แ€บแ€กแ€‘แ€Šแ€บแ€–แ€ฑแ€ฌแ€บแ€›แ€”แ€บ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ท แ€…แ€ฎแ€…แ€‰แ€บแ€‘แ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: + 'เธซเธกเธฒเธขเน€เธซเธ•เธธ: เน€เธฃเธฒเธงเธฒเธ‡เนเธœเธ™เธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เธฅเธดเธ‡เธเนŒเน„เธ›เธขเธฑเธ‡เน€เธงเน‡เธšเน„เธ‹เธ•เนŒ LangQuest เธ‹เธถเนˆเธ‡เธชเธฒเธกเธฒเธฃเธ–เธ”เธนเนเธฅเธฐเนเธชเธ”เธ‡เธ„เธงเธฒเธกเธ„เธดเธ”เน€เธซเน‡เธ™เน€เธเธตเนˆเธขเธงเธเธฑเธšเธเธฒเธฃเธชเนˆเธ‡เธญเธญเธเนƒเธ™เธญเธ™เธฒเธ„เธ•', + mandarin: 'ๆณจๆ„๏ผšๆˆ‘ไปฌ่ฎกๅˆ’ๅฎžๆ–ฝๆŒ‡ๅ‘ LangQuest ็ฝ‘็ซ™็š„้“พๆŽฅ๏ผŒๅฐ†ๆฅๅฏไปฅๅœจ้‚ฃ้‡ŒๆŸฅ็œ‹ๅ’Œ่ฏ„่ฎบๅฏผๅ‡บๅ†…ๅฎนใ€‚' }, linkCopied: { english: 'Link copied to clipboard!', @@ -7264,7 +10771,11 @@ export const localizations = { brazilian_portuguese: 'Link copiado para a รกrea de transferรชncia!', tok_pisin: 'Link kopim igo long clipboard!', indonesian: 'Tautan disalin ke clipboard!', - nepali: 'เคฒเคฟเค‚เค• เค•เฅเคฒเคฟเคชเคฌเฅ‹เคฐเฅเคกเคฎเคพ เค•เคชเฅ€ เคญเคฏเฅ‹!' + nepali: 'เคฒเคฟเค‚เค• เค•เฅเคฒเคฟเคชเคฌเฅ‹เคฐเฅเคกเคฎเคพ เค•เคชเฅ€ เคญเคฏเฅ‹!', + hindi: 'เคฒเคฟเค‚เค• เค•เฅเคฒเคฟเคชเคฌเฅ‹เคฐเฅเคก เคชเคฐ เค•เฅ‰เคชเฅ€ เคนเฅ‹ เค—เคฏเคพ!', + burmese: 'แ€œแ€„แ€ทแ€บแ€แ€บแ€€แ€ญแ€ฏ clipboard แ€žแ€ญแ€ฏแ€ท แ€€แ€ฐแ€ธแ€šแ€ฐแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ!', + thai: 'เธ„เธฑเธ”เธฅเธญเธเธฅเธดเธ‡เธเนŒเน„เธ›เธขเธฑเธ‡เธ„เธฅเธดเธ›เธšเธญเธฃเนŒเธ”เนเธฅเน‰เธง!', + mandarin: '้“พๆŽฅๅทฒๅคๅˆถๅˆฐๅ‰ช่ดดๆฟ๏ผ' }, verseMarkers: { english: 'Verse Labels', @@ -7272,7 +10783,11 @@ export const localizations = { brazilian_portuguese: 'Etiquetas de Versรญculos', tok_pisin: 'Verse Labels', indonesian: 'Label Versi', - nepali: 'เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚' + nepali: 'เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚', + hindi: 'เคชเคฆ เคฒเฅ‡เคฌเคฒ', + burmese: 'แ€€แ€ปแ€™แ€บแ€ธแ€•แ€ญแ€ฏแ€’แ€บ แ€…แ€ฌแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ›เน‰เธฒเธขเธเธณเธเธฑเธšเธ‚เน‰เธญ', + mandarin: '็ปๆ–‡ๆ ‡็ญพ' }, enableVerseLabelsQuestion: { english: 'Enable Verse Labels?', @@ -7280,7 +10795,11 @@ export const localizations = { brazilian_portuguese: 'Habilitar etiquetas de versรญculos?', tok_pisin: 'Enablem verse labels?', indonesian: 'Aktifkan label versi?', - nepali: 'เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅ‡?' + nepali: 'เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅ‡?', + hindi: 'เคชเคฆ เคฒเฅ‡เคฌเคฒ เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚?', + burmese: 'แ€€แ€ปแ€™แ€บแ€ธแ€•แ€ญแ€ฏแ€’แ€บ แ€…แ€ฌแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€™แ€Šแ€บแ€œแ€ฌแ€ธ?', + thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ›เน‰เธฒเธขเธเธณเธเธฑเธšเธ‚เน‰เธญ?', + mandarin: 'ๅฏ็”จ็ปๆ–‡ๆ ‡็ญพ๏ผŸ' }, enableVerseLabelsDescription: { english: @@ -7294,7 +10813,14 @@ export const localizations = { indonesian: 'Fitur eksperimental ini membantu mengorganisir sumber daya Alkitab menggunakan label versi. Anda dapat mengaktifkan / menonaktifkannya kapan saja di menu Pengaturan.', nepali: - 'เคฏเฅ‹ เคชเฅเคฐเคฏเฅ‹เค—เคพเคคเฅเคฎเค• เคธเฅเคตเคฟเคงเคพเคฒเฅ‡ เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅ‡เคฐ เคฌเคพเค‡เคฌเคฒ เคธเฅเคฐเฅ‹เคคเคนเคฐเฅ‚ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค—เคฐเฅเคจ เคฎเคฆเฅเคฆเคค เค—เคฐเฅเค›เฅค เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคธเฅ‡เคŸเคฟเค™เฅเคธ เคฎเฅ‡เคจเฅเคฎเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคธเคฎเคฏ เคธเค•เฅเคทเคฎ / เค…เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค' + 'เคฏเฅ‹ เคชเฅเคฐเคฏเฅ‹เค—เคพเคคเฅเคฎเค• เคธเฅเคตเคฟเคงเคพเคฒเฅ‡ เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅ‡เคฐ เคฌเคพเค‡เคฌเคฒ เคธเฅเคฐเฅ‹เคคเคนเคฐเฅ‚ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค—เคฐเฅเคจ เคฎเคฆเฅเคฆเคค เค—เคฐเฅเค›เฅค เคคเคชเคพเคˆเค‚ เคฏเคธเคฒเคพเคˆ เคธเฅ‡เคŸเคฟเค™เฅเคธ เคฎเฅ‡เคจเฅเคฎเคพ เคœเฅเคจเคธเฅเค•เฅˆ เคธเคฎเคฏ เคธเค•เฅเคทเคฎ / เค…เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค›เฅค', + hindi: + 'เคฏเคน เคชเฅเคฐเคฏเฅ‹เค—เคพเคคเฅเคฎเค• เคธเฅเคตเคฟเคงเคพ เคชเคฆ เคฒเฅ‡เคฌเคฒ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเค•เฅ‡ เคฌเคพเค‡เคฌเคฒ เคธเค‚เคธเคพเคงเคจเฅ‹เค‚ เค•เฅ‹ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคฎเคฆเคฆ เค•เคฐเคคเฅ€ เคนเฅˆเฅค เค†เคช เค‡เคธเฅ‡ เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ เคฎเฅ‡เคจเฅ‚ เคฎเฅ‡เค‚ เค•เคญเฅ€ เคญเฅ€ เคธเค•เฅเคทเคฎ/เค…เคธเค•เฅเคทเคฎ เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', + burmese: + 'แ€คแ€…แ€™แ€บแ€ธแ€žแ€•แ€บแ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€žแ€Šแ€บ แ€€แ€ปแ€™แ€บแ€ธแ€•แ€ญแ€ฏแ€’แ€บ แ€…แ€ฌแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€ฎแ€…แ€‰แ€บแ€›แ€”แ€บ แ€€แ€ฐแ€Šแ€ฎแ€•แ€ฑแ€ธแ€žแ€Šแ€บแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ Settings menu แ€แ€ฝแ€„แ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บแ€™แ€†แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บ/แ€•แ€ญแ€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + thai: + 'เธŸเธตเน€เธˆเธญเธฃเนŒเธ—เธ”เธฅเธญเธ‡เธ™เธตเน‰เธŠเนˆเธงเธขเธˆเธฑเธ”เธฃเธฐเน€เธšเธตเธขเธšเธ—เธฃเธฑเธžเธขเธฒเธเธฃเธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒเน‚เธ”เธขเนƒเธŠเน‰เธ›เน‰เธฒเธขเธเธณเธเธฑเธšเธ‚เน‰เธญ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธดเธ”/เธ›เธดเธ”เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธ—เธตเนˆเน€เธกเธ™เธนเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ', + mandarin: 'ๆญคๅฎž้ชŒๆ€งๅŠŸ่ƒฝไฝฟ็”จ็ปๆ–‡ๆ ‡็ญพๅธฎๅŠฉ็ป„็ป‡ๅœฃ็ป่ต„ๆบใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๅœจ่ฎพ็ฝฎ่œๅ•ไธญๅฏ็”จ/็ฆ็”จๅฎƒใ€‚' }, verseMarkersDescription: { english: 'Enable verse labels to help organize Bible resources', @@ -7306,7 +10832,11 @@ export const localizations = { indonesian: 'Aktifkan label versi untuk membantu mengorganisir sumber daya Alkitab', nepali: - 'เคฌเคพเค‡เคฌเคฒ เคธเฅเคฐเฅ‹เคคเคนเคฐเฅ‚ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค—เคฐเฅเคจ เคฎเคฆเฅเคฆเคค เค—เคฐเฅเคจ เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + 'เคฌเคพเค‡เคฌเคฒ เคธเฅเคฐเฅ‹เคคเคนเคฐเฅ‚ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค—เคฐเฅเคจ เคฎเคฆเฅเคฆเคค เค—เคฐเฅเคจ เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฌเคพเค‡เคฌเคฒ เคธเค‚เคธเคพเคงเคจเฅ‹เค‚ เค•เฅ‹ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคฎเคฆเคฆ เค•เฅ‡ เคฒเคฟเค เคชเคฆ เคฒเฅ‡เคฌเคฒ เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚', + burmese: 'แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€ฎแ€…แ€‰แ€บแ€›แ€”แ€บ แ€€แ€ฐแ€Šแ€ฎแ€›แ€”แ€บ แ€€แ€ปแ€™แ€บแ€ธแ€•แ€ญแ€ฏแ€’แ€บ แ€…แ€ฌแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ›เน‰เธฒเธขเธเธณเธเธฑเธšเธ‚เน‰เธญเน€เธžเธทเนˆเธญเธŠเนˆเธงเธขเธˆเธฑเธ”เธฃเธฐเน€เธšเธตเธขเธšเธ—เธฃเธฑเธžเธขเธฒเธเธฃเธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒ', + mandarin: 'ๅฏ็”จ็ปๆ–‡ๆ ‡็ญพไปฅๅธฎๅŠฉ็ป„็ป‡ๅœฃ็ป่ต„ๆบ' }, // Languoid Link Suggestion strings languoidLinkSuggestionTitle: { @@ -7315,7 +10845,11 @@ export const localizations = { brazilian_portuguese: 'ยฟVincular seu idioma?', tok_pisin: 'Joinim tok ples bilong yu?', indonesian: 'Apakah Anda ingin menghubungkan bahasa Anda?', - nepali: 'เค†เคซเฅเคจเฅ‹ เคญเคพเคทเคพ เคฒเคฟเค‚เค• เค—เคฐเฅเคจเฅเคนเฅเคจเฅเค›?' + nepali: 'เค†เคซเฅเคจเฅ‹ เคญเคพเคทเคพ เคฒเคฟเค‚เค• เค—เคฐเฅเคจเฅเคนเฅเคจเฅเค›?', + hindi: 'เค…เคชเคจเฅ€ เคญเคพเคทเคพ เคฒเคฟเค‚เค• เค•เคฐเฅ‡เค‚?', + burmese: 'แ€žแ€„แ€บแ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€™แ€Šแ€บแ€œแ€ฌแ€ธ?', + thai: 'เน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธ เธฒเธฉเธฒเธ‚เธญเธ‡เธ„เธธเธ“?', + mandarin: '้“พๆŽฅๆ‚จ็š„่ฏญ่จ€๏ผŸ' }, languoidLinkSuggestionDrawerTitle: { english: 'Link to existing language', @@ -7323,7 +10857,11 @@ export const localizations = { brazilian_portuguese: 'Vincular a um idioma existente', tok_pisin: 'Joinim wanpela tok ples', indonesian: 'Hubungkan ke bahasa yang ada', - nepali: 'เค…เคตเคธเฅเคฅเคฟเคค เคญเคพเคทเคพเคฎเคพ เคฒเคฟเค‚เค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เค…เคตเคธเฅเคฅเคฟเคค เคญเคพเคทเคพเคฎเคพ เคฒเคฟเค‚เค• เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฎเฅŒเคœเฅ‚เคฆเคพ เคญเคพเคทเคพ เคธเฅ‡ เคฒเคฟเค‚เค• เค•เคฐเฅ‡เค‚', + burmese: 'แ€›แ€พแ€ญแ€•แ€ผแ€ฎแ€ธแ€žแ€ฌแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€žแ€ญแ€ฏแ€ท แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€•แ€ซ', + thai: 'เน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆ', + mandarin: '้“พๆŽฅๅˆฐ็Žฐๆœ‰่ฏญ่จ€' }, languoidLinkSuggestionDescription: { english: @@ -7337,7 +10875,14 @@ export const localizations = { indonesian: 'Kami menemukan bahasa yang ada yang mungkin cocok dengan yang Anda buat. Apakah Anda ingin menghubungkan ke bahasa yang ada?', nepali: - 'เคนเคพเคฎเฅ€เคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคญเคเค•เฅ‹ เคธเคเค— เคฎเฅ‡เคฒ เค–เคพเคจ เคธเค•เฅเคจเฅ‡ เค…เคตเคธเฅเคฅเคฟเคค เคญเคพเคทเคพเคนเคฐเฅ‚ เคซเฅ‡เคฒเคพ เคชเคพเคฐเฅเคฏเฅŒเค‚เฅค เค•เฅ‡ เคคเคชเคพเคˆเค‚ เค…เคตเคธเฅเคฅเคฟเคค เคญเคพเคทเคพเคฎเคพ เคฒเคฟเค‚เค• เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›?' + 'เคนเคพเคฎเฅ€เคฒเฅ‡ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเฅเคจเฅเคญเคเค•เฅ‹ เคธเคเค— เคฎเฅ‡เคฒ เค–เคพเคจ เคธเค•เฅเคจเฅ‡ เค…เคตเคธเฅเคฅเคฟเคค เคญเคพเคทเคพเคนเคฐเฅ‚ เคซเฅ‡เคฒเคพ เคชเคพเคฐเฅเคฏเฅŒเค‚เฅค เค•เฅ‡ เคคเคชเคพเคˆเค‚ เค…เคตเคธเฅเคฅเคฟเคค เคญเคพเคทเคพเคฎเคพ เคฒเคฟเค‚เค• เค—เคฐเฅเคจ เคšเคพเคนเคจเฅเคนเฅเคจเฅเค›?', + hindi: + 'เคนเคฎเฅ‡เค‚ เคฎเฅŒเคœเฅ‚เคฆเคพ เคญเคพเคทเคพเคเค‚ เคฎเคฟเคฒเฅ€เค‚ เคœเฅ‹ เค†เคชเค•เฅ‡ เคฆเฅเคตเคพเคฐเคพ เคฌเคจเคพเคˆ เค—เคˆ เคญเคพเคทเคพ เคธเฅ‡ เคฎเฅ‡เคฒ เค–เคพ เคธเค•เคคเฅ€ เคนเฅˆเค‚เฅค เค•เฅเคฏเคพ เค†เคช เคฎเฅŒเคœเฅ‚เคฆเคพ เคญเคพเคทเคพ เคธเฅ‡ เคฒเคฟเค‚เค• เค•เคฐเคจเคพ เคšเคพเคนเฅ‡เค‚เค—เฅ‡?', + burmese: + 'แ€žแ€„แ€บแ€–แ€”แ€บแ€แ€ฎแ€ธแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌ แ€›แ€พแ€ญแ€•แ€ผแ€ฎแ€ธแ€žแ€ฌแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ท แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€›แ€พแ€ญแ€•แ€ผแ€ฎแ€ธแ€žแ€ฌแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€žแ€ญแ€ฏแ€ท แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€œแ€ญแ€ฏแ€•แ€ซแ€žแ€œแ€ฌแ€ธ?', + thai: + 'เน€เธฃเธฒเธžเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเธ‹เธถเนˆเธ‡เธญเธฒเธˆเธ•เธฃเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธ„เธธเธ“เธชเธฃเน‰เธฒเธ‡ เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเธซเธฃเธทเธญเน„เธกเนˆ?', + mandarin: 'ๆˆ‘ไปฌๆ‰พๅˆฐไบ†ๅฏ่ƒฝไธŽๆ‚จๅˆ›ๅปบ็š„่ฏญ่จ€ๅŒน้…็š„็Žฐๆœ‰่ฏญ่จ€ใ€‚ๆ‚จๆƒณ้“พๆŽฅๅˆฐ็Žฐๆœ‰่ฏญ่จ€ๅ—๏ผŸ' }, yourLanguage: { english: 'Your language', @@ -7345,7 +10890,11 @@ export const localizations = { brazilian_portuguese: 'Seu idioma', tok_pisin: 'Tok ples bilong yu', indonesian: 'Bahasa Anda', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคญเคพเคทเคพ' + nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคญเคพเคทเคพ', + hindi: 'เค†เคชเค•เฅ€ เคญเคพเคทเคพ', + burmese: 'แ€žแ€„แ€บแ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ', + thai: 'เธ เธฒเธฉเธฒเธ‚เธญเธ‡เธ„เธธเธ“', + mandarin: 'ๆ‚จ็š„่ฏญ่จ€' }, seeLanguageSuggestions: { english: 'See language suggestions', @@ -7353,7 +10902,11 @@ export const localizations = { brazilian_portuguese: 'Ver sugestรตes de idioma', tok_pisin: 'Lukim ol tok ples bilong en', indonesian: 'Lihat sugesti bahasa', - nepali: 'เคญเคพเคทเคพ เคธเฅเคเคพเคตเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคญเคพเคทเคพ เคธเฅเคเคพเคตเคนเคฐเฅ‚ เคนเฅ‡เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคญเคพเคทเคพ เคธเฅเคเคพเคต เคฆเฅ‡เค–เฅ‡เค‚', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€•แ€ซ', + thai: 'เธ”เธนเธ„เธณเนเธ™เธฐเธ™เธณเธ เธฒเธฉเธฒ', + mandarin: 'ๆŸฅ็œ‹่ฏญ่จ€ๅปบ่ฎฎ' }, keepMyLanguage: { english: 'Keep my language', @@ -7361,7 +10914,11 @@ export const localizations = { brazilian_portuguese: 'Manter meu idioma', tok_pisin: 'Holim tok ples bilong mi', indonesian: 'Simpan bahasa saya', - nepali: 'เคฎเฅ‡เคฐเฅ‹ เคญเคพเคทเคพ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฎเฅ‡เคฐเฅ‹ เคญเคพเคทเคพ เคฐเคพเค–เฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฎเฅ‡เคฐเฅ€ เคญเคพเคทเคพ เคฐเค–เฅ‡เค‚', + burmese: 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€‘แ€ฌแ€ธแ€•แ€ซ', + thai: 'เน€เธเน‡เธšเธ เธฒเธฉเธฒเธ‚เธญเธ‡เธ‰เธฑเธ™', + mandarin: 'ไฟ็•™ๆˆ‘็š„่ฏญ่จ€' }, chooseThisLanguage: { english: 'Choose this language', @@ -7369,7 +10926,11 @@ export const localizations = { brazilian_portuguese: 'Escolher este idioma', tok_pisin: 'Pilim dispela tok ples', indonesian: 'Pilih bahasa ini', - nepali: 'เคฏเฅ‹ เคญเคพเคทเคพ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ' + nepali: 'เคฏเฅ‹ เคญเคพเคทเคพ เค›เคพเคจเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: 'เคฏเคน เคญเคพเคทเคพ เคšเฅเคจเฅ‡เค‚', + burmese: 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€ฝแ€ฑแ€ธแ€•แ€ซ', + thai: 'เน€เธฅเธทเธญเธเธ เธฒเธฉเธฒเธ™เธตเน‰', + mandarin: '้€‰ๆ‹ฉๆญค่ฏญ่จ€' }, exactMatch: { english: 'Exact match', @@ -7377,7 +10938,11 @@ export const localizations = { brazilian_portuguese: 'Correspondรชncia exata', tok_pisin: 'Sem tru', indonesian: 'Kecocokan persis', - nepali: 'เค เฅ€เค• เคฎเคฟเคฒเฅเคฏเฅ‹' + nepali: 'เค เฅ€เค• เคฎเคฟเคฒเฅเคฏเฅ‹', + hindi: 'เคธเคŸเฅ€เค• เคฎเคฟเคฒเคพเคจ', + burmese: 'แ€แ€ญแ€€แ€ปแ€žแ€ฑแ€ฌ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€™แ€พแ€ฏ', + thai: 'เธ•เธฃเธ‡เธเธฑเธ™เธ—เธธเธเธ›เธฃเธฐเธเธฒเธฃ', + mandarin: 'ๅฎŒๅ…จๅŒน้…' }, partialMatch: { english: 'Partial match', @@ -7385,7 +10950,11 @@ export const localizations = { brazilian_portuguese: 'Correspondรชncia parcial', tok_pisin: 'Luk olsem', indonesian: 'Kecocokan sebagian', - nepali: 'เค†เค‚เคถเคฟเค• เคฎเคฟเคฒเฅเคฏเฅ‹' + nepali: 'เค†เค‚เคถเคฟเค• เคฎเคฟเคฒเฅเคฏเฅ‹', + hindi: 'เค†เค‚เคถเคฟเค• เคฎเคฟเคฒเคพเคจ', + burmese: 'แ€แ€…แ€บแ€…แ€ญแ€แ€บแ€แ€…แ€บแ€•แ€ญแ€ฏแ€„แ€บแ€ธ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€™แ€พแ€ฏ', + thai: 'เธ•เธฃเธ‡เธเธฑเธ™เธšเธฒเธ‡เธชเนˆเธงเธ™', + mandarin: '้ƒจๅˆ†ๅŒน้…' }, matchedByName: { english: 'Matched by name', @@ -7393,7 +10962,11 @@ export const localizations = { brazilian_portuguese: 'Correspondido por nome', tok_pisin: 'Painim long nem', indonesian: 'Cocok berdasarkan nama', - nepali: 'เคจเคพเคฎเคฆเฅเคตเคพเคฐเคพ เคฎเฅ‡เคฒ เค–เคพเคฏเฅ‹' + nepali: 'เคจเคพเคฎเคฆเฅเคตเคพเคฐเคพ เคฎเฅ‡เคฒ เค–เคพเคฏเฅ‹', + hindi: 'เคจเคพเคฎ เคธเฅ‡ เคฎเฅ‡เคฒ เค–เคพเคฏเคพ', + burmese: 'แ€กแ€™แ€Šแ€บแ€–แ€ผแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€žแ€Šแ€บ', + thai: 'เธ•เธฃเธ‡เธเธฑเธ™เธ•เธฒเธกเธŠเธทเนˆเธญ', + mandarin: 'ๆŒ‰ๅ็งฐๅŒน้…' }, matchedByAlias: { english: 'Matched by alias', @@ -7401,7 +10974,11 @@ export const localizations = { brazilian_portuguese: 'Correspondido por alias', tok_pisin: 'Painim long narapela nem', indonesian: 'Cocok berdasarkan alias', - nepali: 'เค‰เคชเคจเคพเคฎเคฆเฅเคตเคพเคฐเคพ เคฎเฅ‡เคฒ เค–เคพเคฏเฅ‹' + nepali: 'เค‰เคชเคจเคพเคฎเคฆเฅเคตเคพเคฐเคพ เคฎเฅ‡เคฒ เค–เคพเคฏเฅ‹', + hindi: 'เค‰เคชเคจเคพเคฎ เคธเฅ‡ เคฎเฅ‡เคฒ เค–เคพเคฏเคพ', + burmese: 'แ€กแ€™แ€Šแ€บแ€•แ€ผแ€ฑแ€ฌแ€„แ€บแ€–แ€ผแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€žแ€Šแ€บ', + thai: 'เธ•เธฃเธ‡เธเธฑเธ™เธ•เธฒเธกเธ™เธฒเธกเนเธเธ‡', + mandarin: 'ๆŒ‰ๅˆซๅๅŒน้…' }, matchedByIsoCode: { english: 'Matched by ISO code', @@ -7409,7 +10986,11 @@ export const localizations = { brazilian_portuguese: 'Correspondido por cรณdigo ISO', tok_pisin: 'Painim long ISO kod', indonesian: 'Cocok berdasarkan kode ISO', - nepali: 'ISO เค•เฅ‹เคกเคฆเฅเคตเคพเคฐเคพ เคฎเฅ‡เคฒ เค–เคพเคฏเฅ‹' + nepali: 'ISO เค•เฅ‹เคกเคฆเฅเคตเคพเคฐเคพ เคฎเฅ‡เคฒ เค–เคพเคฏเฅ‹', + hindi: 'ISO เค•เฅ‹เคก เคธเฅ‡ เคฎเฅ‡เคฒ เค–เคพเคฏเคพ', + burmese: 'ISO แ€€แ€ฏแ€’แ€บแ€–แ€ผแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€žแ€Šแ€บ', + thai: 'เธ•เธฃเธ‡เธเธฑเธ™เธ•เธฒเธกเธฃเธซเธฑเธช ISO', + mandarin: 'ๆŒ‰ISOไปฃ็ ๅŒน้…' }, languageLinkSuccess: { english: 'Language linked successfully', @@ -7417,7 +10998,11 @@ export const localizations = { brazilian_portuguese: 'Idioma vinculado com sucesso', tok_pisin: 'Tok ples joinim gut', indonesian: 'Bahasa berhasil dihubungkan', - nepali: 'เคญเคพเคทเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฒเคฟเค‚เค• เคญเคฏเฅ‹' + nepali: 'เคญเคพเคทเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฒเคฟเค‚เค• เคญเคฏเฅ‹', + hindi: 'เคญเคพเคทเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคฒเคฟเค‚เค• เคนเฅ‹ เค—เคˆ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธ เธฒเธฉเธฒเธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง', + mandarin: '่ฏญ่จ€้“พๆŽฅๆˆๅŠŸ' }, languageLinkError: { english: 'Failed to link language', @@ -7425,7 +11010,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao vincular idioma', tok_pisin: 'No inap joinim tok ples', indonesian: 'Gagal menghubungkan bahasa', - nepali: 'เคญเคพเคทเคพ เคฒเคฟเค‚เค• เค—เคฐเฅเคจ เค…เคธเคซเคฒ' + nepali: 'เคญเคพเคทเคพ เคฒเคฟเค‚เค• เค—เคฐเฅเคจ เค…เคธเคซเคฒ', + hindi: 'เคญเคพเคทเคพ เคฒเคฟเค‚เค• เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซ', + thai: 'เน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธ เธฒเธฉเธฒเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ', + mandarin: '้“พๆŽฅ่ฏญ่จ€ๅคฑ่ดฅ' }, keepLanguageSuccess: { english: 'Your custom language has been kept', @@ -7433,7 +11022,11 @@ export const localizations = { brazilian_portuguese: 'Seu idioma personalizado foi mantido', tok_pisin: 'Tok ples bilong yu i stap yet', indonesian: 'Bahasa kustom Anda telah disimpan', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค†เคซเฅเคจเฅˆ เคญเคพเคทเคพ เคฐเคพเค–เคฟเคเค•เฅ‹ เค›' + nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค†เคซเฅเคจเฅˆ เคญเคพเคทเคพ เคฐเคพเค–เคฟเคเค•เฅ‹ เค›', + hindi: 'เค†เคชเค•เฅ€ เค•เคธเฅเคŸเคฎ เคญเคพเคทเคพ เคฐเค–เฅ€ เค—เคˆ เคนเฅˆ', + burmese: 'แ€žแ€„แ€บแ แ€…แ€ญแ€แ€บแ€€แ€ผแ€ญแ€ฏแ€€แ€บ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€€แ€ญแ€ฏ แ€‘แ€ฌแ€ธแ€›แ€พแ€ญแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ', + thai: 'เน€เธเน‡เธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธเธณเธซเธ™เธ”เน€เธญเธ‡เธ‚เธญเธ‡เธ„เธธเธ“เนเธฅเน‰เธง', + mandarin: 'ๆ‚จ็š„่‡ชๅฎšไน‰่ฏญ่จ€ๅทฒไฟ็•™' }, enableLanguoidLinkSuggestions: { english: 'Language link suggestions', @@ -7441,7 +11034,11 @@ export const localizations = { brazilian_portuguese: 'Sugestรตes de vinculaรงรฃo de idioma', tok_pisin: 'Ol tok ples bilong joinim', indonesian: 'Saran tautan bahasa', - nepali: 'เคญเคพเคทเคพ เคฒเคฟเค‚เค• เคธเฅเคเคพเคตเคนเคฐเฅ‚' + nepali: 'เคญเคพเคทเคพ เคฒเคฟเค‚เค• เคธเฅเคเคพเคตเคนเคฐเฅ‚', + hindi: 'เคญเคพเคทเคพ เคฒเคฟเค‚เค• เคธเฅเคเคพเคต', + burmese: 'แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€™แ€พแ€ฏ แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ', + thai: 'เธ„เธณเนเธ™เธฐเธ™เธณเธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธ เธฒเธฉเธฒ', + mandarin: '่ฏญ่จ€้“พๆŽฅๅปบ่ฎฎ' }, enableLanguoidLinkSuggestionsDescription: { english: @@ -7455,7 +11052,14 @@ export const localizations = { indonesian: 'Dapatkan saran untuk menghubungkan bahasa kustom Anda dengan yang ada di database', nepali: - 'เค†เคซเฅเคจเฅ‹ เค†เคซเฅเคจเฅˆ-เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเคฟเคเค•เคพ เคญเคพเคทเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคกเคพเคŸเคพเคฌเฅ‡เคธเคฎเคพ เค…เคตเคธเฅเคฅเคฟเคค เคญเคพเคทเคพเคนเคฐเฅ‚เคธเคเค— เคฒเคฟเค‚เค• เค—เคฐเฅเคจ เคธเฅเคเคพเคตเคนเคฐเฅ‚ เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + 'เค†เคซเฅเคจเฅ‹ เค†เคซเฅเคจเฅˆ-เคธเคฟเคฐเฅเคœเคจเคพ เค—เคฐเคฟเคเค•เคพ เคญเคพเคทเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคกเคพเคŸเคพเคฌเฅ‡เคธเคฎเคพ เค…เคตเคธเฅเคฅเคฟเคค เคญเคพเคทเคพเคนเคฐเฅ‚เคธเคเค— เคฒเคฟเค‚เค• เค—เคฐเฅเคจ เคธเฅเคเคพเคตเคนเคฐเฅ‚ เคชเฅเคฐเคพเคชเฅเคค เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hindi: + 'เค…เคชเคจเฅ€ เค•เคธเฅเคŸเคฎ-เคฌเคจเคพเคˆ เค—เคˆ เคญเคพเคทเคพเค“เค‚ เค•เฅ‹ เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคฎเฅ‡เค‚ เคฎเฅŒเคœเฅ‚เคฆเคพ เคญเคพเคทเคพเค“เค‚ เคธเฅ‡ เคฒเคฟเค‚เค• เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเฅเคเคพเคต เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเฅ‡เค‚', + burmese: + 'แ€žแ€„แ€บแ แ€…แ€ญแ€แ€บแ€€แ€ผแ€ญแ€ฏแ€€แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€›แ€พแ€ญ แ€›แ€พแ€ญแ€•แ€ผแ€ฎแ€ธแ€žแ€ฌแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€žแ€ญแ€ฏแ€ท แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€”แ€บ แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ แ€›แ€šแ€ฐแ€•แ€ซ', + thai: + 'เธฃเธฑเธšเธ„เธณเนเธ™เธฐเธ™เธณเน€เธžเธทเนˆเธญเน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธ เธฒเธฉเธฒเธ—เธตเนˆเธ„เธธเธ“เธชเธฃเน‰เธฒเธ‡เน€เธญเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ', + mandarin: '่Žทๅ–ๅปบ่ฎฎ๏ผŒๅฐ†ๆ‚จ่‡ชๅฎšไน‰ๅˆ›ๅปบ็š„่ฏญ่จ€้“พๆŽฅๅˆฐๆ•ฐๆฎๅบ“ไธญ็š„็Žฐๆœ‰่ฏญ่จ€' } } as const; diff --git a/supabase/functions/send-email/_templates/confirm-email.tsx b/supabase/functions/send-email/_templates/confirm-email.tsx index 54a20a7e3..093ec0706 100644 --- a/supabase/functions/send-email/_templates/confirm-email.tsx +++ b/supabase/functions/send-email/_templates/confirm-email.tsx @@ -85,6 +85,41 @@ export const ConfirmEmail = ({ button: 'เค–เคพเคคเคพ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', orCopy: 'เคตเคพ เคฏเฅ‹ เคฒเคฟเค‚เค• เคคเคชเคพเคˆเค‚เค•เฅ‹ เคฌเฅเคฐเคพเค‰เคœเคฐเคฎเคพ เค•เคชเคฟ เคฐ เคชเฅ‡เคธเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ:', expiry: 'เคฏเฅ‹ เคฒเคฟเค‚เค• เฅจเฅช เค˜เคฃเฅเคŸเคพเคฎเคพ เคธเคฎเคพเคชเฅเคค เคนเฅเคจเฅ‡เค›เฅค' + }, + hi: { + preview: 'เค…เคชเคจเคพ LangQuest เค–เคพเคคเคพ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + title: 'เค…เคชเคจเคพ เค–เคพเคคเคพ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + description: + 'เค…เคชเคจเคพ เค–เคพเคคเคพ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเคจเฅ‡ เค”เคฐ เคชเค‚เคœเฅ€เค•เคฐเคฃ เคชเฅ‚เคฐเคพ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค‡เคธ เคฒเคฟเค‚เค• เค•เคพ เค…เคจเฅเคธเคฐเคฃ เค•เคฐเฅ‡เค‚:', + button: 'เค–เคพเคคเคพ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + orCopy: 'เคฏเคพ เค…เคชเคจเฅ‡ เคฌเฅเคฐเคพเค‰เคœเคผเคฐ เคฎเฅ‡เค‚ เค‡เคธ เคฒเคฟเค‚เค• เค•เฅ‹ เค•เฅ‰เคชเฅ€ เค”เคฐ เคชเฅ‡เคธเฅเคŸ เค•เคฐเฅ‡เค‚:', + expiry: 'เคฏเคน เคฒเคฟเค‚เค• 24 เค˜เค‚เคŸเฅ‡ เคฎเฅ‡เค‚ เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เคœเคพเคเค—เคพเฅค' + }, + my: { + preview: 'แ€žแ€„แ€บแ LangQuest แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + title: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + description: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€›แ€”แ€บแ€”แ€พแ€„แ€ทแ€บ แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€•แ€ผแ€ฎแ€ธแ€™แ€ผแ€ฑแ€ฌแ€€แ€บแ€…แ€ฑแ€›แ€”แ€บ แ€คแ€œแ€„แ€ทแ€บแ€แ€บแ€€แ€ญแ€ฏ แ€œแ€ญแ€ฏแ€€แ€บแ€”แ€ฌแ€•แ€ซ:', + button: 'แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + orCopy: 'แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€คแ€œแ€„แ€ทแ€บแ€แ€บแ€€แ€ญแ€ฏ แ€žแ€„แ€บแ แ€˜แ€›แ€ฑแ€ฌแ€€แ€บแ€†แ€ฌแ€แ€ฝแ€„แ€บ แ€€แ€ฐแ€ธแ€šแ€ฐแ แ€‘แ€Šแ€ทแ€บแ€•แ€ซ:', + expiry: 'แ€คแ€œแ€„แ€ทแ€บแ€แ€บแ€žแ€Šแ€บ 24 แ€”แ€ฌแ€›แ€ฎแ€กแ€แ€ฝแ€„แ€บแ€ธ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€™แ€Šแ€บแ‹' + }, + th: { + preview: 'เธขเธทเธ™เธขเธฑเธ™เธšเธฑเธเธŠเธต LangQuest เธ‚เธญเธ‡เธ„เธธเธ“', + title: 'เธขเธทเธ™เธขเธฑเธ™เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“', + description: + 'เธ—เธณเธ•เธฒเธกเธฅเธดเธ‡เธเนŒเธ™เธตเน‰เน€เธžเธทเนˆเธญเธขเธทเธ™เธขเธฑเธ™เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เนเธฅเธฐเธ—เธณเธเธฒเธฃเธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™เนƒเธซเน‰เน€เธชเธฃเน‡เธˆเธชเธกเธšเธนเธฃเธ“เนŒ:', + button: 'เธขเธทเธ™เธขเธฑเธ™เธšเธฑเธเธŠเธต', + orCopy: 'เธซเธฃเธทเธญเธ„เธฑเธ”เธฅเธญเธเนเธฅเธฐเธงเธฒเธ‡เธฅเธดเธ‡เธเนŒเธ™เธตเน‰เนƒเธ™เน€เธšเธฃเธฒเธงเนŒเน€เธ‹เธญเธฃเนŒเธ‚เธญเธ‡เธ„เธธเธ“:', + expiry: 'เธฅเธดเธ‡เธเนŒเธ™เธตเน‰เธˆเธฐเธซเธกเธ”เธญเธฒเธขเธธเนƒเธ™ 24 เธŠเธฑเนˆเธงเน‚เธกเธ‡' + }, + 'zh-CN': { + preview: '็กฎ่ฎคๆ‚จ็š„ LangQuest ่ดฆๆˆท', + title: '็กฎ่ฎคๆ‚จ็š„่ดฆๆˆท', + description: '่ฏท็‚นๅ‡ปๆญค้“พๆŽฅไปฅ็กฎ่ฎคๆ‚จ็š„่ดฆๆˆทๅนถๅฎŒๆˆๆณจๅ†Œ:', + button: '็กฎ่ฎค่ดฆๆˆท', + orCopy: 'ๆˆ–่€…ๅฐ†ๆญค้“พๆŽฅๅคๅˆถๅนถ็ฒ˜่ดดๅˆฐๆ‚จ็š„ๆต่งˆๅ™จไธญ:', + expiry: 'ๆญค้“พๆŽฅๅฐ†ๅœจ 24 ๅฐๆ—ถๅŽ่ฟ‡ๆœŸใ€‚' } }; diff --git a/supabase/functions/send-email/_templates/invite-email.tsx b/supabase/functions/send-email/_templates/invite-email.tsx index f98b37e3b..93f2dccc5 100644 --- a/supabase/functions/send-email/_templates/invite-email.tsx +++ b/supabase/functions/send-email/_templates/invite-email.tsx @@ -116,6 +116,56 @@ export const InviteEmail = ({ button: 'LangQuest เคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจเฅเคนเฅ‹เคธเฅ', orCopy: 'เคตเคพ เคฏเฅ‹ เคฒเคฟเค‚เค• เคคเคชเคพเคˆเค‚เค•เฅ‹ เคฌเฅเคฐเคพเค‰เคœเคฐเคฎเคพ เค•เคชเคฟ เคฐ เคชเฅ‡เคธเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ:', expiry: 'เคฏเฅ‹ เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคฒเคฟเค‚เค• เฅญ เคฆเคฟเคจเคฎเคพ เคธเคฎเคพเคชเฅเคค เคนเฅเคจเฅ‡เค›เฅค' + }, + hi: { + preview: `เค†เคชเค•เฅ‹ ${projectName} เคฎเฅ‡เค‚ LangQuest เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ`, + title: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เค†เคฎเค‚เคคเฅเคฐเคฃ', + greeting: 'เคจเคฎเคธเฅเคคเฅ‡!', + description: `${inviterName} เคจเฅ‡ เค†เคชเค•เฅ‹ LangQuest เคชเคฐ "${projectName}" เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฟเคฏเคพ เคนเฅˆ, เคเค• เคธเคนเคฏเฅ‹เค—เฅ€ เคญเคพเคทเคพ เคธเฅ€เค–เคจเฅ‡ เค•เคพ เคฎเค‚เคšเฅค`, + whatIsLangQuest: + 'LangQuest เคธเคฎเฅเคฆเคพเคฏเฅ‹เค‚ เค•เฅ‹ เคญเคพเคทเคพ เคธเฅ€เค–เคจเฅ‡ เค•เฅ‡ เคธเค‚เคธเคพเคงเคจ เคฌเคจเคพเคจเฅ‡ เค”เคฐ เคธเคพเคเคพ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคฎเคฆเคฆ เค•เคฐเคคเคพ เคนเฅˆเฅค เค…เคจเฅเคตเคพเคฆ, เค‘เคกเคฟเคฏเฅ‹ เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคฎเฅ‡เค‚ เคฏเฅ‹เค—เคฆเคพเคจ เคฆเฅ‡เคจเฅ‡ เค”เคฐ เคฆเฅเคจเคฟเคฏเคพ เคญเคฐ เค•เฅ€ เคญเคพเคทเคพเค“เค‚ เค•เฅ‹ เคธเค‚เคฐเค•เฅเคทเคฟเคค เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคฎเคฆเคฆ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคนเคฎเคธเฅ‡ เคœเฅเคกเคผเฅ‡เค‚เฅค', + instruction: + 'เค…เคชเคจเคพ เค–เคพเคคเคพ เคฌเคจเคพเคจเฅ‡ เค”เคฐ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคจเฅ€เคšเฅ‡ เคฆเคฟเค เค—เค เคฌเคŸเคจ เคชเคฐ เค•เฅเคฒเคฟเค• เค•เคฐเฅ‡เค‚:', + button: 'LangQuest เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เค‚', + orCopy: 'เคฏเคพ เค…เคชเคจเฅ‡ เคฌเฅเคฐเคพเค‰เคœเคผเคฐ เคฎเฅ‡เค‚ เค‡เคธ เคฒเคฟเค‚เค• เค•เฅ‹ เค•เฅ‰เคชเฅ€ เค”เคฐ เคชเฅ‡เคธเฅเคŸ เค•เคฐเฅ‡เค‚:', + expiry: 'เคฏเคน เค†เคฎเค‚เคคเฅเคฐเคฃ เคฒเคฟเค‚เค• 7 เคฆเคฟเคจเฅ‹เค‚ เคฎเฅ‡เค‚ เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เคœเคพเคเค—เคพเฅค' + }, + my: { + preview: `แ€žแ€„แ€ทแ€บแ€กแ€ฌแ€ธ ${projectName} แ€แ€ฝแ€„แ€บ LangQuest แ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€‘แ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บ`, + title: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€แ€ผแ€„แ€บแ€ธ', + greeting: 'แ€™แ€„แ€บแ€นแ€‚แ€œแ€ฌแ€•แ€ซ!', + description: `${inviterName} แ€žแ€Šแ€บ แ€žแ€„แ€ทแ€บแ€กแ€ฌแ€ธ LangQuest แ€แ€ฝแ€„แ€บ "${projectName}" แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€‘แ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บแŠ แ€•แ€ฐแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€ฝแ€€แ€บแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€žแ€„แ€บแ€šแ€ฐแ€™แ€พแ€ฏ แ€•แ€œแ€€แ€บแ€–แ€ฑแ€ฌแ€„แ€บแ€ธแ€แ€…แ€บแ€แ€ฏแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹`, + whatIsLangQuest: + 'LangQuest แ€žแ€Šแ€บ แ€กแ€žแ€ญแ€ฏแ€„แ€บแ€ธแ€กแ€แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€žแ€„แ€บแ€šแ€ฐแ€™แ€พแ€ฏ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€™แ€ปแ€ฌแ€ธ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€›แ€”แ€บแ€”แ€พแ€„แ€ทแ€บ แ€™แ€ปแ€พแ€แ€ฑแ€›แ€”แ€บ แ€€แ€ฐแ€Šแ€ฎแ€•แ€ฑแ€ธแ€žแ€Šแ€บแ‹ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ผแ€„แ€บแ€ธแŠ แ€กแ€žแ€ถแ€–แ€™แ€บแ€ธแ€šแ€ฐแ€แ€ผแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€ฝแ€€แ€บแ€›แ€”แ€บแ€”แ€พแ€„แ€ทแ€บ แ€€แ€™แ€นแ€˜แ€ฌแ€แ€…แ€บแ€แ€พแ€™แ€บแ€ธแ€›แ€พแ€ญ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€‘แ€ญแ€”แ€บแ€ธแ€žแ€ญแ€™แ€บแ€ธแ€›แ€”แ€บ แ€€แ€ฐแ€Šแ€ฎแ€›แ€”แ€บ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ทแ€”แ€พแ€„แ€ทแ€บ แ€•แ€ฐแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€•แ€ซแ‹', + instruction: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€›แ€”แ€บแ€”แ€พแ€„แ€ทแ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€กแ€ฑแ€ฌแ€€แ€บแ€•แ€ซ แ€แ€œแ€ฏแ€แ€บแ€€แ€ญแ€ฏ แ€”แ€พแ€ญแ€•แ€บแ€•แ€ซ:', + button: 'LangQuest แ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€•แ€ซ', + orCopy: 'แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€คแ€œแ€„แ€ทแ€บแ€แ€บแ€€แ€ญแ€ฏ แ€žแ€„แ€บแ แ€˜แ€›แ€ฑแ€ฌแ€€แ€บแ€†แ€ฌแ€แ€ฝแ€„แ€บ แ€€แ€ฐแ€ธแ€šแ€ฐแ แ€‘แ€Šแ€ทแ€บแ€•แ€ซ:', + expiry: 'แ€คแ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€แ€ผแ€„แ€บแ€ธ แ€œแ€„แ€ทแ€บแ€แ€บแ€žแ€Šแ€บ 7 แ€›แ€€แ€บแ€กแ€แ€ฝแ€„แ€บแ€ธ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€™แ€Šแ€บแ‹' + }, + th: { + preview: `เธ„เธธเธ“เน„เธ”เน‰เธฃเธฑเธšเน€เธŠเธดเธเนƒเธซเน‰เน€เธ‚เน‰เธฒเธฃเนˆเธงเธก ${projectName} เนƒเธ™ LangQuest`, + title: 'เธ„เธณเน€เธŠเธดเธเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃ', + greeting: 'เธชเธงเธฑเธชเธ”เธต!', + description: `${inviterName} เน„เธ”เน‰เน€เธŠเธดเธเธ„เธธเธ“เนƒเธซเน‰เน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃ "${projectName}" เนƒเธ™ LangQuest เธ‹เธถเนˆเธ‡เน€เธ›เน‡เธ™เนเธžเธฅเธ•เธŸเธญเธฃเนŒเธกเธเธฒเธฃเน€เธฃเธตเธขเธ™เธฃเธนเน‰เธ เธฒเธฉเธฒเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™เธฃเนˆเธงเธกเธเธฑเธ™`, + whatIsLangQuest: + 'LangQuest เธŠเนˆเธงเธขเนƒเธซเน‰เธŠเธธเธกเธŠเธ™เธชเธฃเน‰เธฒเธ‡เนเธฅเธฐเนเธšเนˆเธ‡เธ›เธฑเธ™เธ—เธฃเธฑเธžเธขเธฒเธเธฃเธเธฒเธฃเน€เธฃเธตเธขเธ™เธฃเธนเน‰เธ เธฒเธฉเธฒ เน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเธเธฑเธšเน€เธฃเธฒเน€เธžเธทเนˆเธญเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™เธเธฒเธฃเนเธ›เธฅ เธšเธฑเธ™เธ—เธถเธเน€เธชเธตเธขเธ‡ เนเธฅเธฐเธŠเนˆเธงเธขเธฃเธฑเธเธฉเธฒเธ เธฒเธฉเธฒเธ—เธฑเนˆเธงเน‚เธฅเธ', + instruction: 'เธ„เธฅเธดเธเธ›เธธเนˆเธกเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เนเธฅเธฐเน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃ:', + button: 'เน€เธ‚เน‰เธฒเธฃเนˆเธงเธก LangQuest', + orCopy: 'เธซเธฃเธทเธญเธ„เธฑเธ”เธฅเธญเธเนเธฅเธฐเธงเธฒเธ‡เธฅเธดเธ‡เธเนŒเธ™เธตเน‰เนƒเธ™เน€เธšเธฃเธฒเธงเนŒเน€เธ‹เธญเธฃเนŒเธ‚เธญเธ‡เธ„เธธเธ“:', + expiry: 'เธฅเธดเธ‡เธเนŒเธ„เธณเน€เธŠเธดเธเธ™เธตเน‰เธˆเธฐเธซเธกเธ”เธญเธฒเธขเธธเนƒเธ™ 7 เธงเธฑเธ™' + }, + 'zh-CN': { + preview: `ๆ‚จๅทฒ่ขซ้‚€่ฏทๅŠ ๅ…ฅ LangQuest ไธŠ็š„ ${projectName}`, + title: '้กน็›ฎ้‚€่ฏท', + greeting: 'ๆ‚จๅฅฝ๏ผ', + description: `${inviterName} ้‚€่ฏทๆ‚จๅŠ ๅ…ฅ LangQuest ไธŠ็š„้กน็›ฎ "${projectName}"๏ผŒ่ฟ™ๆ˜ฏไธ€ไธชๅไฝœๅผ่ฏญ่จ€ๅญฆไน ๅนณๅฐใ€‚`, + whatIsLangQuest: + 'LangQuest ๅธฎๅŠฉ็คพๅŒบๅˆ›ๅปบๅ’Œๅˆ†ไบซ่ฏญ่จ€ๅญฆไน ่ต„ๆบใ€‚ๅŠ ๅ…ฅๆˆ‘ไปฌ๏ผŒ่ดก็Œฎ็ฟป่ฏ‘ใ€้Ÿณ้ข‘ๅฝ•ๅˆถ๏ผŒๅนถๅธฎๅŠฉไฟๆŠคไธ–็•Œๅ„ๅœฐ็š„่ฏญ่จ€ใ€‚', + instruction: '็‚นๅ‡ปไธ‹้ข็š„ๆŒ‰้’ฎๅˆ›ๅปบๆ‚จ็š„่ดฆๆˆทๅนถๅŠ ๅ…ฅ้กน็›ฎ:', + button: 'ๅŠ ๅ…ฅ LangQuest', + orCopy: 'ๆˆ–่€…ๅฐ†ๆญค้“พๆŽฅๅคๅˆถๅนถ็ฒ˜่ดดๅˆฐๆ‚จ็š„ๆต่งˆๅ™จไธญ:', + expiry: 'ๆญค้‚€่ฏท้“พๆŽฅๅฐ†ๅœจ 7 ๅคฉๅŽ่ฟ‡ๆœŸใ€‚' } }; diff --git a/supabase/functions/send-email/_templates/reset-password.tsx b/supabase/functions/send-email/_templates/reset-password.tsx index 793160be5..b8c350118 100644 --- a/supabase/functions/send-email/_templates/reset-password.tsx +++ b/supabase/functions/send-email/_templates/reset-password.tsx @@ -101,6 +101,52 @@ export const ResetPassword = ({ button: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', orCopy: 'เคตเคพ เคฏเฅ‹ เคฒเคฟเค‚เค• เคคเคชเคพเคˆเค‚เค•เฅ‹ เคฌเฅเคฐเคพเค‰เคœเคฐเคฎเคพ เค•เคชเคฟ เคฐ เคชเฅ‡เคธเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ:', expiry: 'เคฏเฅ‹ เคฒเคฟเค‚เค• เฅจเฅช เค˜เคฃเฅเคŸเคพเคฎเคพ เคธเคฎเคพเคชเฅเคค เคนเฅเคจเฅ‡เค›เฅค' + }, + hi: { + preview: 'เค…เคชเคจเคพ LangQuest เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคฐเฅ‡เค‚', + title: 'เค…เคชเคจเคพ เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคฐเฅ‡เค‚', + greeting: 'เคจเคฎเคธเฅเคคเฅ‡,', + description: + 'เค•เคฟเคธเฅ€ เคจเฅ‡ เค†เคชเค•เฅ‡ LangQuest เค–เคพเคคเฅ‡ เค•เฅ‡ เคฒเคฟเค เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคพ เค…เคจเฅเคฐเฅ‹เคง เค•เคฟเคฏเคพ เคนเฅˆเฅค เคฏเคฆเคฟ เคฏเคน เค†เคช เคจเคนเฅ€เค‚ เคฅเฅ‡, เคคเฅ‹ เค•เฅƒเคชเคฏเคพ เค‡เคธ เคˆเคฎเฅ‡เคฒ เค•เฅ‹ เค…เคจเคฆเฅ‡เค–เคพ เค•เคฐเฅ‡เค‚เฅค', + instruction: + 'เค…เคชเคจเคพ เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคจเฅ€เคšเฅ‡ เคฆเคฟเค เค—เค เคฌเคŸเคจ เคชเคฐ เค•เฅเคฒเคฟเค• เค•เคฐเฅ‡เค‚:', + button: 'เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคฐเฅ‡เค‚', + orCopy: 'เคฏเคพ เค…เคชเคจเฅ‡ เคฌเฅเคฐเคพเค‰เคœเคผเคฐ เคฎเฅ‡เค‚ เค‡เคธ เคฒเคฟเค‚เค• เค•เฅ‹ เค•เฅ‰เคชเฅ€ เค”เคฐ เคชเฅ‡เคธเฅเคŸ เค•เคฐเฅ‡เค‚:', + expiry: 'เคฏเคน เคฒเคฟเค‚เค• 24 เค˜เค‚เคŸเฅ‡ เคฎเฅ‡เค‚ เคธเคฎเคพเคชเฅเคค เคนเฅ‹ เคœเคพเคเค—เคพเฅค' + }, + my: { + preview: 'แ€žแ€„แ€บแ LangQuest แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€•แ€ซ', + title: 'แ€žแ€„แ€บแ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€•แ€ซ', + greeting: 'แ€™แ€„แ€บแ€นแ€‚แ€œแ€ฌแ€•แ€ซแŠ', + description: + 'แ€แ€…แ€บแ€…แ€ฏแ€ถแ€แ€…แ€บแ€šแ€ฑแ€ฌแ€€แ€บแ€€ แ€žแ€„แ€บแ LangQuest แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€กแ€แ€ฝแ€€แ€บ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€†แ€ญแ€ฏแ€‘แ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€žแ€„แ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ€€ แ€คแ€กแ€ฎแ€ธแ€™แ€ฑแ€ธแ€œแ€บแ€€แ€ญแ€ฏ แ€œแ€ปแ€…แ€บแ€œแ€ปแ€ฐแ€›แ€พแ€ฏแ€•แ€ซแ‹', + instruction: + 'แ€žแ€„แ€บแ แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€กแ€ฑแ€ฌแ€€แ€บแ€•แ€ซ แ€แ€œแ€ฏแ€แ€บแ€€แ€ญแ€ฏ แ€”แ€พแ€ญแ€•แ€บแ€•แ€ซ:', + button: 'แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€•แ€ซ', + orCopy: 'แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€คแ€œแ€„แ€ทแ€บแ€แ€บแ€€แ€ญแ€ฏ แ€žแ€„แ€บแ แ€˜แ€›แ€ฑแ€ฌแ€€แ€บแ€†แ€ฌแ€แ€ฝแ€„แ€บ แ€€แ€ฐแ€ธแ€šแ€ฐแ แ€‘แ€Šแ€ทแ€บแ€•แ€ซ:', + expiry: 'แ€คแ€œแ€„แ€ทแ€บแ€แ€บแ€žแ€Šแ€บ 24 แ€”แ€ฌแ€›แ€ฎแ€กแ€แ€ฝแ€„แ€บแ€ธ แ€žแ€€แ€บแ€แ€™แ€บแ€ธแ€€แ€ฏแ€”แ€บแ€†แ€ฏแ€ถแ€ธแ€™แ€Šแ€บแ‹' + }, + th: { + preview: 'เธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™ LangQuest เธ‚เธญเธ‡เธ„เธธเธ“', + title: 'เธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธ‚เธญเธ‡เธ„เธธเธ“', + greeting: 'เธชเธงเธฑเธชเธ”เธตเธ„เธฃเธฑเธš/เธ„เนˆเธฐ', + description: + 'เธกเธตเธ„เธ™เธ‚เธญเธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธชเธณเธซเธฃเธฑเธšเธšเธฑเธเธŠเธต LangQuest เธ‚เธญเธ‡เธ„เธธเธ“ เธซเธฒเธเน„เธกเนˆเนƒเธŠเนˆเธ„เธธเธ“ เธเธฃเธธเธ“เธฒเน€เธžเธดเธเน€เธ‰เธขเธ•เนˆเธญเธญเธตเน€เธกเธฅเธ™เธตเน‰', + instruction: 'เธ„เธฅเธดเธเธ›เธธเนˆเธกเธ”เน‰เธฒเธ™เธฅเนˆเธฒเธ‡เน€เธžเธทเนˆเธญเธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™เธ‚เธญเธ‡เธ„เธธเธ“:', + button: 'เธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™', + orCopy: 'เธซเธฃเธทเธญเธ„เธฑเธ”เธฅเธญเธเนเธฅเธฐเธงเธฒเธ‡เธฅเธดเธ‡เธเนŒเธ™เธตเน‰เนƒเธ™เน€เธšเธฃเธฒเธงเนŒเน€เธ‹เธญเธฃเนŒเธ‚เธญเธ‡เธ„เธธเธ“:', + expiry: 'เธฅเธดเธ‡เธเนŒเธ™เธตเน‰เธˆเธฐเธซเธกเธ”เธญเธฒเธขเธธเนƒเธ™ 24 เธŠเธฑเนˆเธงเน‚เธกเธ‡' + }, + 'zh-CN': { + preview: '้‡็ฝฎๆ‚จ็š„ LangQuest ๅฏ†็ ', + title: '้‡็ฝฎๆ‚จ็š„ๅฏ†็ ', + greeting: 'ๆ‚จๅฅฝ๏ผŒ', + description: + 'ๆœ‰ไบบ่ฏทๆฑ‚้‡็ฝฎๆ‚จ็š„ LangQuest ่ดฆๆˆทๅฏ†็ ใ€‚ๅฆ‚ๆžœไธๆ˜ฏๆ‚จ๏ผŒ่ฏทๅฟฝ็•ฅๆญค้‚ฎไปถใ€‚', + instruction: '็‚นๅ‡ปไธ‹้ข็š„ๆŒ‰้’ฎ้‡็ฝฎๆ‚จ็š„ๅฏ†็ :', + button: '้‡็ฝฎๅฏ†็ ', + orCopy: 'ๆˆ–่€…ๅฐ†ๆญค้“พๆŽฅๅคๅˆถๅนถ็ฒ˜่ดดๅˆฐๆ‚จ็š„ๆต่งˆๅ™จไธญ:', + expiry: 'ๆญค้“พๆŽฅๅฐ†ๅœจ 24 ๅฐๆ—ถๅŽ่ฟ‡ๆœŸใ€‚' } }; diff --git a/supabase/functions/send-email/index.ts b/supabase/functions/send-email/index.ts index 21bfdd510..baa44eae1 100644 --- a/supabase/functions/send-email/index.ts +++ b/supabase/functions/send-email/index.ts @@ -23,7 +23,11 @@ const signupEmailSubjects = { 'pt-BR': 'Confirme sua conta LangQuest', 'id-ID': 'Konfirmasi Akun LangQuest Anda', 'tpi-PG': 'Strongim LangQuest Akaun bilong yu', - ne: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ LangQuest เค–เคพเคคเคพ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + ne: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ LangQuest เค–เคพเคคเคพ เคชเฅเคทเฅเคŸเคฟ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hi: 'เค…เคชเคจเคพ LangQuest เค–เคพเคคเคพ เคชเฅเคทเฅเคŸเคฟ เค•เคฐเฅ‡เค‚', + my: 'แ€žแ€„แ€บแ LangQuest แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซ', + th: 'เธขเธทเธ™เธขเธฑเธ™เธšเธฑเธเธŠเธต LangQuest เธ‚เธญเธ‡เธ„เธธเธ“', + 'zh-CN': '็กฎ่ฎคๆ‚จ็š„ LangQuest ่ดฆๆˆท' }; // Email subject translations const emailSubjects = { @@ -36,7 +40,11 @@ const emailSubjects = { 'pt-BR': 'Redefina sua senha do LangQuest', 'id-ID': 'Atur Ulang Kata Sandi LangQuest Anda', 'tpi-PG': 'Resetim LangQuest Password bilong yu', - ne: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ LangQuest เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ' + ne: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ LangQuest เคชเคพเคธเคตเคฐเฅเคก เคฐเคฟเคธเฅ‡เคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', + hi: 'เค…เคชเคจเคพ LangQuest เคชเคพเคธเคตเคฐเฅเคก เคฐเฅ€เคธเฅ‡เคŸ เค•เคฐเฅ‡เค‚', + my: 'แ€žแ€„แ€บแ LangQuest แ€…แ€€แ€ฌแ€ธแ€แ€พแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€žแ€แ€บแ€™แ€พแ€แ€บแ€•แ€ซ', + th: 'เธฃเธตเน€เธ‹เน‡เธ•เธฃเธซเธฑเธชเธœเนˆเธฒเธ™ LangQuest เธ‚เธญเธ‡เธ„เธธเธ“', + 'zh-CN': '้‡็ฝฎๆ‚จ็š„ LangQuest ๅฏ†็ ' }, invite: { en: "You've been invited to join a project on LangQuest", @@ -45,7 +53,11 @@ const emailSubjects = { 'pt-BR': 'Vocรช foi convidado para participar de um projeto no LangQuest', 'id-ID': 'Anda telah diundang untuk bergabung dalam proyek di LangQuest', 'tpi-PG': 'Yu telah strongim langquest bilong yu', - ne: 'เคคเคชเคพเคˆเค‚เคฒเคพเคˆ LangQuest เคฎเคพ เคเค‰เคŸเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเคฟเคเค•เฅ‹ เค›' + ne: 'เคคเคชเคพเคˆเค‚เคฒเคพเคˆ LangQuest เคฎเคพ เคเค‰เคŸเคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค†เคฎเคจเฅเคคเฅเคฐเคฟเคค เค—เคฐเคฟเคเค•เฅ‹ เค›', + hi: 'เค†เคชเค•เฅ‹ LangQuest เคชเคฐ เคเค• เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเฅ‡เค‚ เคถเคพเคฎเคฟเคฒ เคนเฅ‹เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆ', + my: 'แ€žแ€„แ€ทแ€บแ€กแ€ฌแ€ธ LangQuest แ€แ€ฝแ€„แ€บ แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€แ€…แ€บแ€แ€ฏแ€แ€ฝแ€„แ€บ แ€•แ€ซแ€แ€„แ€บแ€›แ€”แ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€‘แ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บ', + th: 'เธ„เธธเธ“เน„เธ”เน‰เธฃเธฑเธšเน€เธŠเธดเธเนƒเธซเน‰เน€เธ‚เน‰เธฒเธฃเนˆเธงเธกเน‚เธ„เธฃเธ‡เธเธฒเธฃเนƒเธ™ LangQuest', + 'zh-CN': 'ๆ‚จๅทฒ่ขซ้‚€่ฏทๅŠ ๅ…ฅ LangQuest ไธŠ็š„้กน็›ฎ' } }; const emailTypeEndpoint = { @@ -72,7 +84,14 @@ function mapLanguoidNameToLocale( 'tok pisin': 'tpi-PG', 'standard indonesian': 'id-ID', indonesian: 'id-ID', // Also handle just "Indonesian" - nepali: 'ne' + nepali: 'ne', + hindi: 'hi', + burmese: 'my', + myanmar: 'my', + thai: 'th', + mandarin: 'zh-CN', + 'mandarin chinese': 'zh-CN', + chinese: 'zh-CN' }; return mapping[normalized] ?? 'en'; diff --git a/supabase/migrations/20260212000000_add_hindi_burmese_thai_mandarin_ui_ready.sql b/supabase/migrations/20260212000000_add_hindi_burmese_thai_mandarin_ui_ready.sql new file mode 100644 index 000000000..6dd65654b --- /dev/null +++ b/supabase/migrations/20260212000000_add_hindi_burmese_thai_mandarin_ui_ready.sql @@ -0,0 +1,142 @@ +-- Enable Hindi, Burmese, Thai, and Mandarin as UI-ready languages +-- These languoid records may already exist in production with different IDs +-- ISO 639-3 codes: hin (Hindi), mya (Burmese), tha (Thai), cmn (Mandarin) +-- +-- In local dev, the languoids are created by seeds (which run AFTER migrations), +-- so we use conditional statements that only execute if the languoid exists. + +-- Enable Hindi (เคนเคฟเคจเฅเคฆเฅ€) +UPDATE public.languoid +SET ui_ready = true, + last_updated = NOW() +WHERE name = 'Hindi' + AND EXISTS ( + SELECT 1 FROM public.languoid_source + WHERE languoid_id = languoid.id + AND unique_identifier = 'hin' + ); + +-- Add Hindi endonymic alias (เคนเคฟเคจเฅเคฆเฅ€) +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + languoid.id, + languoid.id, + 'เคนเคฟเคจเฅเคฆเฅ€', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +FROM public.languoid +WHERE name = 'Hindi' + AND EXISTS ( + SELECT 1 FROM public.languoid_source + WHERE languoid_id = languoid.id + AND unique_identifier = 'hin' + ) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +-- Enable Burmese (แ€™แ€ผแ€”แ€บแ€™แ€ฌ) +UPDATE public.languoid +SET ui_ready = true, + last_updated = NOW() +WHERE name = 'Burmese' + AND EXISTS ( + SELECT 1 FROM public.languoid_source + WHERE languoid_id = languoid.id + AND unique_identifier = 'mya' + ); + +-- Add Burmese endonymic alias (แ€™แ€ผแ€”แ€บแ€™แ€ฌ) +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + languoid.id, + languoid.id, + 'แ€™แ€ผแ€”แ€บแ€™แ€ฌ', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +FROM public.languoid +WHERE name = 'Burmese' + AND EXISTS ( + SELECT 1 FROM public.languoid_source + WHERE languoid_id = languoid.id + AND unique_identifier = 'mya' + ) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +-- Enable Thai (เน„เธ—เธข) +UPDATE public.languoid +SET ui_ready = true, + last_updated = NOW() +WHERE name = 'Thai' + AND EXISTS ( + SELECT 1 FROM public.languoid_source + WHERE languoid_id = languoid.id + AND unique_identifier = 'tha' + ); + +-- Add Thai endonymic alias (เน„เธ—เธข) +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + languoid.id, + languoid.id, + 'เน„เธ—เธข', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +FROM public.languoid +WHERE name = 'Thai' + AND EXISTS ( + SELECT 1 FROM public.languoid_source + WHERE languoid_id = languoid.id + AND unique_identifier = 'tha' + ) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +-- Enable Mandarin (ๆ™ฎ้€š่ฏ) +UPDATE public.languoid +SET ui_ready = true, + last_updated = NOW() +WHERE name = 'Mandarin' + AND EXISTS ( + SELECT 1 FROM public.languoid_source + WHERE languoid_id = languoid.id + AND unique_identifier = 'cmn' + ); + +-- Add Mandarin endonymic alias (ๆ™ฎ้€š่ฏ) +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + languoid.id, + languoid.id, + 'ๆ™ฎ้€š่ฏ', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +FROM public.languoid +WHERE name = 'Mandarin' + AND EXISTS ( + SELECT 1 FROM public.languoid_source + WHERE languoid_id = languoid.id + AND unique_identifier = 'cmn' + ) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; From ac1b6b803d3f7bdf1f30c406ab43c1bba22c860d Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:12:46 -0600 Subject: [PATCH 060/143] fix: package-lock --- package-lock.json | 329 +++++++++++++++++++++++++++++----------------- 1 file changed, 212 insertions(+), 117 deletions(-) diff --git a/package-lock.json b/package-lock.json index 32c488e59..c98422ab9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -163,6 +163,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2538,6 +2539,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, "license": "MIT" }, "node_modules/@blazejkustra/react-native-alert": { @@ -5131,14 +5133,14 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" @@ -5785,6 +5787,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -5859,6 +5862,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -5901,6 +5905,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -5916,6 +5921,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -5971,6 +5977,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -6000,6 +6007,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -6132,7 +6140,7 @@ "version": "0.17.0", "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@libsql/core": "^0.17.0", @@ -6146,7 +6154,7 @@ "version": "0.17.0", "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "js-base64": "^3.7.5" @@ -6159,6 +6167,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6172,6 +6181,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6182,7 +6192,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@libsql/isomorphic-ws": "^0.1.5", @@ -6195,7 +6205,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/ws": "^8.5.4", @@ -6209,6 +6219,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6222,6 +6233,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6235,6 +6247,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6248,6 +6261,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6261,6 +6275,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6274,6 +6289,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6287,6 +6303,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6419,7 +6436,7 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@nicolo-ribaudo/chokidar-2": { @@ -7038,9 +7055,9 @@ } }, "node_modules/@posthog/types": { - "version": "1.347.0", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.347.0.tgz", - "integrity": "sha512-wnz/9DBO4b/C7mzhXgUacKyqt/DNN+yg7CutJXflAm7cbrSygULhndHlGhDtbZPL7XgCkoNq9tEjVr7tUVm8aA==", + "version": "1.347.2", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.347.2.tgz", + "integrity": "sha512-aT+r/7jXOzPmUHO6sutoWzczPcYIZyhmWt1f1OvY4zKC7Pwp/ZsJWKFTxjV02p0PZz96AE83eLTe7w7b6tjhIw==", "license": "MIT" }, "node_modules/@powersync/attachments": { @@ -8196,7 +8213,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-clean": "20.1.1", @@ -8226,7 +8243,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8239,7 +8256,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8254,7 +8271,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8267,7 +8284,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8280,7 +8297,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config": "20.1.1", @@ -8304,7 +8321,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8317,7 +8334,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-android": "20.1.1", @@ -8331,7 +8348,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-apple": "20.1.1", @@ -8345,7 +8362,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-platform-apple": "20.1.1" @@ -8355,7 +8372,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8375,7 +8392,7 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "async-limiter": "~1.0.0" @@ -8385,7 +8402,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@vscode/sudo-prompt": "^9.0.0", @@ -8404,7 +8421,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8417,7 +8434,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "joi": "^17.2.1" @@ -8427,7 +8444,7 @@ "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || >=14" @@ -8437,7 +8454,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -9230,7 +9247,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" @@ -9240,14 +9257,14 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@sinclair/typebox": { @@ -10565,7 +10582,7 @@ "version": "9.3.2", "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@xmldom/xmldom": { @@ -10740,7 +10757,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "colorette": "^1.0.7", @@ -10752,7 +10769,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -10762,7 +10779,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" @@ -10830,7 +10847,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/arg": { @@ -11076,7 +11093,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11095,7 +11112,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/async-lock": { @@ -11625,6 +11642,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -11637,7 +11655,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -11649,7 +11667,7 @@ "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -11674,7 +11692,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -11684,14 +11702,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/body-parser/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -11937,6 +11955,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -11991,6 +12010,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "devOptional": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -12015,6 +12035,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -12084,6 +12105,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, "license": "MIT" }, "node_modules/class-variance-authority": { @@ -12102,7 +12124,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" @@ -12198,6 +12220,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -12255,7 +12278,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -12280,7 +12303,7 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/commander": { @@ -12411,7 +12434,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -12495,7 +12518,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.1", @@ -12522,6 +12545,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12561,7 +12585,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "node-fetch": "^2.7.0" @@ -12571,7 +12595,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -12592,21 +12616,21 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/cross-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause" }, "node_modules/cross-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -12681,6 +12705,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -12759,7 +12784,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 12" @@ -12844,7 +12869,7 @@ "version": "1.11.19", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/debug": { @@ -12868,7 +12893,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12893,6 +12918,7 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -13142,7 +13168,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -13152,6 +13178,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13167,6 +13194,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, "license": "Apache-2.0" }, "node_modules/diff-sequences": { @@ -13194,6 +13222,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, "license": "MIT" }, "node_modules/dnssd-advertise": { @@ -13334,6 +13363,7 @@ "version": "0.45.1", "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", + "dev": true, "license": "Apache-2.0", "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", @@ -13533,7 +13563,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -13543,7 +13573,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "envinfo": "dist/cli.js" @@ -13556,6 +13586,7 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -13574,7 +13605,7 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -14809,6 +14840,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -14832,6 +14864,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -16697,7 +16730,7 @@ "version": "4.5.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -16880,7 +16913,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -17272,7 +17305,7 @@ "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" @@ -17345,7 +17378,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -17506,6 +17539,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -17830,6 +17864,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, "license": "MIT" }, "node_modules/http-errors": { @@ -17883,6 +17918,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -17907,7 +17943,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -17989,6 +18025,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -18103,6 +18140,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -18143,6 +18181,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -18301,7 +18340,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -18311,6 +18350,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -18351,7 +18391,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18498,6 +18538,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18558,7 +18599,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -18656,6 +18697,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -18672,6 +18714,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -18684,6 +18727,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -18698,6 +18742,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -18712,6 +18757,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -18757,6 +18803,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -18783,6 +18830,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -18797,6 +18845,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -18828,6 +18877,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -18861,6 +18911,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -18921,6 +18972,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -18933,6 +18985,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -19063,6 +19116,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -19125,6 +19179,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -19151,6 +19206,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -19171,6 +19227,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -19184,6 +19241,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -19216,6 +19274,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -19226,6 +19285,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -19259,6 +19319,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -19306,6 +19367,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -19552,7 +19614,7 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -19562,7 +19624,7 @@ "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", @@ -19586,7 +19648,7 @@ "version": "3.7.8", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/js-logger": { @@ -19730,6 +19792,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -19788,7 +19851,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "devOptional": true, + "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -19937,7 +20000,7 @@ "version": "2.12.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "picocolors": "^1.1.1", @@ -19976,7 +20039,7 @@ "wasm32", "arm" ], - "devOptional": true, + "dev": true, "license": "MIT", "os": [ "darwin", @@ -20286,6 +20349,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -20439,7 +20503,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -20456,7 +20520,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-fragments": "^0.2.1", @@ -20471,7 +20535,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -20483,7 +20547,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -20497,7 +20561,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -20510,7 +20574,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -20526,7 +20590,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -20539,7 +20603,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -20554,14 +20618,14 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "cliui": "^6.0.0", @@ -20584,7 +20648,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "camelcase": "^5.0.0", @@ -20646,6 +20710,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -20661,6 +20726,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -20709,7 +20775,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -21247,7 +21313,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "mime": "cli.js" @@ -21290,6 +21356,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -21518,7 +21585,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -21541,7 +21608,7 @@ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "deprecated": "Use your platform's native DOMException instead", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -21561,7 +21628,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", @@ -21601,7 +21668,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -21661,6 +21728,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -21718,6 +21786,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -21863,6 +21932,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -21878,7 +21948,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-wsl": "^1.1.0" @@ -21891,7 +21961,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -21918,7 +21988,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "bl": "^4.1.0", @@ -22049,6 +22119,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -22318,6 +22389,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -22346,6 +22418,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -22358,6 +22431,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -22371,6 +22445,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -22383,6 +22458,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -22398,6 +22474,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -22482,6 +22559,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", @@ -22499,6 +22577,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, "funding": [ { "type": "opencollective", @@ -22524,6 +22603,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, "funding": [ { "type": "opencollective", @@ -22566,6 +22646,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -22591,6 +22672,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -22607,9 +22689,9 @@ "license": "MIT" }, "node_modules/posthog-js": { - "version": "1.347.0", - "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.347.0.tgz", - "integrity": "sha512-AEbSkr1EAg4v8PvijuuaQ0z/Ki9yRT1MrkRRkQpt+gN/ZuQNsjVZgKZYrLd0kPzAI0vLLK0ToCpt4BCytwULqQ==", + "version": "1.347.2", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.347.2.tgz", + "integrity": "sha512-hDbsSU30gfNhC11cBYSPpwUYB4DglbCN2G8W8NPIR/KXhT03shmuxabra/uaoI4blkr8SSSpxwvYV4gGa3hXrA==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -22618,7 +22700,7 @@ "@opentelemetry/resources": "^2.2.0", "@opentelemetry/sdk-logs": "^0.208.0", "@posthog/core": "1.22.0", - "@posthog/types": "1.347.0", + "@posthog/types": "1.347.2", "core-js": "^3.38.1", "dompurify": "^3.3.1", "fflate": "^0.4.8", @@ -22718,6 +22800,7 @@ "version": "3.8.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -22883,7 +22966,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/prompts": { @@ -22979,6 +23062,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, "funding": [ { "type": "individual", @@ -23003,7 +23087,7 @@ "version": "6.14.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -24087,7 +24171,7 @@ "version": "19.2.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "react-is": "^19.2.0", @@ -24107,6 +24191,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "license": "MIT", "dependencies": { "pify": "^2.3.0" @@ -24126,7 +24211,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -24141,6 +24226,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -24153,6 +24239,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -24311,7 +24398,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/require-resolve": { @@ -24354,6 +24441,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -24390,6 +24478,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -24399,7 +24488,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", @@ -24689,7 +24778,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/set-function-length": { @@ -25107,7 +25196,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", @@ -25122,7 +25211,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -25135,7 +25224,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -25145,7 +25234,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/sliced": { @@ -25385,14 +25474,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/strict-url-sanitise/-/strict-url-sanitise-0.0.1.tgz", "integrity": "sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -25543,6 +25632,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25552,6 +25642,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -25573,7 +25664,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -25815,6 +25906,7 @@ "version": "3.4.19", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -25861,6 +25953,7 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -26234,7 +26327,7 @@ "version": "4.21.0", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "esbuild": "~0.27.0", @@ -26696,7 +26789,7 @@ "version": "0.27.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", - "devOptional": true, + "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -26771,7 +26864,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -26996,7 +27089,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -27159,6 +27252,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -27183,6 +27277,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -27280,7 +27375,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -27466,7 +27561,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/which-typed-array": { From 953a63189f154ce8ba28208b4cdea52348b96f8f Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:16:46 -0600 Subject: [PATCH 061/143] format + typefix --- components/CustomDropdown.tsx | 2 +- components/TranscriptionEditModal.tsx | 7 +- hooks/useLocalization.ts | 2 +- services/localizations.ts | 162 ++++++++++++++++---------- utils/fileUtils.ts | 1 + views/new/BibleChapterList.tsx | 6 +- views/new/RecordingView.tsx | 105 +++++++++-------- 7 files changed, 167 insertions(+), 118 deletions(-) diff --git a/components/CustomDropdown.tsx b/components/CustomDropdown.tsx index d5fa91c6a..a1c6a3c96 100644 --- a/components/CustomDropdown.tsx +++ b/components/CustomDropdown.tsx @@ -20,7 +20,7 @@ interface CustomDropdownProps { search?: boolean; searchPlaceholder?: string; containerStyle?: object; - renderLeftIcon?: (visible?: boolean) => React.ReactElement | null | undefined; + renderLeftIcon?: (visible?: boolean) => React.ReactElement | null; } export const CustomDropdown: React.FC = ({ diff --git a/components/TranscriptionEditModal.tsx b/components/TranscriptionEditModal.tsx index 31d93f42a..d444262e6 100644 --- a/components/TranscriptionEditModal.tsx +++ b/components/TranscriptionEditModal.tsx @@ -132,7 +132,12 @@ export default function TranscriptionEditModal({ 'You have unsaved changes. Are you sure you want to close?', [ { text: t('cancel') || 'Cancel', style: 'cancel' }, - { text: 'Discard', style: 'destructive', isPreferred: true, onPress: onClose } + { + text: 'Discard', + style: 'destructive', + isPreferred: true, + onPress: onClose + } ] ); } else { diff --git a/hooks/useLocalization.ts b/hooks/useLocalization.ts index 7ba28a1ab..9a4dcf442 100644 --- a/hooks/useLocalization.ts +++ b/hooks/useLocalization.ts @@ -179,5 +179,5 @@ export function useLocalization(languageOverride?: string | null) { return translatedString; }; - return { t }; + return { t, currentLanguage: userLanguage }; } diff --git a/services/localizations.ts b/services/localizations.ts index cea6bd8c0..a14a68205 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -2584,6 +2584,18 @@ export const localizations = { thai: 'เธ‰เธฑเธ™เน„เธ”เน‰เธญเนˆเธฒเธ™เนเธฅเธฐเธขเธญเธกเธฃเธฑเธšเธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธงเนเธฅเน‰เธง', mandarin: 'ๆˆ‘ๅทฒ้˜…่ฏปๅนถๅŒๆ„ๆกๆฌพๅ’Œ้š็ง' }, + termsAndPrivacyLink: { + english: 'Terms & Privacy', + spanish: 'Tรฉrminos y Privacidad', + brazilian_portuguese: 'Termos e Privacidade', + tok_pisin: 'Terms na Privacy', + indonesian: 'Syarat & Privasi', + nepali: 'เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ', + hindi: 'เคจเคฟเคฏเคฎ เค”เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ', + burmese: 'แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€œแ€ฏแ€ถแ€แ€ผแ€ฏแ€ถแ€™แ€พแ€ฏ', + thai: 'เธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธง', + mandarin: 'ๆกๆฌพๅ’Œ้š็ง' + }, viewTerms: { english: 'View Terms and Privacy', spanish: 'Ver Tรฉrminos y Privacidad', @@ -7997,7 +8009,8 @@ export const localizations = { 'Terjemahan ini saat ini aktif. Terjemahan aktif juga terlihat.', nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคนเคพเคฒ เคธเค•เฅเคฐเคฟเคฏ เค›เฅค เคธเค•เฅเคฐเคฟเคฏ เค…เคจเฅเคตเคพเคฆ เคชเคจเคฟ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เค›เฅค', hindi: 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เคตเคฐเฅเคคเคฎเคพเคจ เคฎเฅ‡เค‚ เคธเค•เฅเคฐเคฟเคฏ เคนเฅˆเฅค เคธเค•เฅเคฐเคฟเคฏ เค…เคจเฅเคตเคพเคฆ เคฆเฅƒเคถเฅเคฏเคฎเคพเคจ เคญเฅ€ เคนเฅˆเฅค', - burmese: 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บ แ€œแ€€แ€บแ€›แ€พแ€ญแ€แ€ฝแ€„แ€บ แ€กแ€žแ€€แ€บแ€แ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บแ‹ แ€กแ€žแ€€แ€บแ€แ€„แ€บแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บแ€œแ€Šแ€บแ€ธ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + burmese: + 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บ แ€œแ€€แ€บแ€›แ€พแ€ญแ€แ€ฝแ€„แ€บ แ€กแ€žแ€€แ€บแ€แ€„แ€บแ€”แ€ฑแ€žแ€Šแ€บแ‹ แ€กแ€žแ€€แ€บแ€แ€„แ€บแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บแ€œแ€Šแ€บแ€ธ แ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', thai: 'เธเธฒเธฃเนเธ›เธฅเธ™เธตเน‰เธเธณเธฅเธฑเธ‡เนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆ เธเธฒเธฃเนเธ›เธฅเธ—เธตเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธญเธขเธนเนˆเธˆเธฐเธกเธญเธ‡เน€เธซเน‡เธ™เน„เธ”เน‰เธ”เน‰เธงเธข', mandarin: 'ๆญค็ฟป่ฏ‘ๅฝ“ๅ‰ๅค„ไบŽๆดปๅŠจ็Šถๆ€ใ€‚ๆดปๅŠจ็ฟป่ฏ‘ไนŸๅฏ่งใ€‚' }, @@ -8014,8 +8027,10 @@ export const localizations = { 'Terjemahan ini tidak aktif. Tidak ada tindakan yang dapat dilakukan kecuali diaktifkan kembali.', nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค›เฅค เคชเฅเคจ: เคธเค•เฅเคฐเคฟเคฏ เคจเค—เคฐเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เค•เคพเคฐเฅเคฏ เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', - hindi: 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคนเฅˆเฅค เคชเฅเคจเคƒ เคธเค•เฅเคฐเคฟเคฏ เค•เคฟเค เคฌเคฟเคจเคพ เค•เฅ‹เคˆ เค•เคพเคฐเฅเคฐเคตเคพเคˆ เคจเคนเฅ€เค‚ เค•เฅ€ เคœเคพ เคธเค•เคคเฅ€เฅค', - burmese: 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บ แ€กแ€žแ€€แ€บแ€™แ€แ€„แ€บแ€•แ€ซแ‹ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€กแ€žแ€€แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€™แ€žแ€Šแ€บแ€กแ€‘แ€ญ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€™แ€ปแ€พ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', + hindi: + 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคนเฅˆเฅค เคชเฅเคจเคƒ เคธเค•เฅเคฐเคฟเคฏ เค•เคฟเค เคฌเคฟเคจเคพ เค•เฅ‹เคˆ เค•เคพเคฐเฅเคฐเคตเคพเคˆ เคจเคนเฅ€เค‚ เค•เฅ€ เคœเคพ เคธเค•เคคเฅ€เฅค', + burmese: + 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บ แ€กแ€žแ€€แ€บแ€™แ€แ€„แ€บแ€•แ€ซแ‹ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€กแ€žแ€€แ€บแ€žแ€ฝแ€„แ€บแ€ธแ€™แ€žแ€Šแ€บแ€กแ€‘แ€ญ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€™แ€ปแ€พ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', thai: 'เธเธฒเธฃเนเธ›เธฅเธ™เธตเน‰เน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™ เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเนƒเธ”เน† เน„เธ”เน‰เน€เธงเน‰เธ™เนเธ•เนˆเธˆเธฐเน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', mandarin: 'ๆญค็ฟป่ฏ‘ๅค„ไบŽ้žๆดปๅŠจ็Šถๆ€ใ€‚้™ค้ž้‡ๆ–ฐๆฟ€ๆดป๏ผŒๅฆๅˆ™ๆ— ๆณ•ๆ‰ง่กŒไปปไฝ•ๆ“ไฝœใ€‚' }, @@ -8044,8 +8059,10 @@ export const localizations = { 'Terjemahan ini disembunyikan dan tidak akan ditampilkan kepada pengguna lain. Terjemahan yang tidak terlihat juga tidak aktif.', nepali: 'เคฏเฅ‹ เค…เคจเฅเคตเคพเคฆ เคฒเฅเค•เคพเค‡เคเค•เฅ‹ เค› เคฐ เค…เคจเฅเคฏ เคชเฅเคฐเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคฆเฅ‡เค–เคพเค‡เคจเฅ‡ เค›เฅˆเคจเฅค เค…เคฆเฅƒเคถเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคชเคจเคฟ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เค›เฅค', - hindi: 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เค›เคฟเคชเคพ เคนเฅเค† เคนเฅˆ เค”เคฐ เค…เคจเฅเคฏ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เค•เฅ‹ เคจเคนเฅ€เค‚ เคฆเคฟเค–เคพเคฏเคพ เคœเคพเคเค—เคพเฅค เค…เคฆเฅƒเคถเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคญเฅ€ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคนเฅˆเฅค', - burmese: 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€•แ€ผแ€ฎแ€ธ แ€กแ€แ€ผแ€ฌแ€ธแ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€™แ€•แ€ผแ€žแ€•แ€ซแ‹ แ€™แ€™แ€ผแ€„แ€บแ€›แ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บแ€œแ€Šแ€บแ€ธ แ€กแ€žแ€€แ€บแ€™แ€แ€„แ€บแ€•แ€ซแ‹', + hindi: + 'เคฏเคน เค…เคจเฅเคตเคพเคฆ เค›เคฟเคชเคพ เคนเฅเค† เคนเฅˆ เค”เคฐ เค…เคจเฅเคฏ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เค•เฅ‹ เคจเคนเฅ€เค‚ เคฆเคฟเค–เคพเคฏเคพ เคœเคพเคเค—เคพเฅค เค…เคฆเฅƒเคถเฅเคฏ เค…เคจเฅเคตเคพเคฆ เคญเฅ€ เคจเคฟเคทเฅเค•เฅเคฐเคฟเคฏ เคนเฅˆเฅค', + burmese: + 'แ€คแ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€•แ€ผแ€ฎแ€ธ แ€กแ€แ€ผแ€ฌแ€ธแ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€™แ€•แ€ผแ€žแ€•แ€ซแ‹ แ€™แ€™แ€ผแ€„แ€บแ€›แ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€žแ€Šแ€บแ€œแ€Šแ€บแ€ธ แ€กแ€žแ€€แ€บแ€™แ€แ€„แ€บแ€•แ€ซแ‹', thai: 'เธเธฒเธฃเนเธ›เธฅเธ™เธตเน‰เธ–เธนเธเธ‹เนˆเธญเธ™เนเธฅเธฐเธˆเธฐเน„เธกเนˆเนเธชเธ”เธ‡เนƒเธซเน‰เธœเธนเน‰เนƒเธŠเน‰เธญเธทเนˆเธ™เน€เธซเน‡เธ™ เธเธฒเธฃเนเธ›เธฅเธ—เธตเนˆเธกเธญเธ‡เน„เธกเนˆเน€เธซเน‡เธ™เธˆเธฐเน„เธกเนˆเนƒเธŠเน‰เธ‡เธฒเธ™เธ”เน‰เธงเธข', mandarin: 'ๆญค็ฟป่ฏ‘ๅทฒ้š่—๏ผŒไธไผšๅ‘ๅ…ถไป–็”จๆˆทๆ˜พ็คบใ€‚ไธๅฏ่ง็ฟป่ฏ‘ไนŸๅค„ไบŽ้žๆดปๅŠจ็Šถๆ€ใ€‚' }, @@ -8167,9 +8184,12 @@ export const localizations = { 'Dispela asset i local tasol. Yu ken senisim text inap yu publishim.', indonesian: 'Aset ini hanya lokal. Teks dapat diedit hingga dipublikasikan.', - nepali: 'เคฏเฅ‹ เคเคธเฅ‡เคŸ เคธเฅเคฅเคพเคจเฅ€เคฏ เคฎเคพเคคเฅเคฐ เค›เฅค เคชเฅเคฐเค•เคพเคถเคฟเคค เคจเคญเคเคธเคฎเฅเคฎ เคชเคพเค  เคธเคฎเฅเคชเคพเคฆเคจ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค', - hindi: 'เคฏเคน เคเคธเฅ‡เคŸ เค•เฅ‡เคตเคฒ เคธเฅเคฅเคพเคจเฅ€เคฏ เคนเฅˆเฅค เคชเฅเคฐเค•เคพเคถเคฟเคค เคนเฅ‹เคจเฅ‡ เคคเค• เคชเคพเค  เคธเค‚เคชเคพเคฆเคฟเคค เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพ เคนเฅˆเฅค', - burmese: 'แ€คแ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€’แ€ฑแ€žแ€แ€ถแ€žแ€ฌแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€‘แ€ฏแ€แ€บแ€แ€ฑแ€™แ€แ€ปแ€„แ€บแ€ธแ€…แ€ฌแ€žแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€Šแ€บแ€ธแ€–แ€ผแ€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', + nepali: + 'เคฏเฅ‹ เคเคธเฅ‡เคŸ เคธเฅเคฅเคพเคจเฅ€เคฏ เคฎเคพเคคเฅเคฐ เค›เฅค เคชเฅเคฐเค•เคพเคถเคฟเคค เคจเคญเคเคธเคฎเฅเคฎ เคชเคพเค  เคธเคฎเฅเคชเคพเคฆเคจ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค›เฅค', + hindi: + 'เคฏเคน เคเคธเฅ‡เคŸ เค•เฅ‡เคตเคฒ เคธเฅเคฅเคพเคจเฅ€เคฏ เคนเฅˆเฅค เคชเฅเคฐเค•เคพเคถเคฟเคค เคนเฅ‹เคจเฅ‡ เคคเค• เคชเคพเค  เคธเค‚เคชเคพเคฆเคฟเคค เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพ เคนเฅˆเฅค', + burmese: + 'แ€คแ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€’แ€ฑแ€žแ€แ€ถแ€žแ€ฌแ€–แ€ผแ€…แ€บแ€žแ€Šแ€บแ‹ แ€‘แ€ฏแ€แ€บแ€แ€ฑแ€™แ€แ€ปแ€„แ€บแ€ธแ€…แ€ฌแ€žแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€Šแ€บแ€ธแ€–แ€ผแ€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', thai: 'เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเธ™เธตเน‰เน€เธ›เน‡เธ™เนเธšเธšเธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™เน€เธ—เนˆเธฒเธ™เธฑเน‰เธ™ เธชเธฒเธกเธฒเธฃเธ–เนเธเน‰เน„เธ‚เธ‚เน‰เธญเธ„เธงเธฒเธกเน„เธ”เน‰เธˆเธ™เธเธงเนˆเธฒเธˆเธฐเน€เธœเธขเนเธžเธฃเนˆ', mandarin: 'ๆญค่ต„ไบงไป…ไธบๆœฌๅœฐใ€‚ๅœจๅ‘ๅธƒไน‹ๅ‰ๅฏไปฅ็ผ–่พ‘ๆ–‡ๆœฌใ€‚' }, @@ -8451,7 +8471,8 @@ export const localizations = { nepali: 'เคฏเฅ‹ เค…เคตเคงเคฟเคญเคจเฅเคฆเคพ เค•เคฎ เค–เคฃเฅเคกเคนเคฐเฅ‚ เคคเฅเคฏเคพเค—เฅเคจเฅเคนเฅ‹เคธเฅ (เค›เฅ‹เคŸเฅ‹ เค†เคตเคพเคœเคนเคฐเฅ‚ เคซเคฟเคฒเฅเคŸเคฐ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ)', hindi: 'เค‡เคธ เค…เคตเคงเคฟ เคธเฅ‡ เค•เคฎ เค–เค‚เคกเฅ‹เค‚ เค•เฅ‹ เคคเฅเคฏเคพเค—เฅ‡เค‚ (เคธเค‚เค•เฅเคทเคฟเคชเฅเคค เค†เคตเคพเคœเคผเฅ‹เค‚ เค•เฅ‹ เคซเคผเคฟเคฒเฅเคŸเคฐ เค•เคฐเฅ‡เค‚)', - burmese: 'แ€คแ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บแ€‘แ€€แ€บ แ€”แ€Šแ€บแ€ธแ€žแ€ฑแ€ฌ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€šแ€บแ€•แ€ซ (แ€แ€ญแ€ฏแ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€žแ€ฑแ€ฌ แ€กแ€žแ€ถแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€‘แ€ฏแ€แ€บแ€•แ€ซ)', + burmese: + 'แ€คแ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บแ€‘แ€€แ€บ แ€”แ€Šแ€บแ€ธแ€žแ€ฑแ€ฌ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€šแ€บแ€•แ€ซ (แ€แ€ญแ€ฏแ€แ€ฑแ€ฌแ€„แ€บแ€ธแ€žแ€ฑแ€ฌ แ€กแ€žแ€ถแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€…แ€บแ€‘แ€ฏแ€แ€บแ€•แ€ซ)', thai: 'เธ—เธดเน‰เธ‡เธชเนˆเธงเธ™เธ—เธตเนˆเธชเธฑเน‰เธ™เธเธงเนˆเธฒเธฃเธฐเธขเธฐเน€เธงเธฅเธฒเธ™เธตเน‰ (เธเธฃเธญเธ‡เน€เธชเธตเธขเธ‡เธชเธฑเน‰เธ™เน†)', mandarin: 'ไธขๅผƒ็ŸญไบŽๆญคๆ—ถ้•ฟ็š„็‰‡ๆฎต๏ผˆ่ฟ‡ๆปค็Ÿญๆš‚ๅ™ช้Ÿณ๏ผ‰' }, @@ -8701,7 +8722,8 @@ export const localizations = { burmese: 'แ€กแ€žแ€ถ แ€แ€ถแ€šแ€ฐแ€™แ€ญแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€แ€…แ€บแ€แ€ฏแ€žแ€Šแ€บ แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€™แ€Šแ€บแ‹ แ€แ€ญแ€แ€บแ€†แ€ญแ€แ€บแ€™แ€พแ€ฏ แ€กแ€”แ€Šแ€บแ€ธแ€„แ€šแ€บแ€•แ€ผแ€ฎแ€ธแ€”แ€ฑแ€ฌแ€€แ€บ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€™แ€Šแ€บแ‹ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€–แ€ฝแ€„แ€ทแ€บแ€‘แ€ฌแ€ธแ€…แ€‰แ€บ แ€คแ€€แ€ฒแ€ทแ€žแ€ญแ€ฏแ€ท แ€กแ€…แ€‰แ€บแ€œแ€ญแ€ฏแ€€แ€บ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€…แ€ฝแ€ฌ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', thai: 'เน€เธกเธทเนˆเธญเธ•เธฃเธงเธˆเธžเธšเน€เธชเธตเธขเธ‡ เธชเนˆเธงเธ™เธˆเธฐเน€เธฃเธดเนˆเธกเธšเธฑเธ™เธ—เธถเธเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธด เธซเธฅเธฑเธ‡เธˆเธฒเธเธ„เธงเธฒเธกเน€เธ‡เธตเธขเธšเธชเธฑเธเธ„เธฃเธนเนˆ เธชเนˆเธงเธ™เธˆเธฐเธ–เธนเธเธšเธฑเธ™เธ—เธถเธ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธšเธฑเธ™เธ—เธถเธเธซเธฅเธฒเธขเธชเนˆเธงเธ™เนเธšเธšเธ™เธตเน‰เธ•เธฒเธกเธฅเธณเธ”เธฑเธšเธ‚เธ“เธฐเน€เธ›เธดเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ', - mandarin: 'ๆฃ€ๆต‹ๅˆฐๅฃฐ้Ÿณๆ—ถ๏ผŒ็‰‡ๆฎตๅฐ†่‡ชๅŠจๅผ€ๅง‹ๅฝ•้Ÿณใ€‚้™้Ÿณไธ€ๆฎตๆ—ถ้—ดๅŽ๏ผŒ็‰‡ๆฎตๅฐ†่ขซไฟๅญ˜ใ€‚ๅฝ•้Ÿณๆฟ€ๆดปๆ—ถ๏ผŒๆ‚จๅฏไปฅๆŒ‰้กบๅบ่ฟ™ๆ ทๅฝ•ๅˆถๅคšไธช็‰‡ๆฎตใ€‚' + mandarin: + 'ๆฃ€ๆต‹ๅˆฐๅฃฐ้Ÿณๆ—ถ๏ผŒ็‰‡ๆฎตๅฐ†่‡ชๅŠจๅผ€ๅง‹ๅฝ•้Ÿณใ€‚้™้Ÿณไธ€ๆฎตๆ—ถ้—ดๅŽ๏ผŒ็‰‡ๆฎตๅฐ†่ขซไฟๅญ˜ใ€‚ๅฝ•้Ÿณๆฟ€ๆดปๆ—ถ๏ผŒๆ‚จๅฏไปฅๆŒ‰้กบๅบ่ฟ™ๆ ทๅฝ•ๅˆถๅคšไธช็‰‡ๆฎตใ€‚' }, vadHelpSensitivity: { english: @@ -8721,7 +8743,8 @@ export const localizations = { burmese: 'แ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€€แ€œแ€…แ€บแ€€ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ซ แ€…แ€•แ€ผแ€ฎแ€ธ แ€•แ€ผแ€ฎแ€ธแ€†แ€ฏแ€ถแ€ธแ€žแ€Šแ€บแ€€แ€ญแ€ฏ แ€žแ€แ€บแ€™แ€พแ€แ€บแ€›แ€”แ€บ แ€กแ€”แ€Šแ€บแ€ธแ€†แ€ฏแ€ถแ€ธ แ€กแ€†แ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€žแ€แ€บแ€™แ€พแ€แ€บแ€žแ€Šแ€บแ‹ แ€กแ€ฌแ€›แ€ฏแ€ถแ€แ€ถแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ แ€”แ€Šแ€บแ€ธแ€œแ€ปแ€พแ€„แ€บ แ€กแ€žแ€ถแ€„แ€šแ€บแ€„แ€šแ€บ แ€…แ€€แ€ฌแ€ธแ€•แ€ผแ€ฑแ€ฌแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€–แ€™แ€บแ€ธแ€šแ€ฐแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€แ€ผแ€ฌแ€ธ แ€กแ€žแ€ถแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏแ€œแ€Šแ€บแ€ธ แ€–แ€™แ€บแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', thai: 'เธ„เธงเธฒเธกเน„เธงเธเธณเธซเธ™เธ”เน€เธเธ“เธ‘เนŒเน€เธžเธทเนˆเธญเธเธณเธซเธ™เธ”เธงเนˆเธฒเน€เธกเธทเนˆเธญเน„เธซเธฃเนˆเธ„เธฅเธดเธ›เธˆเธฐเน€เธฃเธดเนˆเธกเนเธฅเธฐเธˆเธš เธ„เธงเธฒเธกเน„เธงเธ•เนˆเธณเธˆเธฐเธˆเธฑเธšเน€เธชเธตเธขเธ‡เธžเธนเธ”เธ—เธตเนˆเน€เธšเธฒ เนเธ•เนˆเธเน‡เธญเธฒเธˆเธˆเธฑเธšเน€เธชเธตเธขเธ‡เธญเธทเนˆเธ™เน† เธ”เน‰เธงเธข', - mandarin: '็ตๆ•ๅบฆ่ฎพ็ฝฎ็”จไบŽ็กฎๅฎš็‰‡ๆฎตไฝ•ๆ—ถๅผ€ๅง‹ๅ’Œ็ป“ๆŸ็š„้˜ˆๅ€ผใ€‚่พƒไฝŽ็š„็ตๆ•ๅบฆๅฏๆ•ๆ‰่พƒๅฎ‰้™็š„่ฏญ้Ÿณ๏ผŒไฝ†ไนŸไผšๆ•ๆ‰ๅ…ถไป–ๆฝœๅœจๅ™ช้Ÿณใ€‚' + mandarin: + '็ตๆ•ๅบฆ่ฎพ็ฝฎ็”จไบŽ็กฎๅฎš็‰‡ๆฎตไฝ•ๆ—ถๅผ€ๅง‹ๅ’Œ็ป“ๆŸ็š„้˜ˆๅ€ผใ€‚่พƒไฝŽ็š„็ตๆ•ๅบฆๅฏๆ•ๆ‰่พƒๅฎ‰้™็š„่ฏญ้Ÿณ๏ผŒไฝ†ไนŸไผšๆ•ๆ‰ๅ…ถไป–ๆฝœๅœจๅ™ช้Ÿณใ€‚' }, vadHelpPause: { english: @@ -8840,8 +8863,7 @@ export const localizations = { 'เคตเฅ‰เค‡เคธ เคเค•เฅเคŸเคฟเคตเคฟเคŸเฅ€ เคกเคฟเคŸเฅ‡เค•เฅเคถเคจ (VAD) เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคถเฅเคฐเฅ‚ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฐเคฟเค•เฅ‰เคฐเฅเคก เคฌเคŸเคจ เคฆเคฌเคพเคเค‚เฅค เคฏเคน เค†เคชเค•เฅ‡ เคฌเฅ‹เคฒเคคเฅ‡ เคธเคฎเคฏ เคฐเฅเค•เคจเฅ‡ เคชเคฐ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคจเค เค‘เคกเคฟเคฏเฅ‹ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เคฌเคจเคพเคเค—เคพเฅค VAD เคธเคคเฅเคฐ เคธเคฎเคพเคชเฅเคค เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคซเคฟเคฐ เคธเฅ‡ เคŸเฅˆเคช เค•เคฐเฅ‡เค‚เฅค', burmese: 'แ€กแ€žแ€ถแ€œแ€พแ€ฏแ€•แ€บแ€›แ€พแ€ฌแ€ธแ€™แ€พแ€ฏ แ€‘แ€ฑแ€ฌแ€€แ€บแ€œแ€พแ€™แ€บแ€ธแ€แ€ผแ€„แ€บแ€ธ (VAD) แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€œแ€ฏแ€แ€บแ€€แ€ญแ€ฏ แ€”แ€พแ€ญแ€•แ€บแ€•แ€ซแ‹ แ€žแ€„แ€บแ€…แ€€แ€ฌแ€ธแ€•แ€ผแ€ฑแ€ฌแ€”แ€ฑแ€…แ€‰แ€บ แ€›แ€•แ€บแ€”แ€ฌแ€ธแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€คแ€žแ€Šแ€บ แ€กแ€žแ€ถแ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€กแ€…แ€กแ€žแ€…แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€œแ€ญแ€ฏแ€กแ€œแ€ปแ€ฑแ€ฌแ€€แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€•แ€ฑแ€ธแ€™แ€Šแ€บแ‹ VAD แ€กแ€…แ€Šแ€บแ€ธแ€กแ€แ€ฑแ€ธแ€€แ€ญแ€ฏ แ€กแ€†แ€ฏแ€ถแ€ธแ€žแ€แ€บแ€›แ€”แ€บ แ€‘แ€•แ€บแ€™แ€ถแ€”แ€พแ€ญแ€•แ€บแ€•แ€ซแ‹', - thai: - 'เธ›เธธเนˆเธกเธšเธฑเธ™เธ—เธถเธเน€เธžเธทเนˆเธญเน€เธฃเธดเนˆเธกเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ”เน‰เธงเธขเธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธเธดเธˆเธเธฃเธฃเธกเน€เธชเธตเธขเธ‡ (VAD) เธ‹เธถเนˆเธ‡เธˆเธฐเธชเธฃเน‰เธฒเธ‡เธชเนˆเธงเธ™เน€เธชเธตเธขเธ‡เนƒเธซเธกเนˆเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธ„เธธเธ“เธซเธขเธธเธ”เธžเธนเธ”เธ‚เธ“เธฐเธžเธนเธ” เธเธ”เธญเธตเธเธ„เธฃเธฑเน‰เธ‡เน€เธžเธทเนˆเธญเธชเธดเน‰เธ™เธชเธธเธ”เน€เธ‹เธชเธŠเธฑเธ™ VAD', + thai: 'เธ›เธธเนˆเธกเธšเธฑเธ™เธ—เธถเธเน€เธžเธทเนˆเธญเน€เธฃเธดเนˆเธกเธเธฒเธฃเธšเธฑเธ™เธ—เธถเธเธ”เน‰เธงเธขเธเธฒเธฃเธ•เธฃเธงเธˆเธˆเธฑเธšเธเธดเธˆเธเธฃเธฃเธกเน€เธชเธตเธขเธ‡ (VAD) เธ‹เธถเนˆเธ‡เธˆเธฐเธชเธฃเน‰เธฒเธ‡เธชเนˆเธงเธ™เน€เธชเธตเธขเธ‡เนƒเธซเธกเนˆเน‚เธ”เธขเธญเธฑเธ•เน‚เธ™เธกเธฑเธ•เธดเน€เธกเธทเนˆเธญเธ„เธธเธ“เธซเธขเธธเธ”เธžเธนเธ”เธ‚เธ“เธฐเธžเธนเธ” เธเธ”เธญเธตเธเธ„เธฃเธฑเน‰เธ‡เน€เธžเธทเนˆเธญเธชเธดเน‰เธ™เธชเธธเธ”เน€เธ‹เธชเธŠเธฑเธ™ VAD', mandarin: 'ๅฝ•้ŸณๆŒ‰้’ฎไปฅๅผ€ๅง‹่ฏญ้ŸณๆดปๅŠจๆฃ€ๆต‹ (VAD) ๅฝ•้Ÿณใ€‚ๅฝ“ๆ‚จ่ฏด่ฏๆ—ถๆš‚ๅœ๏ผŒ่ฟ™ๅฐ†่‡ชๅŠจๅˆ›ๅปบๆ–ฐ็š„้Ÿณ้ข‘็‰‡ๆฎตใ€‚ๅ†ๆฌก็‚นๅ‡ปไปฅ็ป“ๆŸ VAD ไผš่ฏใ€‚' }, @@ -8855,7 +8877,8 @@ export const localizations = { 'untuk merekam satu segmen, lepaskan untuk menghentikan perekaman.', nepali: 'เคเค‰เคŸเคพ เค–เคฃเฅเคก เคฐเฅ‡เค•เคฐเฅเคก เค—เคฐเฅเคจ, เคฐเฅ‡เค•เคฐเฅเคกเคฟเค™ เคฐเฅ‹เค•เฅเคจ เค›เฅ‹เคกเฅเคจเฅเคนเฅ‹เคธเฅเฅค', hindi: 'เคเค•เคฒ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค, เคฐเคฟเค•เฅ‰เคฐเฅเคกเคฟเค‚เค— เคฐเฅ‹เค•เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค›เฅ‹เคกเคผเฅ‡เค‚เฅค', - burmese: 'แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€กแ€…แ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บแŠ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€›แ€•แ€บแ€แ€”แ€ทแ€บแ€›แ€”แ€บ แ€œแ€ฝแ€พแ€แ€บแ€•แ€ซแ‹', + burmese: + 'แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€กแ€…แ€แ€…แ€บแ€แ€ฏแ€€แ€ญแ€ฏ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บแŠ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธแ€€แ€ญแ€ฏ แ€›แ€•แ€บแ€แ€”แ€ทแ€บแ€›แ€”แ€บ แ€œแ€ฝแ€พแ€แ€บแ€•แ€ซแ‹', thai: 'เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเธชเนˆเธงเธ™เน€เธ”เธตเธขเธง เธ›เธฅเนˆเธญเธขเน€เธžเธทเนˆเธญเธซเธขเธธเธ”เธเธฒเธฃเธšเธฑเธ™เธ—เธถเธ', mandarin: 'ๅฝ•ๅˆถๅ•ไธช็‰‡ๆฎต๏ผŒๆพๅผ€ไปฅๅœๆญขๅฝ•ๅˆถใ€‚' }, @@ -8918,8 +8941,7 @@ export const localizations = { 'Kalibrasi gagal. Silakan coba lagi di lingkungan yang lebih tenang.', nepali: 'เค•เฅเคฏเคพเคฒเคฟเคฌเฅเคฐเฅ‡เคธเคจ เค…เคธเคซเคฒ เคญเคฏเฅ‹เฅค เค•เฅƒเคชเคฏเคพ เคถเคพเคจเฅเคค เคตเคพเคคเคพเคตเคฐเคฃเคฎเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', - hindi: - 'เค•เฅˆเคฒเคฟเคฌเฅเคฐเฅ‡เคถเคจ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคถเคพเค‚เคค เคตเคพเคคเคพเคตเคฐเคฃ เคฎเฅ‡เค‚ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', + hindi: 'เค•เฅˆเคฒเคฟเคฌเฅเคฐเฅ‡เคถเคจ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคถเคพเค‚เคค เคตเคพเคคเคพเคตเคฐเคฃ เคฎเฅ‡เค‚ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', burmese: 'แ€แ€ปแ€ญแ€”แ€บแ€Šแ€พแ€ญแ€แ€ผแ€„แ€บแ€ธ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€•แ€ญแ€ฏแ€แ€ญแ€แ€บแ€†แ€ญแ€แ€บแ€žแ€ฑแ€ฌ แ€•แ€แ€บแ€แ€”แ€บแ€ธแ€€แ€ปแ€„แ€บแ€แ€ฝแ€„แ€บ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', thai: 'เธเธฒเธฃเธ›เธฃเธฑเธšเน€เธ—เธตเธขเธšเธฅเน‰เธกเน€เธซเธฅเธง เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡เนƒเธ™เธชเธ เธฒเธžเนเธงเธ”เธฅเน‰เธญเธกเธ—เธตเนˆเน€เธ‡เธตเธขเธšเธเธงเนˆเธฒ', @@ -8974,8 +8996,7 @@ export const localizations = { 'เคจเคตเฅ€เคจเคคเคฎ เคธเฅเคตเคฟเคงเคพเค“เค‚ เคคเค• เคชเคนเฅเค‚เคšเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคเคช เค•เคพ เคจเคฏเคพ เคธเค‚เคธเฅเค•เคฐเคฃ เค†เคตเคถเฅเคฏเค• เคนเฅˆเฅค เค•เฅƒเคชเคฏเคพ เคœเคพเคฐเฅ€ เคฐเค–เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค…เคชเคกเฅ‡เคŸ เค•เคฐเฅ‡เค‚เฅค', burmese: 'แ€”แ€ฑแ€ฌแ€€แ€บแ€†แ€ฏแ€ถแ€ธแ€•แ€ฑแ€ซแ€บ แ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€›แ€”แ€บ แ€กแ€€แ€บแ€•แ€บแ แ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธแ€กแ€žแ€…แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€žแ€Šแ€บแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€†แ€€แ€บแ€œแ€€แ€บแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€”แ€บ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ซแ‹', - thai: - 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เนƒเธซเธกเนˆเธ‚เธญเธ‡เนเธญเธ›เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธ–เธถเธ‡เธŸเธตเน€เธˆเธญเธฃเนŒเธฅเนˆเธฒเธชเธธเธ” เธเธฃเธธเธ“เธฒเธญเธฑเธ›เน€เธ”เธ•เน€เธžเธทเนˆเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญ', + thai: 'เธ•เน‰เธญเธ‡เนƒเธŠเน‰เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เนƒเธซเธกเนˆเธ‚เธญเธ‡เนเธญเธ›เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธ–เธถเธ‡เธŸเธตเน€เธˆเธญเธฃเนŒเธฅเนˆเธฒเธชเธธเธ” เธเธฃเธธเธ“เธฒเธญเธฑเธ›เน€เธ”เธ•เน€เธžเธทเนˆเธญเธ”เธณเน€เธ™เธดเธ™เธเธฒเธฃเธ•เนˆเธญ', mandarin: '้œ€่ฆๅบ”็”จ็š„ๆ–ฐ็‰ˆๆœฌๆ‰่ƒฝ่ฎฟ้—ฎๆœ€ๆ–ฐๅŠŸ่ƒฝใ€‚่ฏทๆ›ดๆ–ฐไปฅ็ปง็ปญใ€‚' }, appUpgradeServerBehind: { @@ -8995,8 +9016,7 @@ export const localizations = { 'เค†เคชเค•เคพ เคเคช เคธเค‚เคธเฅเค•เคฐเคฃ เคธเคฐเฅเคตเคฐ เคธเฅ‡ เคจเคฏเคพ เคนเฅˆเฅค เค•เฅƒเคชเคฏเคพ เคธเคนเคพเคฏเคคเคพ เคธเฅ‡ เคธเค‚เคชเคฐเฅเค• เค•เคฐเฅ‡เค‚ เคฏเคพ เคธเคฐเฅเคตเคฐ เค…เคชเคกเฅ‡เคŸ เคนเฅ‹เคจเฅ‡ เค•เฅ€ เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เค•เคฐเฅ‡เค‚เฅค', burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€บแ€•แ€บแ€—แ€ฌแ€ธแ€›แ€พแ€„แ€บแ€ธแ€žแ€Šแ€บ แ€†แ€ฌแ€—แ€ฌแ€‘แ€€แ€บ แ€•แ€ญแ€ฏแ€™แ€ญแ€ฏแ€žแ€…แ€บแ€žแ€Šแ€บแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€กแ€€แ€ฐแ€กแ€Šแ€ฎแ€€แ€ญแ€ฏ แ€†แ€€แ€บแ€žแ€ฝแ€šแ€บแ€•แ€ซ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€†แ€ฌแ€—แ€ฌ แ€กแ€•แ€บแ€’แ€ญแ€แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€…แ€ฑแ€ฌแ€„แ€ทแ€บแ€•แ€ซแ‹', - thai: - 'เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เนเธญเธ›เธ‚เธญเธ‡เธ„เธธเธ“เนƒเธซเธกเนˆเธเธงเนˆเธฒเธ‹เธตเธฃเนŒเน€เธงเธญเธฃเนŒ เธเธฃเธธเธ“เธฒเธ•เธดเธ”เธ•เนˆเธญเธเนˆเธฒเธขเธชเธ™เธฑเธšเธชเธ™เธธเธ™เธซเธฃเธทเธญเธฃเธญเนƒเธซเน‰เธ‹เธตเธฃเนŒเน€เธงเธญเธฃเนŒเธญเธฑเธ›เน€เธ”เธ•', + thai: 'เน€เธงเธญเธฃเนŒเธŠเธฑเธ™เนเธญเธ›เธ‚เธญเธ‡เธ„เธธเธ“เนƒเธซเธกเนˆเธเธงเนˆเธฒเธ‹เธตเธฃเนŒเน€เธงเธญเธฃเนŒ เธเธฃเธธเธ“เธฒเธ•เธดเธ”เธ•เนˆเธญเธเนˆเธฒเธขเธชเธ™เธฑเธšเธชเธ™เธธเธ™เธซเธฃเธทเธญเธฃเธญเนƒเธซเน‰เธ‹เธตเธฃเนŒเน€เธงเธญเธฃเนŒเธญเธฑเธ›เน€เธ”เธ•', mandarin: 'ๆ‚จ็š„ๅบ”็”จ็‰ˆๆœฌๆฏ”ๆœๅŠกๅ™จๆ–ฐใ€‚่ฏท่”็ณปๆ”ฏๆŒๆˆ–็ญ‰ๅพ…ๆœๅŠกๅ™จๆ›ดๆ–ฐใ€‚' }, upgradeToVersion: { @@ -9093,9 +9113,11 @@ export const localizations = { tok_pisin: 'Database bilong ol fayl bilong yu i gutpela. Olgeta rekod i orait.', indonesian: 'Database lampiran Anda sehat. Semua catatan lampiran valid.', - nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคกเคพเคŸเคพเคฌเฅ‡เคธ เคธเฅเคตเคธเฅเคฅ เค›เฅค เคธเคฌเฅˆ เคธเค‚เคฒเค—เฅเคจเค• เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคฎเคพเคจเฅเคฏ เค›เคจเฅเฅค', + nepali: + 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคกเคพเคŸเคพเคฌเฅ‡เคธ เคธเฅเคตเคธเฅเคฅ เค›เฅค เคธเคฌเฅˆ เคธเค‚เคฒเค—เฅเคจเค• เคฐเฅ‡เค•เคฐเฅเคกเคนเคฐเฅ‚ เคฎเคพเคจเฅเคฏ เค›เคจเฅเฅค', hindi: 'เค†เคชเค•เคพ เคธเค‚เคฒเค—เฅเคจเค• เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคธเฅเคตเคธเฅเคฅ เคนเฅˆเฅค เคธเคญเฅ€ เคธเค‚เคฒเค—เฅเคจเค• เคฐเคฟเค•เฅ‰เคฐเฅเคก เคฎเคพเคจเฅเคฏ เคนเฅˆเค‚เฅค', - burmese: 'แ€žแ€„แ€บแ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€žแ€Šแ€บ แ€€แ€ปแ€”แ€บแ€ธแ€™แ€ฌแ€žแ€Šแ€บแ‹ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€แ€›แ€ฌแ€ธแ€แ€„แ€บแ€žแ€Šแ€บแ‹', + burmese: + 'แ€žแ€„แ€บแ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€žแ€Šแ€บ แ€€แ€ปแ€”แ€บแ€ธแ€™แ€ฌแ€žแ€Šแ€บแ‹ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€แ€›แ€ฌแ€ธแ€แ€„แ€บแ€žแ€Šแ€บแ‹', thai: 'เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅเน„เธŸเธฅเนŒเนเธ™เธšเธ‚เธญเธ‡เธ„เธธเธ“เธญเธขเธนเนˆเนƒเธ™เธชเธ เธฒเธžเธ”เธต เธšเธฑเธ™เธ—เธถเธเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ–เธนเธเธ•เน‰เธญเธ‡', mandarin: 'ๆ‚จ็š„้™„ไปถๆ•ฐๆฎๅบ“ๅฅๅบทใ€‚ๆ‰€ๆœ‰้™„ไปถ่ฎฐๅฝ•ๅ‡ๆœ‰ๆ•ˆใ€‚' }, @@ -9252,8 +9274,7 @@ export const localizations = { 'เคฏเคน เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคธเฅ‡ เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคฐเคฟเค•เฅ‰เคฐเฅเคก เค”เคฐ เค‡เคธเค•เฅ‡ เคธเค‚เคฆเคฐเฅเคญเฅ‹เค‚ เค•เฅ‹ เคนเคŸเคพ เคฆเฅ‡เค—เคพเฅค เคฏเคน เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เคจเคนเฅ€เค‚ เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพเฅค', burmese: 'แ€คแ€กแ€›แ€ฌแ€žแ€Šแ€บ แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€”แ€พแ€„แ€ทแ€บ แŽแ€„แ€บแ€ธแ แ€€แ€ญแ€ฏแ€ธแ€€แ€ฌแ€ธแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€™แ€พ แ€–แ€šแ€บแ€›แ€พแ€ฌแ€ธแ€™แ€Šแ€บแ‹ แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€•แ€ซแ‹', - thai: - 'เธชเธดเนˆเธ‡เธ™เธตเน‰เธˆเธฐเธฅเธšเธšเธฑเธ™เธ—เธถเธเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธขเนเธฅเธฐเธเธฒเธฃเธญเน‰เธฒเธ‡เธญเธดเธ‡เธˆเธฒเธเธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', + thai: 'เธชเธดเนˆเธ‡เธ™เธตเน‰เธˆเธฐเธฅเธšเธšเธฑเธ™เธ—เธถเธเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธขเนเธฅเธฐเธเธฒเธฃเธญเน‰เธฒเธ‡เธญเธดเธ‡เธˆเธฒเธเธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', mandarin: '่ฟ™ๅฐ†ไปŽๆ•ฐๆฎๅบ“ไธญๅˆ ้™คๆŸๅ็š„้™„ไปถ่ฎฐๅฝ•ๅŠๅ…ถๅผ•็”จใ€‚ๆญคๆ“ไฝœๆ— ๆณ•ๆ’ค้”€ใ€‚' }, clean: { @@ -9352,7 +9373,8 @@ export const localizations = { 'Membersihkan {cleaned} lampiran. {errorCount} kesalahan terjadi:\n\n{errors}', nepali: '{cleaned} เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟ เคญเคฏเฅ‹:\n\n{errors}', hindi: '{cleaned} เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฟเคฏเคพเฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟ เคนเฅเคˆ:\n\n{errors}', - burmese: '{cleaned} แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ‹ {errorCount} แ€กแ€™แ€พแ€ฌแ€ธ แ€–แ€ผแ€…แ€บแ€•แ€ฝแ€ฌแ€ธแ€แ€ฒแ€ทแ€žแ€Šแ€บ:\n\n{errors}', + burmese: + '{cleaned} แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ‹ {errorCount} แ€กแ€™แ€พแ€ฌแ€ธ แ€–แ€ผแ€…แ€บแ€•แ€ฝแ€ฌแ€ธแ€แ€ฒแ€ทแ€žแ€Šแ€บ:\n\n{errors}', thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธš {cleaned} เธฃเธฒเธขเธเธฒเธฃ เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ” {errorCount} เธฃเธฒเธขเธเธฒเธฃ:\n\n{errors}', mandarin: 'ๅทฒๆธ…็† {cleaned} ไธช้™„ไปถใ€‚ๅ‘็”Ÿ {errorCount} ไธช้”™่ฏฏ:\n\n{errors}' }, @@ -9368,8 +9390,10 @@ export const localizations = { 'Membersihkan {cleaned} lampiran. {errorCount} kesalahan terjadi:\n\n{errors}', nepali: '{cleaned} เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคญเคฏเฅ‹:\n\n{errors}', - hindi: '{cleaned} เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฟเคเฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคนเฅเคˆเค‚:\n\n{errors}', - burmese: '{cleaned} แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ‹ {errorCount} แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธ แ€–แ€ผแ€…แ€บแ€•แ€ฝแ€ฌแ€ธแ€แ€ฒแ€ทแ€žแ€Šแ€บ:\n\n{errors}', + hindi: + '{cleaned} เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฟเคเฅค {errorCount} เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคนเฅเคˆเค‚:\n\n{errors}', + burmese: + '{cleaned} แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ‹ {errorCount} แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธ แ€–แ€ผแ€…แ€บแ€•แ€ฝแ€ฌแ€ธแ€แ€ฒแ€ทแ€žแ€Šแ€บ:\n\n{errors}', thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธš {cleaned} เธฃเธฒเธขเธเธฒเธฃ เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ” {errorCount} เธฃเธฒเธขเธเธฒเธฃ:\n\n{errors}', mandarin: 'ๅทฒๆธ…็† {cleaned} ไธช้™„ไปถใ€‚ๅ‘็”Ÿ {errorCount} ไธช้”™่ฏฏ:\n\n{errors}' }, @@ -9381,7 +9405,8 @@ export const localizations = { indonesian: 'Berhasil membersihkan {cleaned} lampiran rusak.', nepali: '{cleaned} เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค', hindi: '{cleaned} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคพเคซ เค•เคฟเคฏเคพ เค—เคฏเคพเฅค', - burmese: '{cleaned} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹', + burmese: + '{cleaned} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹', thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {cleaned} เธฃเธฒเธขเธเธฒเธฃเธชเธณเน€เธฃเน‡เธˆ', mandarin: 'ๅทฒๆˆๅŠŸๆธ…็† {cleaned} ไธชๆŸๅ็š„้™„ไปถใ€‚' }, @@ -9393,7 +9418,8 @@ export const localizations = { indonesian: 'Berhasil membersihkan {cleaned} lampiran rusak.', nepali: '{cleaned} เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคซเคพ เค—เคฐเคฟเคฏเฅ‹เฅค', hindi: '{cleaned} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคธเคพเคซ เค•เคฟเค เค—เคเฅค', - burmese: '{cleaned} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹', + burmese: + '{cleaned} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€žแ€”แ€ทแ€บแ€›แ€พแ€„แ€บแ€ธแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹', thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {cleaned} เธฃเธฒเธขเธเธฒเธฃเธชเธณเน€เธฃเน‡เธˆ', mandarin: 'ๅทฒๆˆๅŠŸๆธ…็† {cleaned} ไธชๆŸๅ็š„้™„ไปถใ€‚' }, @@ -9419,7 +9445,8 @@ export const localizations = { indonesian: 'Gagal memuat lampiran rusak. Silakan coba lagi.', nepali: 'เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคฒเฅ‹เคก เค—เคฐเฅเคจ เค…เคธเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจ: เคชเฅเคฐเคฏเคพเคธ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', hindi: 'เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคฒเฅ‹เคก เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒเฅค เค•เฅƒเคชเคฏเคพ เคชเฅเคจเคƒ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเฅ‡เค‚เฅค', - burmese: 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', + burmese: + 'แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ฐแ€ธแ€แ€ฝแ€ฒแ€–แ€ญแ€ฏแ€„แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€”แ€บ แ€™แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€•แ€ซแ‹ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€‘แ€•แ€บแ€™แ€ถแ€€แ€ผแ€ญแ€ฏแ€ธแ€…แ€ฌแ€ธแ€•แ€ซแ‹', thai: 'เน‚เธซเธฅเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธขเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', mandarin: 'ๅŠ ่ฝฝๆŸๅ็š„้™„ไปถๅคฑ่ดฅใ€‚่ฏท้‡่ฏ•ใ€‚' }, @@ -9549,7 +9576,8 @@ export const localizations = { burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€”แ€ฑแ€ฌแ€€แ€บแŠ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€œแ€ฏแ€•แ€บแ€แ€ผแ€„แ€บแ€ธ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€กแ€žแ€…แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€›แ€”แ€บ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€œแ€ฏแ€•แ€บแ€›แ€”แ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹', thai: 'เธซเธฅเธฑเธ‡เธˆเธฒเธเธฅเธšเธšเธฑเธเธŠเธตเนเธฅเน‰เธง เธ„เธธเธ“เธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™เธซเธฃเธทเธญเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเนเธšเธšเธญเธญเธŸเน„เธฅเธ™เนŒเน„เธ”เน‰ เธ„เธธเธ“เธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเน€เธžเธทเนˆเธญเธชเธฃเน‰เธฒเธ‡เธšเธฑเธเธŠเธตเนƒเธซเธกเนˆเธซเธฃเธทเธญเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš', - mandarin: 'ๅˆ ้™ค่ดฆๆˆทๅŽ๏ผŒๆ‚จๅฐ†ๆ— ๆณ•ๅœจ็ฆป็บฟๆ—ถๆณจๅ†Œๆˆ–็™ปๅฝ•ใ€‚ๆ‚จๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๅˆ›ๅปบๆ–ฐ่ดฆๆˆทๆˆ–็™ปๅฝ•ใ€‚' + mandarin: + 'ๅˆ ้™ค่ดฆๆˆทๅŽ๏ผŒๆ‚จๅฐ†ๆ— ๆณ•ๅœจ็ฆป็บฟๆ—ถๆณจๅ†Œๆˆ–็™ปๅฝ•ใ€‚ๆ‚จๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๅˆ›ๅปบๆ–ฐ่ดฆๆˆทๆˆ–็™ปๅฝ•ใ€‚' }, accountDeletionPIIWarning: { english: @@ -9569,7 +9597,8 @@ export const localizations = { burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ญแ€แ€บแ€žแ€ญแ€™แ€บแ€ธแ€™แ€Šแ€บ (แ€•แ€ปแ€ฑแ€ฌแ€ทแ€•แ€ปแ€ฑแ€ฌแ€„แ€บแ€ธแ€–แ€ปแ€€แ€บแ€แ€ผแ€„แ€บแ€ธ)แ‹ แ€žแ€„แ€บแ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€‘แ€ญแ€”แ€บแ€ธแ€žแ€ญแ€™แ€บแ€ธแ€™แ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€™แ€žแ€Šแ€บแ€กแ€‘แ€ญ แ€กแ€€แ€บแ€•แ€บแ€€แ€ญแ€ฏ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€ทแ€บ แ€™แ€›แ€•แ€ซแ‹ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€™แ€†แ€ญแ€ฏ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹', thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™ (เธเธฒเธฃเธฅเธšเนเธšเธšเธ™เธธเนˆเธกเธ™เธงเธฅ) เธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเธ–เธนเธเน€เธเน‡เธšเน„เธงเน‰ เนเธ•เนˆเธ„เธธเธ“เธˆเธฐเน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เน€เธ‚เน‰เธฒเธ–เธถเธ‡เนเธญเธ›เน„เธ”เน‰เธˆเธ™เธเธงเนˆเธฒเธ„เธธเธ“เธˆเธฐเธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธต เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธตเน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ เนเธ•เนˆเธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเธญเธขเธนเนˆ', - mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅœ็”จ๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จ็š„ๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†่ขซไฟ็•™๏ผŒไฝ†ๅœจๆ‚จๆขๅค่ดฆๆˆทไน‹ๅ‰ๆ‚จๅฐ†ๆ— ๆณ•่ฎฟ้—ฎๅบ”็”จใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๆขๅค่ดฆๆˆท๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟใ€‚' + mandarin: + 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅœ็”จ๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จ็š„ๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†่ขซไฟ็•™๏ผŒไฝ†ๅœจๆ‚จๆขๅค่ดฆๆˆทไน‹ๅ‰ๆ‚จๅฐ†ๆ— ๆณ•่ฎฟ้—ฎๅบ”็”จใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๆขๅค่ดฆๆˆท๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟใ€‚' }, accountDeletionContributionsInfo: { english: @@ -9589,7 +9618,8 @@ export const localizations = { burmese: 'แ€žแ€„แ€บแ แ€•แ€ซแ€แ€„แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€ฝแ€€แ€บแ€™แ€พแ€ฏแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ (แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแŠ แ€แ€›แ€ฎแ€ธแ€…แ€‰แ€บแ€™แ€ปแ€ฌแ€ธแŠ แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแŠ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€†แ€ญแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธแŠ แ€™แ€ฒแ€™แ€ปแ€ฌแ€ธ) แ€‘แ€ญแ€”แ€บแ€ธแ€žแ€ญแ€™แ€บแ€ธแ€™แ€Šแ€บแŠ แ€•แ€ซแ€แ€„แ€บแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€กแ€› แ€™แ€ปแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€•แ€ผแ€Šแ€บแ€žแ€ฐแ€™แ€ผแ€„แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ‹ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€™แ€†แ€ญแ€ฏ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', thai: 'เธเธฒเธฃเธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“ (เน‚เธ„เธฃเธ‡เธเธฒเธฃ เธ เธฒเธฃเธเธดเธˆ เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒ เธเธฒเธฃเนเธ›เธฅ votes) เธˆเธฐเธ–เธนเธเน€เธเน‡เธšเธฃเธฑเธเธฉเธฒเนเธฅเธฐเธˆเธฐเธขเธฑเธ‡เธ„เธ‡เน€เธ›เน‡เธ™เธชเธฒเธ˜เธฒเธฃเธ“เธฐเธ•เธฒเธกเธ‚เน‰เธญเธเธณเธซเธ™เธ”เธ—เธตเนˆเธ„เธธเธ“เน„เธ”เน‰เธ•เธเธฅเธ‡เน€เธกเธทเนˆเธญเน€เธ‚เน‰เธฒเธฃเนˆเธงเธก เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เธšเธฑเธเธŠเธตเน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒ เนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน„เธ”เน‰เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', - mandarin: 'ๆ‚จ็š„ๆ‰€ๆœ‰่ดก็Œฎ๏ผˆ้กน็›ฎใ€ไปปๅŠกใ€่ต„ไบงใ€็ฟป่ฏ‘ใ€ๆŠ•็ฅจ๏ผ‰ๅฐ†่ขซไฟ็•™๏ผŒๅนถๅฐ†ๆ นๆฎๆ‚จๅŠ ๅ…ฅๆ—ถๅŒๆ„็š„ๆกๆฌพไฟๆŒๅ…ฌๅผ€ใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๆขๅค่ดฆๆˆท๏ผŒๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†ๅ†ๆฌกๅฏ่ฎฟ้—ฎใ€‚' + mandarin: + 'ๆ‚จ็š„ๆ‰€ๆœ‰่ดก็Œฎ๏ผˆ้กน็›ฎใ€ไปปๅŠกใ€่ต„ไบงใ€็ฟป่ฏ‘ใ€ๆŠ•็ฅจ๏ผ‰ๅฐ†่ขซไฟ็•™๏ผŒๅนถๅฐ†ๆ นๆฎๆ‚จๅŠ ๅ…ฅๆ—ถๅŒๆ„็š„ๆกๆฌพไฟๆŒๅ…ฌๅผ€ใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๆขๅค่ดฆๆˆท๏ผŒๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†ๅ†ๆฌกๅฏ่ฎฟ้—ฎใ€‚' }, accountDeletionConfirm: { english: @@ -9629,7 +9659,8 @@ export const localizations = { burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€™แ€Šแ€บ (แ€•แ€ปแ€ฑแ€ฌแ€ทแ€•แ€ปแ€ฑแ€ฌแ€„แ€บแ€ธแ€–แ€ปแ€€แ€บแ€แ€ผแ€„แ€บแ€ธ)แ‹ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€…แ€แ€›แ€„แ€บแ€™แ€พ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹', thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธฅเธš (เธเธฒเธฃเธฅเธšเนเธšเธšเธ™เธธเนˆเธกเธ™เธงเธฅ) เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน„เธ”เน‰เธˆเธฒเธเธซเธ™เน‰เธฒเธˆเธญเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡ เนเธ•เนˆเธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเธญเธขเธนเนˆเน€เธžเธทเนˆเธญเธเธนเน‰เธ„เธทเธ™', - mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅˆ ้™ค๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จๅฏไปฅ็จๅŽไปŽ็™ปๅฝ•ๅฑๅน•ๆขๅค๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๆขๅคใ€‚' + mandarin: + 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅˆ ้™ค๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จๅฏไปฅ็จๅŽไปŽ็™ปๅฝ•ๅฑๅน•ๆขๅค๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๆขๅคใ€‚' }, accountDeletionStep1Title: { english: 'Step 1: Understand the Consequences', @@ -9673,7 +9704,8 @@ export const localizations = { burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€–แ€ปแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎ (แ€•แ€ปแ€ฑแ€ฌแ€ทแ€•แ€ปแ€ฑแ€ฌแ€„แ€บแ€ธแ€–แ€ปแ€€แ€บแ€แ€ผแ€„แ€บแ€ธ)แ‹ แ€”แ€ฑแ€ฌแ€€แ€บแ€™แ€พ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€žแ€ฑแ€ฌแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€•แ€ซแ€™แ€Šแ€บแ‹ แ€šแ€แ€ฏ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฝแ€€แ€บแ€™แ€Šแ€บแ‹', thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธฅเธšเธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง (เธเธฒเธฃเธฅเธšเนเธšเธšเธ™เธธเนˆเธกเธ™เธงเธฅ) เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน„เธ”เน‰เนƒเธ™เธ เธฒเธขเธซเธฅเธฑเธ‡ เนเธ•เนˆเธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเธญเธขเธนเนˆ เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธญเธญเธเธˆเธฒเธเธฃเธฐเธšเธšเธ•เธญเธ™เธ™เธตเน‰', - mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅทฒๆˆๅŠŸๅˆ ้™ค๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จๅฏไปฅ็จๅŽๆขๅค๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟใ€‚ๆ‚จ็Žฐๅœจๅฐ†่ขซ็™ปๅ‡บใ€‚' + mandarin: + 'ๆ‚จ็š„่ดฆๆˆทๅทฒๆˆๅŠŸๅˆ ้™ค๏ผˆ่ฝฏๅˆ ้™ค๏ผ‰ใ€‚ๆ‚จๅฏไปฅ็จๅŽๆขๅค๏ผŒไฝ†ๅฟ…้กปๅœจ็บฟใ€‚ๆ‚จ็Žฐๅœจๅฐ†่ขซ็™ปๅ‡บใ€‚' }, accountDeletionError: { english: 'Failed to delete account: {error}', @@ -9717,7 +9749,8 @@ export const localizations = { burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€–แ€ปแ€€แ€บแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€›แ€”แ€บ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแŠ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฝแ€€แ€บแ แ€œแ€ฑแ€ฌแ€ทแ€‚แ€บแ€กแ€„แ€บแ€…แ€แ€›แ€„แ€บแ€žแ€ญแ€ฏแ€ท แ€•แ€ผแ€”แ€บแ€žแ€ฝแ€ฌแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธฅเธšเนเธฅเน‰เธง เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เธเธนเน‰เธ„เธทเธ™เน€เธžเธทเนˆเธญเน€เธ‚เน‰เธฒเธ–เธถเธ‡เธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ‚เธญเธ‡เธ„เธธเธ“เน„เธ”เน‰ เธซเธฃเธทเธญเธญเธญเธเธˆเธฒเธเธฃเธฐเธšเธšเนเธฅเธฐเธเธฅเธฑเธšเน„เธ›เธซเธ™เน‰เธฒเธˆเธญเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธš', - mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅทฒๅˆ ้™คใ€‚ๆ‚จๅฏไปฅๆขๅคๅฎƒไปฅ้‡ๆ–ฐ่ฎฟ้—ฎๆ‰€ๆœ‰ๆ•ฐๆฎ๏ผŒๆˆ–็™ปๅ‡บๅนถ่ฟ”ๅ›ž็™ปๅฝ•ๅฑๅน•ใ€‚' + mandarin: + 'ๆ‚จ็š„่ดฆๆˆทๅทฒๅˆ ้™คใ€‚ๆ‚จๅฏไปฅๆขๅคๅฎƒไปฅ้‡ๆ–ฐ่ฎฟ้—ฎๆ‰€ๆœ‰ๆ•ฐๆฎ๏ผŒๆˆ–็™ปๅ‡บๅนถ่ฟ”ๅ›ž็™ปๅฝ•ๅฑๅน•ใ€‚' }, restoreAccount: { english: 'Restore Account', @@ -9761,7 +9794,8 @@ export const localizations = { burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€Šแ€ทแ€บแ€…แ€ฏแ€ถแ€…แ€ฝแ€ฌ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€™แ€Šแ€บแ‹ แ€’แ€ฑแ€แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแŠ แ€กแ€€แ€บแ€•แ€บแ€€แ€ญแ€ฏ แ€•แ€ฏแ€ถแ€™แ€พแ€”แ€บแ€†แ€€แ€บแ€žแ€ฏแ€ถแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ€žแ€Šแ€บแ‹', thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธˆเธฐเธ–เธนเธเธเธนเน‰เธ„เธทเธ™เธญเธขเนˆเธฒเธ‡เธชเธกเธšเธนเธฃเธ“เนŒ เธ‚เน‰เธญเธกเธนเธฅเธ—เธฑเน‰เธ‡เธซเธกเธ”เธˆเธฐเน€เธ‚เน‰เธฒเธ–เธถเธ‡เน„เธ”เน‰เธญเธตเธเธ„เธฃเธฑเน‰เธ‡ เนเธฅเธฐเธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เนเธญเธ›เน„เธ”เน‰เธ•เธฒเธกเธ›เธเธ•เธด', - mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅฎŒๅ…จๆขๅคใ€‚ๆ‚จ็š„ๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†ๅ†ๆฌกๅฏ่ฎฟ้—ฎ๏ผŒๆ‚จๅฏไปฅ็ปง็ปญๆญฃๅธธไฝฟ็”จๅบ”็”จใ€‚' + mandarin: + 'ๆ‚จ็š„่ดฆๆˆทๅฐ†่ขซๅฎŒๅ…จๆขๅคใ€‚ๆ‚จ็š„ๆ‰€ๆœ‰ๆ•ฐๆฎๅฐ†ๅ†ๆฌกๅฏ่ฎฟ้—ฎ๏ผŒๆ‚จๅฏไปฅ็ปง็ปญๆญฃๅธธไฝฟ็”จๅบ”็”จใ€‚' }, accountRestoreSuccess: { english: 'Your account has been successfully restored. Welcome back!', @@ -9772,7 +9806,8 @@ export const localizations = { indonesian: 'Akun Anda telah berhasil dipulihkan. Selamat datang kembali!', nepali: 'เคคเคชเคพเคˆเค‚เค•เฅ‹ เค–เคพเคคเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคจเคพ เค—เคฐเคฟเคฏเฅ‹เฅค เคซเฅ‡เคฐเคฟ เคธเฅเคตเคพเค—เคค เค›!', hindi: 'เค†เคชเค•เคพ เค–เคพเคคเคพ เคธเคซเคฒเคคเคพเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจเคฐเฅเคธเฅเคฅเคพเคชเคฟเคค เคนเฅ‹ เค—เคฏเคพเฅค เคตเคพเคชเคธ เคธเฅเคตเคพเค—เคค เคนเฅˆ!', - burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€•แ€ผแ€”แ€บแ€œแ€ฌแ€žแ€Šแ€ทแ€บแ€กแ€แ€ฝแ€€แ€บ แ€€แ€ผแ€ญแ€ฏแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ!', + burmese: + 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€€แ€ญแ€ฏ แ€กแ€ฑแ€ฌแ€„แ€บแ€™แ€ผแ€„แ€บแ€…แ€ฝแ€ฌ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€›แ€šแ€ฐแ€•แ€ผแ€ฎแ€ธแ€•แ€ซแ€•แ€ผแ€ฎแ‹ แ€•แ€ผแ€”แ€บแ€œแ€ฌแ€žแ€Šแ€ทแ€บแ€กแ€แ€ฝแ€€แ€บ แ€€แ€ผแ€ญแ€ฏแ€†แ€ญแ€ฏแ€•แ€ซแ€žแ€Šแ€บ!', thai: 'เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“เธ–เธนเธเธเธนเน‰เธ„เธทเธ™เธชเธณเน€เธฃเน‡เธˆเนเธฅเน‰เธง เธขเธดเธ™เธ”เธตเธ•เน‰เธญเธ™เธฃเธฑเธšเธเธฅเธฑเธš!', mandarin: 'ๆ‚จ็š„่ดฆๆˆทๅทฒๆˆๅŠŸๆขๅคใ€‚ๆฌข่ฟŽๅ›žๆฅ๏ผ' }, @@ -9818,7 +9853,8 @@ export const localizations = { burmese: 'แ€žแ€„แ€บแ แ€กแ€€แ€ฑแ€ฌแ€„แ€ทแ€บแ€แ€ฝแ€„แ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€•แ€ญแ€แ€บแ€†แ€ญแ€ฏแ€ทแ€™แ€Šแ€บแ€€แ€ญแ€ฏ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ท แ€žแ€ญแ€™แ€บแ€ธแ€†แ€Šแ€บแ€ธแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€•แ€ญแ€แ€บแ€†แ€ญแ€ฏแ€ทแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€€แ€ญแ€ฏ แ€žแ€„แ€ทแ€บแ€œแ€ปแ€ฑแ€ฌแ€บแ€…แ€ฝแ€ฌ แ€–แ€ปแ€ฑแ€ฌแ€€แ€บแ€‘แ€ฌแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€›แ€”แ€บ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€™แ€พแ€แ€บแ€•แ€ฏแ€ถแ€แ€„แ€บแ€•แ€ซแ‹', thai: 'เน€เธฃเธฒเน€เธเน‡เธšเธ‚เน‰เธญเธกเธนเธฅเน€เธเธตเนˆเธขเธงเธเธฑเธšเธชเธดเนˆเธ‡เธ—เธตเนˆเธ•เน‰เธญเธ‡เธšเธฅเน‡เธญเธเนƒเธ™เธšเธฑเธเธŠเธตเธ‚เธญเธ‡เธ„เธธเธ“ เธเธฃเธธเธ“เธฒเธฅเธ‡เธ—เธฐเน€เธšเธตเธขเธ™เน€เธžเธทเนˆเธญเนƒเธซเน‰เนเธ™เนˆเนƒเธˆเธงเนˆเธฒเธชเธฒเธกเธฒเธฃเธ–เธ‹เนˆเธญเธ™เน€เธ™เธทเน‰เธญเธซเธฒเธ—เธตเนˆเธ–เธนเธเธšเธฅเน‡เธญเธเน„เธ”เน‰เธญเธขเนˆเธฒเธ‡เธ–เธนเธเธ•เน‰เธญเธ‡', - mandarin: 'ๆˆ‘ไปฌๅœจๆ‚จ็š„่ดฆๆˆทไธญๅญ˜ๅ‚จๆœ‰ๅ…ณ่ฆๅฑ่”ฝๅ†…ๅฎน็š„ไฟกๆฏใ€‚่ฏทๆณจๅ†Œไปฅ็กฎไฟ่ขซๅฑ่”ฝ็š„ๅ†…ๅฎนๅฏไปฅๆญฃ็กฎ้š่—ใ€‚' + mandarin: + 'ๆˆ‘ไปฌๅœจๆ‚จ็š„่ดฆๆˆทไธญๅญ˜ๅ‚จๆœ‰ๅ…ณ่ฆๅฑ่”ฝๅ†…ๅฎน็š„ไฟกๆฏใ€‚่ฏทๆณจๅ†Œไปฅ็กฎไฟ่ขซๅฑ่”ฝ็š„ๅ†…ๅฎนๅฏไปฅๆญฃ็กฎ้š่—ใ€‚' }, connected: { english: 'Connected', @@ -9951,7 +9987,8 @@ export const localizations = { 'Silakan masuk untuk melihat status unduhan dan informasi sinkronisasi.', nepali: 'เค•เฅƒเคชเคฏเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅเคฅเคฟเคคเคฟ เคฐ เคธเคฟเค‚เค• เคœเคพเคจเค•เคพเคฐเฅ€ เคนเฅ‡เคฐเฅเคจ เคธเคพเค‡เคจ เค‡เคจ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค', hindi: 'เค•เฅƒเคชเคฏเคพ เคกเคพเค‰เคจเคฒเฅ‹เคก เคธเฅเคฅเคฟเคคเคฟ เค”เคฐ เคธเคฟเค‚เค• เคœเคพเคจเค•เคพเคฐเฅ€ เคฆเฅ‡เค–เคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเคพเค‡เคจ เค‡เคจ เค•เคฐเฅ‡เค‚เฅค', - burmese: 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บ แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑแ€”แ€พแ€„แ€ทแ€บ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธ แ€กแ€แ€ปแ€€แ€บแ€กแ€œแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€›แ€”แ€บ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€•แ€ซแ‹', + burmese: + 'แ€’แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€’แ€บ แ€กแ€แ€ผแ€ฑแ€กแ€”แ€ฑแ€”แ€พแ€„แ€ทแ€บ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธ แ€กแ€แ€ปแ€€แ€บแ€กแ€œแ€€แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€›แ€”แ€บ แ€€แ€ปแ€ฑแ€ธแ€‡แ€ฐแ€ธแ€•แ€ผแ€ฏแ แ€แ€„แ€บแ€›แ€ฑแ€ฌแ€€แ€บแ€•แ€ซแ‹', thai: 'เธเธฃเธธเธ“เธฒเน€เธ‚เน‰เธฒเธชเธนเนˆเธฃเธฐเธšเธšเน€เธžเธทเนˆเธญเธ”เธนเธชเธ–เธฒเธ™เธฐเธเธฒเธฃเธ”เธฒเธงเธ™เนŒเน‚เธซเธฅเธ”เนเธฅเธฐเธ‚เน‰เธญเธกเธนเธฅเธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒ', mandarin: '่ฏท็™ปๅฝ•ไปฅๆŸฅ็œ‹ไธ‹่ฝฝ็Šถๆ€ๅ’ŒๅŒๆญฅไฟกๆฏใ€‚' }, @@ -10120,8 +10157,7 @@ export const localizations = { 'เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคฌเคŸเคจ เคฆเคฌเคพเค เคฐเค–เฅ‡เค‚, เคฏเคพ เคœเคฌ เคญเฅ€ เค†เคช เคฌเฅ‹เคฒเฅ‡เค‚ เคคเฅ‹ เคฐเคฟเค•เฅ‰เคฐเฅเคก เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเฅเคฒเคพเค‡เคก เค•เคฐเฅ‡เค‚', burmese: 'แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€แ€œแ€ฏแ€แ€บแ€€แ€ญแ€ฏ แ€€แ€ญแ€ฏแ€„แ€บแ€‘แ€ฌแ€ธแ€•แ€ซ แ€žแ€ญแ€ฏแ€ทแ€™แ€Ÿแ€ฏแ€แ€บ แ€žแ€„แ€บแ€…แ€€แ€ฌแ€ธแ€•แ€ผแ€ฑแ€ฌแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€™แ€พแ€แ€บแ€แ€™แ€บแ€ธแ€แ€„แ€บแ€›แ€”แ€บ แ€›แ€ฝแ€พแ€ฑแ€ทแ€•แ€ซ', - thai: - 'เธเธ”เธ›เธธเนˆเธกเธ„เน‰เธฒเธ‡เน„เธงเน‰เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธ เธซเธฃเธทเธญเน€เธฅเธทเนˆเธญเธ™เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเน€เธกเธทเนˆเธญเนƒเธ”เธเน‡เธ•เธฒเธกเธ—เธตเนˆเธ„เธธเธ“เธžเธนเธ”', + thai: 'เธเธ”เธ›เธธเนˆเธกเธ„เน‰เธฒเธ‡เน„เธงเน‰เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธ เธซเธฃเธทเธญเน€เธฅเธทเนˆเธญเธ™เน€เธžเธทเนˆเธญเธšเธฑเธ™เธ—เธถเธเน€เธกเธทเนˆเธญเนƒเธ”เธเน‡เธ•เธฒเธกเธ—เธตเนˆเธ„เธธเธ“เธžเธนเธ”', mandarin: 'ๆŒ‰ไฝๆŒ‰้’ฎๅฝ•ๅˆถ๏ผŒๆˆ–ๆป‘ๅŠจไปฅๅœจๆ‚จ่ฏด่ฏๆ—ถ้šๆ—ถๅฝ•ๅˆถ' }, onboardingRecordMethod1: { @@ -10189,8 +10225,7 @@ export const localizations = { 'เคฆเฅ‚เคธเคฐเฅ‹เค‚ เค•เฅ‹ เคธเคนเคฏเฅ‹เค— เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคฎเค‚เคคเฅเคฐเคฟเคค เค•เคฐเฅ‡เค‚เฅค เค‰เคจเฅเคนเฅ‡เค‚ เคเค• เคธเฅ‚เคšเคจเคพ เคฎเคฟเคฒเฅ‡เค—เฅ€ เค”เคฐ เคตเฅ‡ เค…เคชเคจเฅ€ เคธเฅ‚เคšเฅ€ เคฎเฅ‡เค‚ เค†เคชเค•เคพ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฆเฅ‡เค–เฅ‡เค‚เค—เฅ‡', burmese: 'แ€กแ€แ€ผแ€ฌแ€ธแ€žแ€ฐแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€•แ€ฐแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€›แ€”แ€บ แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€•แ€ซแ‹ แ€žแ€ฐแ€แ€ญแ€ฏแ€ทแ€žแ€Šแ€บ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€€แ€ผแ€ฌแ€ธแ€แ€ปแ€€แ€บแ€แ€…แ€บแ€แ€ฏ แ€›แ€›แ€พแ€ญแ€™แ€Šแ€บแ€–แ€ผแ€…แ€บแ€•แ€ผแ€ฎแ€ธ แ€žแ€ฐแ€แ€ญแ€ฏแ€ทแ แ€…แ€ฌแ€›แ€„แ€บแ€ธแ€แ€ฝแ€„แ€บ แ€žแ€„แ€บแ แ€•แ€›แ€ฑแ€ฌแ€‚แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€™แ€ผแ€„แ€บแ€›แ€™แ€Šแ€บ', - thai: - 'เน€เธŠเธดเธเธœเธนเน‰เธญเธทเนˆเธ™เนƒเธซเน‰เธฃเนˆเธงเธกเธกเธทเธญเธเธฑเธ™ เธžเธงเธเน€เธ‚เธฒเธˆเธฐเน„เธ”เน‰เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธฅเธฐเน€เธซเน‡เธ™เน‚เธ›เธฃเน€เธˆเธเธ•เนŒเธ‚เธญเธ‡เธ„เธธเธ“เนƒเธ™เธฃเธฒเธขเธเธฒเธฃเธ‚เธญเธ‡เธžเธงเธเน€เธ‚เธฒ', + thai: 'เน€เธŠเธดเธเธœเธนเน‰เธญเธทเนˆเธ™เนƒเธซเน‰เธฃเนˆเธงเธกเธกเธทเธญเธเธฑเธ™ เธžเธงเธเน€เธ‚เธฒเธˆเธฐเน„เธ”เน‰เธฃเธฑเธšเธเธฒเธฃเนเธˆเน‰เธ‡เน€เธ•เธทเธญเธ™เนเธฅเธฐเน€เธซเน‡เธ™เน‚เธ›เธฃเน€เธˆเธเธ•เนŒเธ‚เธญเธ‡เธ„เธธเธ“เนƒเธ™เธฃเธฒเธขเธเธฒเธฃเธ‚เธญเธ‡เธžเธงเธเน€เธ‚เธฒ', mandarin: '้‚€่ฏทไป–ไบบๅไฝœใ€‚ไป–ไปฌๅฐ†ๆ”ถๅˆฐ้€š็Ÿฅๅนถๅœจไป–ไปฌ็š„ๅˆ—่กจไธญ็œ‹ๅˆฐๆ‚จ็š„้กน็›ฎ' }, onboardingInviteBenefit1: { @@ -10392,9 +10427,9 @@ export const localizations = { 'เคชเคพเค  เค”เคฐ เค‘เคกเคฟเคฏเฅ‹ เคญเคพเคทเคพ เคกเฅ‡เคŸเคพ เคœเคฒเฅเคฆเฅ€ เคธเฅ‡ เคเค•เคคเฅเคฐ เค•เคฐเฅ‡เค‚เฅค เคธเฅเคฅเคพเคจเฅ€เคฏ-เคชเฅเคฐเคฅเคฎ, เค•เคจเฅ‡เค•เฅเคŸ เคนเฅ‹เคจเฅ‡ เคชเคฐ เคธเคฟเค‚เค• เค•เคฐเฅ‡เค‚เฅค เคธเคนเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚, เค…เคจเฅเคตเคพเคฆ เค•เคฐเฅ‡เค‚, เคฎเคพเคจเฅเคฏ เค•เคฐเฅ‡เค‚เฅค', burmese: 'แ€…แ€ฌแ€žแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€กแ€žแ€ถ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธ แ€’แ€ฑแ€แ€ฌแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€™แ€ผแ€”แ€บแ€…แ€ฏแ€†แ€ฑแ€ฌแ€„แ€บแ€ธแ€•แ€ซแ‹ แ€’แ€ฑแ€žแ€แ€ฝแ€„แ€บแ€ธ-แ€ฆแ€ธแ€…แ€ฌแ€ธแ€•แ€ฑแ€ธแŠ แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€žแ€ฑแ€ฌแ€กแ€แ€ซ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€•แ€ซแ‹ แ€•แ€ฐแ€ธแ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€•แ€ซแŠ แ€˜แ€ฌแ€žแ€ฌแ€•แ€ผแ€”แ€บแ€•แ€ซแŠ แ€กแ€แ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ซแ‹', - thai: - 'เธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเธ เธฒเธฉเธฒเธ‚เน‰เธญเธ„เธงเธฒเธกเนเธฅเธฐเน€เธชเธตเธขเธ‡เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธง เน€เธ™เน‰เธ™เธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™เธเนˆเธญเธ™ เธ‹เธดเธ‡เธ„เนŒเน€เธกเธทเนˆเธญเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญ เธฃเนˆเธงเธกเธกเธทเธญ เนเธ›เธฅ เนเธฅเธฐเธ•เธฃเธงเธˆเธชเธญเธš', - mandarin: 'ๅฟซ้€Ÿๆ”ถ้›†ๆ–‡ๆœฌๅ’Œ้Ÿณ้ข‘่ฏญ่จ€ๆ•ฐๆฎใ€‚ๆœฌๅœฐไผ˜ๅ…ˆ๏ผŒ่ฟžๆŽฅๆ—ถๅŒๆญฅใ€‚ๅไฝœใ€็ฟป่ฏ‘ใ€้ชŒ่ฏใ€‚' + thai: 'เธฃเธงเธšเธฃเธงเธกเธ‚เน‰เธญเธกเธนเธฅเธ เธฒเธฉเธฒเธ‚เน‰เธญเธ„เธงเธฒเธกเนเธฅเธฐเน€เธชเธตเธขเธ‡เธญเธขเนˆเธฒเธ‡เธฃเธงเธ”เน€เธฃเน‡เธง เน€เธ™เน‰เธ™เธ—เน‰เธญเธ‡เธ–เธดเนˆเธ™เธเนˆเธญเธ™ เธ‹เธดเธ‡เธ„เนŒเน€เธกเธทเนˆเธญเน€เธŠเธทเนˆเธญเธกเธ•เนˆเธญ เธฃเนˆเธงเธกเธกเธทเธญ เนเธ›เธฅ เนเธฅเธฐเธ•เธฃเธงเธˆเธชเธญเธš', + mandarin: + 'ๅฟซ้€Ÿๆ”ถ้›†ๆ–‡ๆœฌๅ’Œ้Ÿณ้ข‘่ฏญ่จ€ๆ•ฐๆฎใ€‚ๆœฌๅœฐไผ˜ๅ…ˆ๏ผŒ่ฟžๆŽฅๆ—ถๅŒๆญฅใ€‚ๅไฝœใ€็ฟป่ฏ‘ใ€้ชŒ่ฏใ€‚' }, onboardingVisionStatement1: { english: "Every language having access to the world's knowledge.", @@ -10437,8 +10472,7 @@ export const localizations = { 'CC0/เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคกเฅ‹เคฎเฅ‡เคจ เคกเฅ‡เคŸเคพ เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค•เคฐเคคเคพ เคนเฅˆ เค•เคฟ เค•เฅ‹เคˆ เคญเฅ€ เคชเค•เฅเคท เค‡เคธ เคฆเฅƒเคทเฅเคŸเคฟ เค•เฅ‹ เคฐเฅ‹เค• เคจเคนเฅ€เค‚ เคธเค•เคคเคพเฅค', burmese: 'CC0/แ€•แ€ผแ€Šแ€บแ€žแ€ฐแ€ทแ€’แ€ญแ€ฏแ€™แ€ญแ€”แ€บแ€ธ แ€’แ€ฑแ€แ€ฌแ€žแ€Šแ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€–แ€ฝแ€ฒแ€ทแ€™แ€ปแ€พ แ€คแ€™แ€ปแ€พแ€ฑแ€ฌแ€บแ€™แ€พแ€”แ€บแ€ธแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€›แ€•แ€บแ€แ€”แ€ทแ€บแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€™แ€Ÿแ€ฏแ€แ€บแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธ แ€žแ€ฑแ€แ€ปแ€ฌแ€…แ€ฑแ€žแ€Šแ€บแ‹', - thai: - 'เธ‚เน‰เธญเธกเธนเธฅ CC0/เธชเธฒเธ˜เธฒเธฃเธ“เธชเธกเธšเธฑเธ•เธดเธฃเธฑเธšเธ›เธฃเธฐเธเธฑเธ™เธงเนˆเธฒเน„เธกเนˆเธกเธตเธเนˆเธฒเธขเนƒเธ”เธชเธฒเธกเธฒเธฃเธ–เธซเธขเธธเธ”เธงเธดเธชเธฑเธขเธ—เธฑเธจเธ™เนŒเธ™เธตเน‰เน„เธ”เน‰', + thai: 'เธ‚เน‰เธญเธกเธนเธฅ CC0/เธชเธฒเธ˜เธฒเธฃเธ“เธชเธกเธšเธฑเธ•เธดเธฃเธฑเธšเธ›เธฃเธฐเธเธฑเธ™เธงเนˆเธฒเน„เธกเนˆเธกเธตเธเนˆเธฒเธขเนƒเธ”เธชเธฒเธกเธฒเธฃเธ–เธซเธขเธธเธ”เธงเธดเธชเธฑเธขเธ—เธฑเธจเธ™เนŒเธ™เธตเน‰เน„เธ”เน‰', mandarin: 'CC0/ๅ…ฌๅ…ฑ้ข†ๅŸŸๆ•ฐๆฎ็กฎไฟๆฒกๆœ‰ไปปไฝ•ไธ€ๆ–นๅฏไปฅ้˜ปๆญข่ฟ™ไธ€ๆ„ฟๆ™ฏใ€‚' }, onboardingOurVision: { @@ -10575,7 +10609,8 @@ export const localizations = { indonesian: 'Ekspor ini dimaksudkan untuk distribusi dan pembagian publik.', nepali: 'เคฏเฅ‹ เคจเคฟเคฐเฅเคฏเคพเคค เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคตเคฟเคคเคฐเคฃ เคฐ เคธเคพเคเฅ‡เคฆเคพเคฐเฅ€เค•เฅ‹ เคฒเคพเค—เคฟ เคนเฅ‹เฅค', hindi: 'เคฏเคน เคจเคฟเคฐเฅเคฏเคพเคค เคธเคพเคฐเฅเคตเคœเคจเคฟเค• เคตเคฟเคคเคฐเคฃ เค”เคฐ เคธเคพเคเคพเค•เคฐเคฃ เค•เฅ‡ เคฒเคฟเค เคนเฅˆเฅค', - burmese: 'แ€คแ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€•แ€ผแ€Šแ€บแ€žแ€ฐแ€ท แ€–แ€ผแ€”แ€ทแ€บแ€–แ€ผแ€ฐแ€ธแ€™แ€พแ€ฏแ€”แ€พแ€„แ€ทแ€บ แ€™แ€ปแ€พแ€แ€ฑแ€™แ€พแ€ฏแ€กแ€แ€ฝแ€€แ€บ แ€›แ€Šแ€บแ€›แ€ฝแ€šแ€บแ€žแ€Šแ€บแ‹', + burmese: + 'แ€คแ€แ€„แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏแ€žแ€Šแ€บ แ€•แ€ผแ€Šแ€บแ€žแ€ฐแ€ท แ€–แ€ผแ€”แ€ทแ€บแ€–แ€ผแ€ฐแ€ธแ€™แ€พแ€ฏแ€”แ€พแ€„แ€ทแ€บ แ€™แ€ปแ€พแ€แ€ฑแ€™แ€พแ€ฏแ€กแ€แ€ฝแ€€แ€บ แ€›แ€Šแ€บแ€›แ€ฝแ€šแ€บแ€žแ€Šแ€บแ‹', thai: 'เธเธฒเธฃเธชเนˆเธ‡เธญเธญเธเธ™เธตเน‰เธกเธตเน„เธงเน‰เธชเธณเธซเธฃเธฑเธšเธเธฒเธฃเนเธˆเธเธˆเนˆเธฒเธขเนเธฅเธฐเนเธšเนˆเธ‡เธ›เธฑเธ™เธชเธฒเธ˜เธฒเธฃเธ“เธฐ', mandarin: 'ๆญคๅฏผๅ‡บ็”จไบŽๅ…ฌๅ…ฑๅˆ†ๅ‘ๅ’Œๅ…ฑไบซใ€‚' }, @@ -10706,7 +10741,8 @@ export const localizations = { indonesian: 'Belum ada transkripsi. Jadilah yang pertama mentranskripsi!', nepali: 'เค…เคนเคฟเคฒเฅ‡เคธเคฎเฅเคฎ เค•เฅเคจเฅˆ เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคฟเคชเฅเคธเคจ เค›เฅˆเคจเฅค เคชเคนเคฟเคฒเฅ‹ เคŸเฅเคฐเคพเคจเฅเคธเฅเค•เฅเคฐเคพเค‡เคฌเคฐ เคฌเคจเฅเคจเฅเคนเฅ‹เคธเฅ!', - hindi: 'เค…เคญเฅ€ เคคเค• เค•เฅ‹เคˆ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคจเคนเฅ€เค‚ เคนเฅˆเฅค เคชเคนเคฒเฅ‡ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคพเค‡เคฌ เค•เคฐเคจเฅ‡ เคตเคพเคฒเฅ‡ เคฌเคจเฅ‡เค‚!', + hindi: + 'เค…เคญเฅ€ เคคเค• เค•เฅ‹เคˆ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เคจเคนเฅ€เค‚ เคนเฅˆเฅค เคชเคนเคฒเฅ‡ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคพเค‡เคฌ เค•เคฐเคจเฅ‡ เคตเคพเคฒเฅ‡ เคฌเคจเฅ‡เค‚!', burmese: 'แ€กแ€žแ€ถแ€–แ€ผแ€„แ€ทแ€บ แ€›แ€ฑแ€ธแ€žแ€ฌแ€ธแ€แ€ผแ€„แ€บแ€ธ แ€™แ€›แ€พแ€ญแ€žแ€ฑแ€ธแ€•แ€ซแ‹ แ€•แ€‘แ€™แ€†แ€ฏแ€ถแ€ธ แ€›แ€ฑแ€ธแ€žแ€ฌแ€ธแ€žแ€ฐ แ€–แ€ผแ€…แ€บแ€•แ€ซ!', thai: 'เธขเธฑเธ‡เน„เธกเนˆเธกเธตเธเธฒเธฃเธ–เธญเธ”เธ„เธงเธฒเธก เน€เธ›เน‡เธ™เธ„เธ™เนเธฃเธเธ—เธตเนˆเธ–เธญเธ”เธ„เธงเธฒเธก!', mandarin: '่ฟ˜ๆฒกๆœ‰่ฝฌๅฝ•ใ€‚ๆˆไธบ็ฌฌไธ€ไธช่ฝฌๅฝ•็š„ไบบ๏ผ' @@ -10777,9 +10813,9 @@ export const localizations = { 'เคจเฅ‹เคŸ: เคนเคฎ เคญเคตเคฟเคทเฅเคฏ เคฎเฅ‡เค‚ LangQuest เคตเฅ‡เคฌเคธเคพเค‡เคŸ เคชเคฐ เคเค• เคฒเคฟเค‚เค• เคฒเคพเค—เฅ‚ เค•เคฐเคจเฅ‡ เค•เฅ€ เคฏเฅ‹เคœเคจเคพ เคฌเคจเคพ เคฐเคนเฅ‡ เคนเฅˆเค‚ เคœเคนเคพเค‚ เคจเคฟเคฐเฅเคฏเคพเคค เคฆเฅ‡เค–เฅ‡ เค”เคฐ เคŸเคฟเคชเฅเคชเคฃเฅ€ เค•เฅ€ เคœเคพ เคธเค•เฅ‡เค‚เค—เฅ‡เฅค', burmese: 'แ€™แ€พแ€แ€บแ€แ€ปแ€€แ€บ- แ€กแ€”แ€ฌแ€‚แ€แ€บแ€แ€ฝแ€„แ€บ แ€‘แ€ฏแ€แ€บแ€•แ€ญแ€ฏแ€ทแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ผแ€Šแ€ทแ€บแ€›แ€พแ€ฏแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ผแ€ฎแ€ธ แ€™แ€พแ€แ€บแ€แ€ปแ€€แ€บแ€•แ€ฑแ€ธแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌ LangQuest แ€แ€€แ€บแ€˜แ€บแ€†แ€ญแ€ฏแ€’แ€บแ€žแ€ญแ€ฏแ€ท แ€œแ€„แ€ทแ€บแ€แ€บแ€แ€…แ€บแ€แ€ฏ แ€กแ€€แ€ฑแ€ฌแ€„แ€บแ€กแ€‘แ€Šแ€บแ€–แ€ฑแ€ฌแ€บแ€›แ€”แ€บ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ท แ€…แ€ฎแ€…แ€‰แ€บแ€‘แ€ฌแ€ธแ€•แ€ซแ€žแ€Šแ€บแ‹', - thai: - 'เธซเธกเธฒเธขเน€เธซเธ•เธธ: เน€เธฃเธฒเธงเธฒเธ‡เนเธœเธ™เธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เธฅเธดเธ‡เธเนŒเน„เธ›เธขเธฑเธ‡เน€เธงเน‡เธšเน„เธ‹เธ•เนŒ LangQuest เธ‹เธถเนˆเธ‡เธชเธฒเธกเธฒเธฃเธ–เธ”เธนเนเธฅเธฐเนเธชเธ”เธ‡เธ„เธงเธฒเธกเธ„เธดเธ”เน€เธซเน‡เธ™เน€เธเธตเนˆเธขเธงเธเธฑเธšเธเธฒเธฃเธชเนˆเธ‡เธญเธญเธเนƒเธ™เธญเธ™เธฒเธ„เธ•', - mandarin: 'ๆณจๆ„๏ผšๆˆ‘ไปฌ่ฎกๅˆ’ๅฎžๆ–ฝๆŒ‡ๅ‘ LangQuest ็ฝ‘็ซ™็š„้“พๆŽฅ๏ผŒๅฐ†ๆฅๅฏไปฅๅœจ้‚ฃ้‡ŒๆŸฅ็œ‹ๅ’Œ่ฏ„่ฎบๅฏผๅ‡บๅ†…ๅฎนใ€‚' + thai: 'เธซเธกเธฒเธขเน€เธซเธ•เธธ: เน€เธฃเธฒเธงเธฒเธ‡เนเธœเธ™เธ—เธตเนˆเธˆเธฐเนƒเธŠเน‰เธฅเธดเธ‡เธเนŒเน„เธ›เธขเธฑเธ‡เน€เธงเน‡เธšเน„เธ‹เธ•เนŒ LangQuest เธ‹เธถเนˆเธ‡เธชเธฒเธกเธฒเธฃเธ–เธ”เธนเนเธฅเธฐเนเธชเธ”เธ‡เธ„เธงเธฒเธกเธ„เธดเธ”เน€เธซเน‡เธ™เน€เธเธตเนˆเธขเธงเธเธฑเธšเธเธฒเธฃเธชเนˆเธ‡เธญเธญเธเนƒเธ™เธญเธ™เธฒเธ„เธ•', + mandarin: + 'ๆณจๆ„๏ผšๆˆ‘ไปฌ่ฎกๅˆ’ๅฎžๆ–ฝๆŒ‡ๅ‘ LangQuest ็ฝ‘็ซ™็š„้“พๆŽฅ๏ผŒๅฐ†ๆฅๅฏไปฅๅœจ้‚ฃ้‡ŒๆŸฅ็œ‹ๅ’Œ่ฏ„่ฎบๅฏผๅ‡บๅ†…ๅฎนใ€‚' }, linkCopied: { english: 'Link copied to clipboard!', @@ -10834,9 +10870,9 @@ export const localizations = { 'เคฏเคน เคชเฅเคฐเคฏเฅ‹เค—เคพเคคเฅเคฎเค• เคธเฅเคตเคฟเคงเคพ เคชเคฆ เคฒเฅ‡เคฌเคฒ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเค•เฅ‡ เคฌเคพเค‡เคฌเคฒ เคธเค‚เคธเคพเคงเคจเฅ‹เค‚ เค•เฅ‹ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคฎเคฆเคฆ เค•เคฐเคคเฅ€ เคนเฅˆเฅค เค†เคช เค‡เคธเฅ‡ เคธเฅ‡เคŸเคฟเค‚เค—เฅเคธ เคฎเฅ‡เคจเฅ‚ เคฎเฅ‡เค‚ เค•เคญเฅ€ เคญเฅ€ เคธเค•เฅเคทเคฎ/เค…เคธเค•เฅเคทเคฎ เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค', burmese: 'แ€คแ€…แ€™แ€บแ€ธแ€žแ€•แ€บแ€กแ€„แ€บแ€นแ€‚แ€ซแ€›แ€•แ€บแ€žแ€Šแ€บ แ€€แ€ปแ€™แ€บแ€ธแ€•แ€ญแ€ฏแ€’แ€บ แ€…แ€ฌแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€ฎแ€…แ€‰แ€บแ€›แ€”แ€บ แ€€แ€ฐแ€Šแ€ฎแ€•แ€ฑแ€ธแ€žแ€Šแ€บแ‹ แ€žแ€„แ€บแ€žแ€Šแ€บ Settings menu แ€แ€ฝแ€„แ€บ แ€™แ€Šแ€บแ€žแ€Šแ€ทแ€บแ€กแ€แ€ปแ€ญแ€”แ€บแ€แ€ฝแ€„แ€บแ€™แ€†แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บ/แ€•แ€ญแ€แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', - thai: - 'เธŸเธตเน€เธˆเธญเธฃเนŒเธ—เธ”เธฅเธญเธ‡เธ™เธตเน‰เธŠเนˆเธงเธขเธˆเธฑเธ”เธฃเธฐเน€เธšเธตเธขเธšเธ—เธฃเธฑเธžเธขเธฒเธเธฃเธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒเน‚เธ”เธขเนƒเธŠเน‰เธ›เน‰เธฒเธขเธเธณเธเธฑเธšเธ‚เน‰เธญ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธดเธ”/เธ›เธดเธ”เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธ—เธตเนˆเน€เธกเธ™เธนเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ', - mandarin: 'ๆญคๅฎž้ชŒๆ€งๅŠŸ่ƒฝไฝฟ็”จ็ปๆ–‡ๆ ‡็ญพๅธฎๅŠฉ็ป„็ป‡ๅœฃ็ป่ต„ๆบใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๅœจ่ฎพ็ฝฎ่œๅ•ไธญๅฏ็”จ/็ฆ็”จๅฎƒใ€‚' + thai: 'เธŸเธตเน€เธˆเธญเธฃเนŒเธ—เธ”เธฅเธญเธ‡เธ™เธตเน‰เธŠเนˆเธงเธขเธˆเธฑเธ”เธฃเธฐเน€เธšเธตเธขเธšเธ—เธฃเธฑเธžเธขเธฒเธเธฃเธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒเน‚เธ”เธขเนƒเธŠเน‰เธ›เน‰เธฒเธขเธเธณเธเธฑเธšเธ‚เน‰เธญ เธ„เธธเธ“เธชเธฒเธกเธฒเธฃเธ–เน€เธ›เธดเธ”/เธ›เธดเธ”เน„เธ”เน‰เธ•เธฅเธญเธ”เน€เธงเธฅเธฒเธ—เธตเนˆเน€เธกเธ™เธนเธเธฒเธฃเธ•เธฑเน‰เธ‡เธ„เนˆเธฒ', + mandarin: + 'ๆญคๅฎž้ชŒๆ€งๅŠŸ่ƒฝไฝฟ็”จ็ปๆ–‡ๆ ‡็ญพๅธฎๅŠฉ็ป„็ป‡ๅœฃ็ป่ต„ๆบใ€‚ๆ‚จๅฏไปฅ้šๆ—ถๅœจ่ฎพ็ฝฎ่œๅ•ไธญๅฏ็”จ/็ฆ็”จๅฎƒใ€‚' }, verseMarkersDescription: { english: 'Enable verse labels to help organize Bible resources', @@ -10850,7 +10886,8 @@ export const localizations = { nepali: 'เคฌเคพเค‡เคฌเคฒ เคธเฅเคฐเฅ‹เคคเคนเคฐเฅ‚ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค—เคฐเฅเคจ เคฎเคฆเฅเคฆเคค เค—เคฐเฅเคจ เคชเคฆ เคฒเฅ‡เคฌเคฒเคนเคฐเฅ‚ เคธเค•เฅเคทเคฎ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', hindi: 'เคฌเคพเค‡เคฌเคฒ เคธเค‚เคธเคพเคงเคจเฅ‹เค‚ เค•เฅ‹ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคฎเคฆเคฆ เค•เฅ‡ เคฒเคฟเค เคชเคฆ เคฒเฅ‡เคฌเคฒ เคธเค•เฅเคทเคฎ เค•เคฐเฅ‡เค‚', - burmese: 'แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€ฎแ€…แ€‰แ€บแ€›แ€”แ€บ แ€€แ€ฐแ€Šแ€ฎแ€›แ€”แ€บ แ€€แ€ปแ€™แ€บแ€ธแ€•แ€ญแ€ฏแ€’แ€บ แ€…แ€ฌแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', + burmese: + 'แ€€แ€ปแ€™แ€บแ€ธแ€…แ€ฌ แ€กแ€›แ€„แ€บแ€ธแ€กแ€™แ€ผแ€…แ€บแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€…แ€ฎแ€…แ€‰แ€บแ€›แ€”แ€บ แ€€แ€ฐแ€Šแ€ฎแ€›แ€”แ€บ แ€€แ€ปแ€™แ€บแ€ธแ€•แ€ญแ€ฏแ€’แ€บ แ€…แ€ฌแ€Šแ€ฝแ€พแ€”แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ฝแ€„แ€ทแ€บแ€•แ€ซ', thai: 'เน€เธ›เธดเธ”เนƒเธŠเน‰เธ‡เธฒเธ™เธ›เน‰เธฒเธขเธเธณเธเธฑเธšเธ‚เน‰เธญเน€เธžเธทเนˆเธญเธŠเนˆเธงเธขเธˆเธฑเธ”เธฃเธฐเน€เธšเธตเธขเธšเธ—เธฃเธฑเธžเธขเธฒเธเธฃเธžเธฃเธฐเธ„เธฑเธกเธ เธตเธฃเนŒ', mandarin: 'ๅฏ็”จ็ปๆ–‡ๆ ‡็ญพไปฅๅธฎๅŠฉ็ป„็ป‡ๅœฃ็ป่ต„ๆบ' }, @@ -10896,9 +10933,9 @@ export const localizations = { 'เคนเคฎเฅ‡เค‚ เคฎเฅŒเคœเฅ‚เคฆเคพ เคญเคพเคทเคพเคเค‚ เคฎเคฟเคฒเฅ€เค‚ เคœเฅ‹ เค†เคชเค•เฅ‡ เคฆเฅเคตเคพเคฐเคพ เคฌเคจเคพเคˆ เค—เคˆ เคญเคพเคทเคพ เคธเฅ‡ เคฎเฅ‡เคฒ เค–เคพ เคธเค•เคคเฅ€ เคนเฅˆเค‚เฅค เค•เฅเคฏเคพ เค†เคช เคฎเฅŒเคœเฅ‚เคฆเคพ เคญเคพเคทเคพ เคธเฅ‡ เคฒเคฟเค‚เค• เค•เคฐเคจเคพ เคšเคพเคนเฅ‡เค‚เค—เฅ‡?', burmese: 'แ€žแ€„แ€บแ€–แ€”แ€บแ€แ€ฎแ€ธแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€€แ€บแ€Šแ€ฎแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€ฑแ€ฌ แ€›แ€พแ€ญแ€•แ€ผแ€ฎแ€ธแ€žแ€ฌแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€แ€ญแ€ฏแ€ท แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€›แ€พแ€ญแ€•แ€ผแ€ฎแ€ธแ€žแ€ฌแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€žแ€ญแ€ฏแ€ท แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€œแ€ญแ€ฏแ€•แ€ซแ€žแ€œแ€ฌแ€ธ?', - thai: - 'เน€เธฃเธฒเธžเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเธ‹เธถเนˆเธ‡เธญเธฒเธˆเธ•เธฃเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธ„เธธเธ“เธชเธฃเน‰เธฒเธ‡ เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเธซเธฃเธทเธญเน„เธกเนˆ?', - mandarin: 'ๆˆ‘ไปฌๆ‰พๅˆฐไบ†ๅฏ่ƒฝไธŽๆ‚จๅˆ›ๅปบ็š„่ฏญ่จ€ๅŒน้…็š„็Žฐๆœ‰่ฏญ่จ€ใ€‚ๆ‚จๆƒณ้“พๆŽฅๅˆฐ็Žฐๆœ‰่ฏญ่จ€ๅ—๏ผŸ' + thai: 'เน€เธฃเธฒเธžเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเธ‹เธถเนˆเธ‡เธญเธฒเธˆเธ•เธฃเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธ„เธธเธ“เธชเธฃเน‰เธฒเธ‡ เธ„เธธเธ“เธ•เน‰เธญเธ‡เธเธฒเธฃเน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเธซเธฃเธทเธญเน„เธกเนˆ?', + mandarin: + 'ๆˆ‘ไปฌๆ‰พๅˆฐไบ†ๅฏ่ƒฝไธŽๆ‚จๅˆ›ๅปบ็š„่ฏญ่จ€ๅŒน้…็š„็Žฐๆœ‰่ฏญ่จ€ใ€‚ๆ‚จๆƒณ้“พๆŽฅๅˆฐ็Žฐๆœ‰่ฏญ่จ€ๅ—๏ผŸ' }, yourLanguage: { english: 'Your language', @@ -11073,8 +11110,7 @@ export const localizations = { 'เค…เคชเคจเฅ€ เค•เคธเฅเคŸเคฎ-เคฌเคจเคพเคˆ เค—เคˆ เคญเคพเคทเคพเค“เค‚ เค•เฅ‹ เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคฎเฅ‡เค‚ เคฎเฅŒเคœเฅ‚เคฆเคพ เคญเคพเคทเคพเค“เค‚ เคธเฅ‡ เคฒเคฟเค‚เค• เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เคธเฅเคเคพเคต เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเฅ‡เค‚', burmese: 'แ€žแ€„แ€บแ แ€…แ€ญแ€แ€บแ€€แ€ผแ€ญแ€ฏแ€€แ€บ แ€–แ€”แ€บแ€แ€ฎแ€ธแ€‘แ€ฌแ€ธแ€žแ€ฑแ€ฌ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€›แ€พแ€ญ แ€›แ€พแ€ญแ€•แ€ผแ€ฎแ€ธแ€žแ€ฌแ€ธ แ€˜แ€ฌแ€žแ€ฌแ€…แ€€แ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€žแ€ญแ€ฏแ€ท แ€แ€ปแ€ญแ€แ€บแ€†แ€€แ€บแ€›แ€”แ€บ แ€กแ€€แ€ผแ€ถแ€•แ€ผแ€ฏแ€แ€ปแ€€แ€บแ€™แ€ปแ€ฌแ€ธ แ€›แ€šแ€ฐแ€•แ€ซ', - thai: - 'เธฃเธฑเธšเธ„เธณเนเธ™เธฐเธ™เธณเน€เธžเธทเนˆเธญเน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธ เธฒเธฉเธฒเธ—เธตเนˆเธ„เธธเธ“เธชเธฃเน‰เธฒเธ‡เน€เธญเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ', + thai: 'เธฃเธฑเธšเธ„เธณเนเธ™เธฐเธ™เธณเน€เธžเธทเนˆเธญเน€เธŠเธทเนˆเธญเธกเน‚เธขเธ‡เธ เธฒเธฉเธฒเธ—เธตเนˆเธ„เธธเธ“เธชเธฃเน‰เธฒเธ‡เน€เธญเธ‡เธเธฑเธšเธ เธฒเธฉเธฒเธ—เธตเนˆเธกเธตเธญเธขเธนเนˆเนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ', mandarin: '่Žทๅ–ๅปบ่ฎฎ๏ผŒๅฐ†ๆ‚จ่‡ชๅฎšไน‰ๅˆ›ๅปบ็š„่ฏญ่จ€้“พๆŽฅๅˆฐๆ•ฐๆฎๅบ“ไธญ็š„็Žฐๆœ‰่ฏญ่จ€' } } as const; diff --git a/utils/fileUtils.ts b/utils/fileUtils.ts index 777a56c28..1abe37886 100644 --- a/utils/fileUtils.ts +++ b/utils/fileUtils.ts @@ -372,6 +372,7 @@ export async function saveAudioLocally(uri: string) { // Fallback: try to copy instead of move // This can happen if the source file was already moved/deleted or has permission issues + const sourceStillExists = fileExists(cleanSourceUri); if (sourceStillExists) { console.log( 'โš ๏ธ Move failed but source exists, attempting copy as fallback...' diff --git a/views/new/BibleChapterList.tsx b/views/new/BibleChapterList.tsx index b78bd63d8..7b6928842 100644 --- a/views/new/BibleChapterList.tsx +++ b/views/new/BibleChapterList.tsx @@ -12,6 +12,7 @@ import { useProjectById } from '@/hooks/db/useProjects'; import { useAppNavigation } from '@/hooks/useAppNavigation'; import { useBibleChapterCreation } from '@/hooks/useBibleChapterCreation'; import { useBibleChapters } from '@/hooks/useBibleChapters'; +import { useColorScheme } from '@/hooks/useColorScheme'; import { useLocalization } from '@/hooks/useLocalization'; import { useQuestDownloadDiscovery } from '@/hooks/useQuestDownloadDiscovery'; import { useQuestDownloadStatusLive } from '@/hooks/useQuestDownloadStatusLive'; @@ -20,7 +21,6 @@ import { syncCallbackService } from '@/services/syncCallbackService'; import { BOOK_ICON_MAP } from '@/utils/BOOK_GRAPHICS'; import { bulkDownloadQuest } from '@/utils/bulkDownload'; import { cn, useThemeColor } from '@/utils/styleUtils'; -import { useColorScheme } from '@/hooks/useColorScheme'; import RNAlert from '@blazejkustra/react-native-alert'; import { LegendList } from '@legendapp/list'; import { useMutation, useQueryClient } from '@tanstack/react-query'; @@ -128,9 +128,7 @@ function ChapterButton({ getBackgroundColor() )} onPress={ - needsDownload && !isDarkColorScheme - ? handleDownloadToggle - : onPress + needsDownload && !isDarkColorScheme ? handleDownloadToggle : onPress } disabled={ disabled || diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index ebb2678e4..648c5465e 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -32,7 +32,7 @@ import { toCompilableQuery } from '@powersync/drizzle-driver'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { useQueryClient } from '@tanstack/react-query'; import { and, asc, eq } from 'drizzle-orm'; -import { Audio } from 'expo-av'; +import { createAudioPlayer, type AudioPlayer } from 'expo-audio'; import { ArrowLeft, ChevronLeft, @@ -290,7 +290,7 @@ const RecordingView = () => { // Ref to track if handlePlayAll is running (for cancellation) const isPlayAllRunningRef = React.useRef(false); // Ref to track current playing sound for immediate cancellation - const currentPlayAllSoundRef = React.useRef(null); + const currentPlayAllSoundRef = React.useRef(null); // Track setTimeout IDs for cleanup const timeoutIdsRef = React.useRef>>( @@ -1181,8 +1181,8 @@ const RecordingView = () => { // Stop current sound immediately if (currentPlayAllSoundRef.current) { try { - await currentPlayAllSoundRef.current.stopAsync(); - await currentPlayAllSoundRef.current.unloadAsync(); + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); currentPlayAllSoundRef.current = null; } catch (error) { console.error('Error stopping sound:', error); @@ -1281,36 +1281,32 @@ const RecordingView = () => { // Play this URI and wait for it to finish await new Promise((resolve) => { - Audio.Sound.createAsync({ uri }, { shouldPlay: true }) - .then(({ sound }) => { - currentPlayAllSoundRef.current = sound; - - sound.setOnPlaybackStatusUpdate((status) => { - if (!status.isLoaded) return; - - // Update SharedValues for progress bar animation (60fps on UI thread) - if (status.isPlaying) { - audioContext.positionShared.value = status.positionMillis; - audioContext.durationShared.value = - status.durationMillis ?? 0; - } + try { + const player = createAudioPlayer(uri); + currentPlayAllSoundRef.current = player; + player.play(); + + player.addListener('playbackStatusUpdate', (status) => { + // Update SharedValues for progress bar animation (60fps on UI thread) + if (status.playing && player.isLoaded) { + audioContext.positionShared.value = status.currentTime * 1000; + audioContext.durationShared.value = status.duration * 1000; + } - if (status.didJustFinish) { - // Reset SharedValues when segment finishes - audioContext.positionShared.value = 0; - audioContext.durationShared.value = 0; - currentPlayAllSoundRef.current = null; - void sound.unloadAsync().then(() => { - resolve(); - }); - } - }); - }) - .catch((error) => { - console.error('Failed to play audio:', error); - currentPlayAllSoundRef.current = null; - resolve(); + if (status.didJustFinish) { + // Reset SharedValues when segment finishes + audioContext.positionShared.value = 0; + audioContext.durationShared.value = 0; + currentPlayAllSoundRef.current = null; + player.release(); + resolve(); + } }); + } catch (error: unknown) { + console.error('Failed to play audio:', error); + currentPlayAllSoundRef.current = null; + resolve(); + } }); } } @@ -2033,15 +2029,30 @@ const RecordingView = () => { if (audioUri) { // Load audio file to get duration - const { sound } = await Audio.Sound.createAsync({ - uri: audioUri + const player = createAudioPlayer(audioUri); + // Wait for player to load + await new Promise((resolve) => { + if (player.isLoaded) { + resolve(); + return; + } + const check = setInterval(() => { + if (player.isLoaded) { + clearInterval(check); + resolve(); + } + }, 10); + // Safety timeout + setTimeout(() => { + clearInterval(check); + resolve(); + }, 5000); }); - const status = await sound.getStatusAsync(); - await sound.unloadAsync(); - if (status.isLoaded && status.durationMillis) { - totalDuration += status.durationMillis; + if (player.isLoaded && player.duration) { + totalDuration += player.duration * 1000; } + player.release(); } } catch (err) { // Skip this segment if we can't load it @@ -2487,16 +2498,14 @@ const RecordingView = () => { // Stop current sound immediately if (currentPlayAllSoundRef.current) { - void currentPlayAllSoundRef.current - .stopAsync() - .then(() => { - void currentPlayAllSoundRef.current?.unloadAsync(); - currentPlayAllSoundRef.current = null; - }) - .catch(() => { - // Ignore errors during cleanup - currentPlayAllSoundRef.current = null; - }); + try { + currentPlayAllSoundRef.current.pause(); + currentPlayAllSoundRef.current.release(); + currentPlayAllSoundRef.current = null; + } catch { + // Ignore errors during cleanup + currentPlayAllSoundRef.current = null; + } } } From 92e8154864fb27eae8d9a0672b60b446670ee67b Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:22:06 -0600 Subject: [PATCH 062/143] fix(ci): use env vars for fingerprint-diff to avoid argument length limit Pass fingerprint-diff through environment variables instead of direct interpolation in github-script actions to prevent "argument list too long" errors when fingerprint diffs are large. - Add FINGERPRINT_DIFF env var to check-compatibility-change step - Add FINGERPRINT_DIFF env var to format-diff step with JSON parsing - Read from process.env instead of direct template interpolation --- .github/workflows/check-native-build.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-native-build.yml b/.github/workflows/check-native-build.yml index ce2bc8e9d..446493fac 100644 --- a/.github/workflows/check-native-build.yml +++ b/.github/workflows/check-native-build.yml @@ -82,10 +82,12 @@ jobs: if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'dev' id: check-compatibility-change uses: actions/github-script@v7 + env: + FINGERPRINT_DIFF: ${{ steps.fingerprint.outputs.fingerprint-diff }} with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - const fingerprintDiff = ${{ steps.fingerprint.outputs.fingerprint-diff }}; + const fingerprintDiff = process.env.FINGERPRINT_DIFF || '[]'; // Handle fingerprint diff - it's a JSON string, check if it's an empty array const trimmedDiff = String(fingerprintDiff).trim(); // Empty array means no changes (compatible), non-empty means changes @@ -153,10 +155,19 @@ jobs: if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'dev' && steps.check-compatibility-change.outputs.has_changes == 'true' id: format-diff uses: actions/github-script@v7 + env: + FINGERPRINT_DIFF: ${{ steps.fingerprint.outputs.fingerprint-diff }} with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - const fingerprintDiff = ${{ steps.fingerprint.outputs.fingerprint-diff }}; + const fingerprintDiffStr = process.env.FINGERPRINT_DIFF || '[]'; + // Parse the JSON string if it's valid JSON, otherwise use as-is + let fingerprintDiff; + try { + fingerprintDiff = JSON.parse(fingerprintDiffStr); + } catch (e) { + fingerprintDiff = fingerprintDiffStr; + } const prettifiedDiff = JSON.stringify(fingerprintDiff, null, 2); core.setOutput('prettified_diff', prettifiedDiff); From 6ef8974666c9668c4447625c80db076ea0740e8c Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:33:10 -0600 Subject: [PATCH 063/143] fix(ci): use file-based approach for large fingerprint diffs to avoid argument limits Replace direct output interpolation with file-based storage and environment variables to prevent "argument list too long" errors when fingerprint diffs are large. Changes: - Pass fingerprint-diff through FINGERPRINT_DIFF env var instead of direct interpolation in github-script actions - Write prettified diff to fingerprint-diff.json file instead of step output to avoid GitHub Actions output size limits - Replace thollander/actions-comment-pull-request with github-script for comment management to read diff from file - Add comment marker () for reliable comment identification and updates - Fix YAML syntax issues by replacing template literals with string concatenation This ensures the workflow can handle fingerprint diffs of any size without hitting system argument length limits. --- .eas/workflows/run-preview-tests.yml | 73 ++++++++-------- .github/workflows/check-native-build.yml | 103 ++++++++++++++++++----- 2 files changed, 120 insertions(+), 56 deletions(-) diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index 1b7b4816d..7ad196f57 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -74,41 +74,44 @@ jobs: android_system_image_package: 'system-images;android-31;default;x86_64' flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] - # ios_get_build: - # name: Check for existing ios build - # needs: [fingerprint] - # type: get-build - # environment: preview - # params: - # fingerprint_hash: ${{ needs.fingerprint.outputs.ios_fingerprint_hash }} - # profile: preview-simulator + ios_get_build: + name: Check for existing ios build + needs: [fingerprint] + type: get-build + environment: preview + params: + fingerprint_hash: ${{ needs.fingerprint.outputs.ios_fingerprint_hash }} + profile: preview-simulator + platform: ios - # ios_repack: - # name: Repack iOS - # needs: [ios_get_build] - # if: ${{ needs.ios_get_build.outputs.build_id }} - # type: repack - # environment: preview - # params: - # build_id: ${{ needs.ios_get_build.outputs.build_id }} + ios_repack: + name: Repack iOS + needs: [ios_get_build] + if: ${{ needs.ios_get_build.outputs.build_id }} + type: repack + environment: preview + runs_on: linux-medium + params: + build_id: ${{ needs.ios_get_build.outputs.build_id }} - # ios_build: - # name: Build iOS - # needs: [ios_get_build] - # if: ${{ !needs.ios_get_build.outputs.build_id }} - # type: build - # environment: preview - # params: - # platform: ios - # profile: preview-simulator + ios_build: + name: Build iOS + needs: [ios_get_build] + if: ${{ !needs.ios_get_build.outputs.build_id }} + type: build + environment: preview + runs_on: linux-medium + params: + platform: ios + profile: preview-simulator - # ios_maestro: - # name: Run iOS Maestro Tests - # after: [ios_repack, ios_build] - # type: maestro - # environment: preview - # image: latest - # params: - # build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} - # flow_path: ['maestro.yaml'] - # flow_path: ['maestro.yaml'] + ios_maestro: + name: Run iOS Maestro Tests + after: [ios_repack, ios_build] + type: maestro + environment: preview + image: latest + runs_on: linux-medium-nested-virtualization + params: + build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} + flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] diff --git a/.github/workflows/check-native-build.yml b/.github/workflows/check-native-build.yml index 446493fac..58a97525e 100644 --- a/.github/workflows/check-native-build.yml +++ b/.github/workflows/check-native-build.yml @@ -141,7 +141,7 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - const message = `โš ๏ธ Native Build Required - See the comment below for details.`; + const message = 'โš ๏ธ Native Build Required - See the comment below for details.'; await github.rest.pulls.createReview({ owner: context.repo.owner, @@ -160,6 +160,7 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | + const fs = require('fs'); const fingerprintDiffStr = process.env.FINGERPRINT_DIFF || '[]'; // Parse the JSON string if it's valid JSON, otherwise use as-is let fingerprintDiff; @@ -169,37 +170,97 @@ jobs: fingerprintDiff = fingerprintDiffStr; } const prettifiedDiff = JSON.stringify(fingerprintDiff, null, 2); - core.setOutput('prettified_diff', prettifiedDiff); + // Write to file to avoid output size limits + fs.writeFileSync('fingerprint-diff.json', prettifiedDiff); + // Set a flag output instead of the full diff + core.setOutput('has_diff_file', 'true'); - name: Comment on PR if fingerprint changed if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'dev' && steps.check-compatibility-change.outputs.has_changes == 'true' - uses: thollander/actions-comment-pull-request@v3 + uses: actions/github-script@v7 + env: + HAS_DIFF_FILE: ${{ steps.format-diff.outputs.has_diff_file }} with: - comment-tag: fingerprint-check - message: | - โš ๏ธ Native Build Required - Manual Approval Needed - - This PR requires a native build because the fingerprint has changed compared to the base branch. - -
- Fingerprint diff - - ```json - ${{ steps.format-diff.outputs.prettified_diff }} - ``` + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const fs = require('fs'); + let prettifiedDiff = '[]'; + if (process.env.HAS_DIFF_FILE === 'true' && fs.existsSync('fingerprint-diff.json')) { + prettifiedDiff = fs.readFileSync('fingerprint-diff.json', 'utf8'); + } + + const message = '\n' + + 'โš ๏ธ Native Build Required - Manual Approval Needed\n\n' + + 'This PR requires a native build because the fingerprint has changed compared to the base branch.\n\n' + + '
\n' + + 'Fingerprint diff\n\n' + + '```json\n' + + prettifiedDiff + '\n' + + '```\n\n' + + '
\n\n' + + 'Action Required: After confirming with the team, another team member must approve this PR to proceed with merging.\n\n' + + '๐Ÿ‘‰ [**Approve this PR**](' + context.serverUrl + '/' + context.repo.owner + '/' + context.repo.repo + '/pull/' + context.issue.number + '/files) - Click "Review changes/Submit review" โ†’ "Approve" to dismiss this review and allow merging.'; -
+ // Find existing comment with fingerprint-check marker + const { data: comments } = await github.rest.issues.listComments({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + }); - Action Required: After confirming with the team, another team member must approve this PR to proceed with merging. + const existingComment = comments.find( + comment => comment.user.type === 'Bot' && + comment.user.login === 'github-actions[bot]' && + comment.body.includes('') + ); - ๐Ÿ‘‰ [**Approve this PR**](${{ github.server_url }}/${{ github.repository }}/pull/${{ github.event.pull_request.number }}/files) - Click "Review changes/Submit review" โ†’ "Approve" to dismiss this review and allow merging. + if (existingComment) { + // Update existing comment + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: existingComment.id, + body: message + }); + console.log('โœ… Updated fingerprint comment'); + } else { + // Create new comment + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: message + }); + console.log('โœ… Created fingerprint comment'); + } - name: Remove comment if fingerprint compatible if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'dev' && steps.check-compatibility-change.outputs.has_changes == 'false' - uses: thollander/actions-comment-pull-request@v3 + uses: actions/github-script@v7 with: - comment-tag: fingerprint-check - mode: delete + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + // Find and delete comments with the fingerprint-check marker + const { data: comments } = await github.rest.issues.listComments({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + }); + + const fingerprintComment = comments.find( + comment => comment.user.type === 'Bot' && + comment.user.login === 'github-actions[bot]' && + comment.body.includes('') + ); + + if (fingerprintComment) { + await github.rest.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: fingerprintComment.id, + }); + console.log('โœ… Removed fingerprint comment'); + } dismiss-bot-review-on-approval: if: github.event_name == 'pull_request_review' && github.event.review.state == 'approved' && github.event.pull_request.base.ref == 'dev' From 448c88c9b2cf229c9fa30416e4b2814f0d2649c1 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 15:28:34 -0600 Subject: [PATCH 064/143] change terms page --- app/terms.tsx | 141 +++++++++++++++----------------------- components/ui/button.tsx | 18 ++--- maestro/register.yaml | 4 +- maestro/sign-in.yaml | 4 +- services/localizations.ts | 32 ++++++--- 5 files changed, 89 insertions(+), 110 deletions(-) diff --git a/app/terms.tsx b/app/terms.tsx index 97c76b434..5adf69126 100644 --- a/app/terms.tsx +++ b/app/terms.tsx @@ -1,46 +1,21 @@ import { LanguageSelect } from '@/components/language-select'; -import { Button } from '@/components/ui/button'; -import { Checkbox } from '@/components/ui/checkbox'; +import { Button, OpacityPressable } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; -import { Label } from '@/components/ui/label'; import { Text } from '@/components/ui/text'; import { useLocalization } from '@/hooks/useLocalization'; import { useLocalStore } from '@/store/localStore'; -import { cn } from '@/utils/styleUtils'; import { useRouter } from 'expo-router'; import * as SplashScreen from 'expo-splash-screen'; import { ArrowLeftIcon, XIcon } from 'lucide-react-native'; import React, { useCallback, useState } from 'react'; -import { Linking, Pressable, View } from 'react-native'; +import { Linking, View } from 'react-native'; import { ScrollView } from 'react-native-gesture-handler'; -function AgreeToTermsText({ className }: { className?: string }) { - const { t } = useLocalization(); - const handleLinkPress = useCallback(() => { - void Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/terms`); - }, []); - - const baseText = t('agreeToTerms'); - const linkText = t('termsAndPrivacyLink'); - const textParts = baseText.split('{link}'); - - return ( - - {textParts[0]} - - {textParts[1]} - - ); -} - function Terms() { const router = useRouter(); const dateTermsAccepted = useLocalStore((state) => state.dateTermsAccepted); const acceptTerms = useLocalStore((state) => state.acceptTerms); const { t } = useLocalization(); - const [termsAccepted, setTermsAccepted] = useState(false); const handleAcceptTerms = useCallback(() => { console.log('Accepting terms...'); @@ -50,10 +25,6 @@ function Terms() { router.navigate('/'); }, [acceptTerms, router]); - const handleToggleTerms = useCallback(() => { - setTermsAccepted(!termsAccepted); - }, [termsAccepted]); - const handleClosePress = useCallback(() => { if (router.canGoBack()) { router.back(); @@ -62,14 +33,6 @@ function Terms() { } }, [router]); - const handleViewTerms = useCallback(() => { - void Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/terms`); - }, []); - - const handleViewPrivacy = useCallback(() => { - void Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/privacy`); - }, []); - const canAcceptTerms = !dateTermsAccepted; const [languagesLoaded, setLanguagesLoaded] = useState(false); @@ -82,11 +45,11 @@ function Terms() { return ( - {router.canGoBack() && ( + {router.canGoBack() && dateTermsAccepted && ( @@ -106,55 +69,61 @@ function Terms() { - - {t('termsContributionInfo')} + + + {(() => { + // Get raw translation without replacing placeholders + const rawText = t('termsContributionInfo'); + // Split on {iAgree} placeholder (with optional spaces) + const placeholderRegex = /\{ *iAgree *\}/; + const match = rawText.match(placeholderRegex); + if (match) { + const parts = rawText.split(placeholderRegex); + const iAgreeText = t('iAgree'); + return ( + <> + {parts[0]} + {iAgreeText} + {parts[1]} + + ); + } + // Fallback if placeholder not found + return rawText; + })()} + {t('termsDataInfo')} {t('analyticsInfo')} - - - - - {canAcceptTerms && ( - - - - - - - - - - )} + + + Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/terms`) + } + className="w-full justify-start" + > + {t('viewFullTerms')} + + + Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/privacy`) + } + className="w-full justify-start" + > + + {t('viewFullPrivacy')} + + + + {canAcceptTerms && ( + + + + )} + ); } diff --git a/components/ui/button.tsx b/components/ui/button.tsx index 46942d464..9e5b2fcc8 100644 --- a/components/ui/button.tsx +++ b/components/ui/button.tsx @@ -181,7 +181,7 @@ type PressableOpacityProps = React.ComponentPropsWithoutRef< * Similar to TouchableOpacity but uses react-native-reanimated for better performance * Uses opacity animation (default 0.7) on press with smooth transitions */ -const PressableOpacity = React.forwardRef< +const OpacityPressable = React.forwardRef< React.ComponentRef, PressableOpacityProps >( @@ -220,25 +220,21 @@ const PressableOpacity = React.forwardRef< ref={ref} disabled={disabled} onPressIn={(e: GestureResponderEvent) => { - // if (!disabled) { opacity.set( withTiming(activeOpacity, { duration: 160, easing: easeOut }) ); - // } onPressIn?.(e); }} onPressOut={(e: GestureResponderEvent) => { - // if (!disabled) { opacity.set( withTiming(1, { duration: 160, easing: easeOut }) ); - // } onPressOut?.(e); }} style={[animatedStyle, style]} @@ -249,7 +245,7 @@ const PressableOpacity = React.forwardRef< } ); -PressableOpacity.displayName = 'PressableOpacity'; +OpacityPressable.displayName = 'OpacityPressable'; type ButtonPressableProps = React.ComponentPropsWithoutRef & { ref?: React.ComponentRef; @@ -321,7 +317,7 @@ const Button = React.forwardRef< const Component = asChild ? Slot.Pressable : variant === 'link' || variant === 'plain' - ? PressableOpacity + ? OpacityPressable : ButtonPressable; return ( @@ -352,5 +348,11 @@ const Button = React.forwardRef< Button.displayName = 'Button'; -export { Button, ButtonPressable, buttonTextVariants, buttonVariants }; +export { + Button, + ButtonPressable, + buttonTextVariants, + buttonVariants, + OpacityPressable +}; export type { ButtonProps }; diff --git a/maestro/register.yaml b/maestro/register.yaml index 0362a8daa..6a6a31d16 100644 --- a/maestro/register.yaml +++ b/maestro/register.yaml @@ -8,9 +8,7 @@ jsEngine: graaljs - launchApp: clearState: true - assertVisible: Terms & Privacy -- tapOn: - point: 8%,86% -- tapOn: Accept +- tapOn: I agree - assertVisible: Every language. Every culture. - tapOn: id: onboarding-close-button diff --git a/maestro/sign-in.yaml b/maestro/sign-in.yaml index a05b42639..dbac435bc 100644 --- a/maestro/sign-in.yaml +++ b/maestro/sign-in.yaml @@ -3,9 +3,7 @@ appId: ${MAESTRO_APP_ID} - launchApp: clearState: true - assertVisible: Terms & Privacy -- tapOn: - point: 8%,86% -- tapOn: Accept +- tapOn: I agree - assertVisible: Every language. Every culture. - tapOn: id: onboarding-close-button diff --git a/services/localizations.ts b/services/localizations.ts index a14a68205..a61e6eacd 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -73,6 +73,18 @@ export const localizations = { thai: 'เธขเธญเธกเธฃเธฑเธš', mandarin: 'ๆŽฅๅ—' }, + iAgree: { + english: 'I agree', + spanish: 'Estoy de acuerdo', + brazilian_portuguese: 'Eu concordo', + tok_pisin: 'Mi agri', + indonesian: 'Saya setuju', + nepali: 'เคฎ เคธเคนเคฎเคค เค›เฅ', + hindi: 'เคฎเฅˆเค‚ เคธเคนเคฎเคค เคนเฅ‚เค‚', + burmese: 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ‰เธฑเธ™เน€เธซเน‡เธ™เธ”เน‰เธงเธข', + mandarin: 'ๆˆ‘ๅŒๆ„' + }, accountNotVerified: { english: 'Please verify your email address before signing in. Check your email for the verification link.', @@ -2634,24 +2646,24 @@ export const localizations = { }, termsContributionInfo: { english: - 'By accepting these terms, you agree that all content you contribute to LangQuest will be freely available worldwide under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.', + 'By tapping {iAgree}, you agree that all content you contribute to LangQuest will be freely available worldwide under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.', spanish: - 'Al aceptar estos tรฉrminos, acepta que todo el contenido que aporte a LangQuest estarรก disponible gratuitamente en todo el mundo bajo la Dedicaciรณn de Dominio Pรบblico CC0 1.0 Universal (CC0 1.0).', + 'Al tocar {iAgree}, acepta que todo el contenido que aporte a LangQuest estarรก disponible gratuitamente en todo el mundo bajo la Dedicaciรณn de Dominio Pรบblico CC0 1.0 Universal (CC0 1.0).', brazilian_portuguese: - 'Ao aceitar estes termos, vocรช concorda que todo o conteรบdo que vocรช contribuir para o LangQuest estarรก disponรญvel gratuitamente em todo o mundo sob a Dedicaรงรฃo ao Domรญnio Pรบblico CC0 1.0 Universal (CC0 1.0).', + 'Ao tocar {iAgree}, vocรช concorda que todo o conteรบdo que vocรช contribuir para o LangQuest estarรก disponรญvel gratuitamente em todo o mundo sob a Dedicaรงรฃo ao Domรญnio Pรบblico CC0 1.0 Universal (CC0 1.0).', tok_pisin: - 'Long akseptim ol dispela terms, yu agri long olgeta content yu contributim long LangQuest bai stap fri long olgeta hap long CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.', + 'Long paitim {iAgree}, yu agri long olgeta content yu contributim long LangQuest bai stap fri long olgeta hap long CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.', indonesian: - 'Dengan menerima syarat ini, Anda setuju bahwa semua konten yang Anda kontribusikan ke LangQuest akan tersedia secara gratis di seluruh dunia di bawah CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.', + 'Dengan mengetuk {iAgree}, Anda setuju bahwa semua konten yang Anda kontribusikan ke LangQuest akan tersedia secara gratis di seluruh dunia di bawah CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.', nepali: - 'เคฏเฅ€ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅ‡เคฐ, เคคเคชเคพเคˆเค‚ เคธเคนเคฎเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚เคฒเฅ‡ LangQuest เคฎเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจเฅ‡ เคธเคฌเฅˆ เคธเคพเคฎเค—เฅเคฐเฅ€ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication เค…เคจเฅเคคเคฐเฅเค—เคค เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เคจเคฟ:เคถเฅเคฒเฅเค• เค‰เคชเคฒเคฌเฅเคง เคนเฅเคจเฅ‡เค›เฅค', + '{iAgree} เคฅเคฟเคšเฅ‡เคฐ, เคคเคชเคพเคˆเค‚ เคธเคนเคฎเคค เคนเฅเคจเฅเคนเฅเคจเฅเค› เค•เคฟ เคคเคชเคพเคˆเค‚เคฒเฅ‡ LangQuest เคฎเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจเฅ‡ เคธเคฌเฅˆ เคธเคพเคฎเค—เฅเคฐเฅ€ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication เค…เคจเฅเคคเคฐเฅเค—เคค เคตเคฟเคถเฅเคตเคตเฅเคฏเคพเคชเฅ€ เคฐเฅ‚เคชเคฎเคพ เคจเคฟ:เคถเฅเคฒเฅเค• เค‰เคชเคฒเคฌเฅเคง เคนเฅเคจเฅ‡เค›เฅค', hindi: - 'เค‡เคจ เคจเคฟเคฏเคฎเฅ‹เค‚ เค•เฅ‹ เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเค•เฅ‡, เค†เคช เคธเคนเคฎเคค เคนเฅˆเค‚ เค•เคฟ LangQuest เคฎเฅ‡เค‚ เค†เคชเค•เฅ‡ เคฆเฅเคตเคพเคฐเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค•เฅ€ เค—เคˆ เคธเคญเฅ€ เคธเคพเคฎเค—เฅเคฐเฅ€ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication เค•เฅ‡ เคคเคนเคค เคฆเฅเคจเคฟเคฏเคพ เคญเคฐ เคฎเฅ‡เค‚ เคธเฅเคตเคคเค‚เคคเฅเคฐ เคฐเฅ‚เคช เคธเฅ‡ เค‰เคชเคฒเคฌเฅเคง เคนเฅ‹เค—เฅ€เฅค', + '{iAgree} เคŸเฅˆเคช เค•เคฐเค•เฅ‡, เค†เคช เคธเคนเคฎเคค เคนเฅˆเค‚ เค•เคฟ LangQuest เคฎเฅ‡เค‚ เค†เคชเค•เฅ‡ เคฆเฅเคตเคพเคฐเคพ เคฏเฅ‹เค—เคฆเคพเคจ เค•เฅ€ เค—เคˆ เคธเคญเฅ€ เคธเคพเคฎเค—เฅเคฐเฅ€ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication เค•เฅ‡ เคคเคนเคค เคฆเฅเคจเคฟเคฏเคพ เคญเคฐ เคฎเฅ‡เค‚ เคธเฅเคตเคคเค‚เคคเฅเคฐ เคฐเฅ‚เคช เคธเฅ‡ เค‰เคชเคฒเคฌเฅเคง เคนเฅ‹เค—เฅ€เฅค', burmese: - 'แ€คแ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€œแ€€แ€บแ€แ€ถแ€แ€ผแ€„แ€บแ€ธแ€–แ€ผแ€„แ€ทแ€บแŠ แ€žแ€„แ€บแ€žแ€Šแ€บ LangQuest แ€žแ€ญแ€ฏแ€ท แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€žแ€ฑแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€žแ€Šแ€บ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication แ€กแ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€บ แ€€แ€™แ€นแ€˜แ€ฌแ€แ€…แ€บแ€แ€พแ€™แ€บแ€ธแ€œแ€ฏแ€ถแ€ธ แ€œแ€ฝแ€แ€บแ€œแ€•แ€บแ€…แ€ฝแ€ฌ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€Ÿแ€ฏ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€•แ€ซแ€žแ€Šแ€บแ‹', - thai: 'เน‚เธ”เธขเธเธฒเธฃเธขเธญเธกเธฃเธฑเธšเธ‚เน‰เธญเธเธณเธซเธ™เธ”เน€เธซเธฅเนˆเธฒเธ™เธตเน‰ เธ„เธธเธ“เธขเธญเธกเธฃเธฑเธšเธงเนˆเธฒเธชเธทเนˆเธญเธชเธฒเธฃเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ—เธตเนˆเธ„เธธเธ“เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™ LangQuest เธˆเธฐเธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เน„เธ”เน‰เธŸเธฃเธตเธ—เธฑเนˆเธงเน‚เธฅเธเธ เธฒเธขเนƒเธ•เน‰ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication', + '{iAgree} แ€€แ€ญแ€ฏ แ€”แ€พแ€ญแ€•แ€บแ€แ€ผแ€„แ€บแ€ธแ€–แ€ผแ€„แ€ทแ€บแŠ แ€žแ€„แ€บแ€žแ€Šแ€บ LangQuest แ€žแ€ญแ€ฏแ€ท แ€•แ€ถแ€ทแ€•แ€ญแ€ฏแ€ธแ€žแ€ฑแ€ฌ แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌแ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธแ€žแ€Šแ€บ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication แ€กแ€ฑแ€ฌแ€€แ€บแ€แ€ฝแ€„แ€บ แ€€แ€™แ€นแ€˜แ€ฌแ€แ€…แ€บแ€แ€พแ€™แ€บแ€ธแ€œแ€ฏแ€ถแ€ธ แ€œแ€ฝแ€แ€บแ€œแ€•แ€บแ€…แ€ฝแ€ฌ แ€›แ€›แ€พแ€ญแ€”แ€ญแ€ฏแ€„แ€บแ€™แ€Šแ€บแ€Ÿแ€ฏ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€•แ€ซแ€žแ€Šแ€บแ‹', + thai: 'เน‚เธ”เธขเธเธฒเธฃเนเธ•เธฐ{iAgree} เธ„เธธเธ“เธขเธญเธกเธฃเธฑเธšเธงเนˆเธฒเธชเธทเนˆเธญเธชเธฒเธฃเธ—เธฑเน‰เธ‡เธซเธกเธ”เธ—เธตเนˆเธ„เธธเธ“เธกเธตเธชเนˆเธงเธ™เธฃเนˆเธงเธกเนƒเธ™ LangQuest เธˆเธฐเธชเธฒเธกเธฒเธฃเธ–เนƒเธŠเน‰เน„เธ”เน‰เธŸเธฃเธตเธ—เธฑเนˆเธงเน‚เธฅเธเธ เธฒเธขเนƒเธ•เน‰ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication', mandarin: - '้€š่ฟ‡ๆŽฅๅ—่ฟ™ไบ›ๆกๆฌพ๏ผŒๆ‚จๅŒๆ„ๆ‚จไธบ LangQuest ่ดก็Œฎ็š„ๆ‰€ๆœ‰ๅ†…ๅฎนๅฐ†ๅœจ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication ไธ‹ๅœจๅ…จ็ƒ่Œƒๅ›ดๅ†…ๅ…่ดนๆไพ›ใ€‚' + '้€š่ฟ‡็‚นๅ‡ป{iAgree}๏ผŒๆ‚จๅŒๆ„ๆ‚จไธบ LangQuest ่ดก็Œฎ็š„ๆ‰€ๆœ‰ๅ†…ๅฎนๅฐ†ๅœจ CC0 1.0 Universal (CC0 1.0) Public Domain Dedication ไธ‹ๅœจๅ…จ็ƒ่Œƒๅ›ดๅ†…ๅ…่ดนๆไพ›ใ€‚' }, termsDataInfo: { english: From c9350bb67d709b0ddc0a78dc19271083d093c73c Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 15:28:47 -0600 Subject: [PATCH 065/143] fix padding on download indicator --- components/DownloadIndicator.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/components/DownloadIndicator.tsx b/components/DownloadIndicator.tsx index 92550087f..4d9da9dbd 100644 --- a/components/DownloadIndicator.tsx +++ b/components/DownloadIndicator.tsx @@ -119,6 +119,7 @@ export const DownloadIndicator: React.FC = ({ <> )} - From 60bc356b658c67c5c986723678b005424ea382e0 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 15:30:49 -0600 Subject: [PATCH 067/143] make sure to use the icon component --- components/AssetFilterModal.tsx | 25 +++++++----------------- components/AudioPlayer.tsx | 10 +++++----- components/AudioSegmentItem.tsx | 12 ++++++------ components/Carousel.native.tsx | 6 +++--- components/Carousel.tsx | 6 +++--- components/Carousel.web.tsx | 6 +++--- components/EnergyVADRecorder.tsx | 4 ++-- components/FloatingMenu.tsx | 7 ++++--- components/LanguageSelect.tsx | 6 +++--- components/MiniAudioPlayer.tsx | 5 ++--- components/PasswordInput.tsx | 2 +- components/ProjectDetails.tsx | 7 ++++--- components/QuestFilterModal.tsx | 25 +++++++----------------- components/TranslationSettingsModal.tsx | 2 +- components/VoteCommentModal.tsx | 4 ++-- components/navigation/TabBarIcon.tsx | 9 +++------ views/NotificationsView.tsx | 2 +- views/new/NextGenTranslationModalAlt.tsx | 6 ++---- 18 files changed, 59 insertions(+), 85 deletions(-) diff --git a/components/AssetFilterModal.tsx b/components/AssetFilterModal.tsx index c693e8ed7..060eb19f0 100644 --- a/components/AssetFilterModal.tsx +++ b/components/AssetFilterModal.tsx @@ -12,16 +12,7 @@ import { spacing } from '@/styles/theme'; import { Icon } from '@/components/ui/icon'; -import { - ArrowDown, - ArrowUp, - ChevronDown, - ChevronUp, - CheckCircle2, - Filter, - Trash2, - ArrowUpDown -} from 'lucide-react-native'; +import { ChevronUp, ChevronDown, CheckCircle2, Filter, ArrowUpDown, ArrowUp, ArrowDown, Trash2 } from 'lucide-react-native'; import React, { useEffect, useMemo, useState } from 'react'; import { ScrollView, @@ -101,7 +92,7 @@ const CategorySection: React.FC<{
@@ -119,7 +110,7 @@ const CategorySection: React.FC<{ ) : ( @@ -255,9 +246,7 @@ export const AssetFilterModal: React.FC = ({ {getActiveFiltersCount() > 0 && ( @@ -276,7 +265,7 @@ export const AssetFilterModal: React.FC = ({ {getActiveSortingCount() > 0 && ( @@ -350,7 +339,7 @@ export const AssetFilterModal: React.FC = ({ : ArrowDown } size={24} - color={colors.text} + className="text-foreground" /> {sortingOptions[index]?.field && ( @@ -361,7 +350,7 @@ export const AssetFilterModal: React.FC = ({ )} diff --git a/components/AudioPlayer.tsx b/components/AudioPlayer.tsx index 08cc8b82b..8ded44d1a 100644 --- a/components/AudioPlayer.tsx +++ b/components/AudioPlayer.tsx @@ -1,10 +1,10 @@ import { Button } from '@/components/ui/button'; +import { Icon } from '@/components/ui/icon'; import { Slider } from '@/components/ui/slider'; import { useAudio } from '@/contexts/AudioContext'; import { useLocalization } from '@/hooks/useLocalization'; import { colors, fontSizes, spacing } from '@/styles/theme'; -import { Icon } from '@/components/ui/icon'; -import { Pause, Play, Type } from 'lucide-react-native'; +import { Play, Pause, FileText } from 'lucide-react-native'; import { setAudioModeAsync } from 'expo-audio'; import React, { useEffect } from 'react'; import { ActivityIndicator, StyleSheet, Text, View } from 'react-native'; @@ -91,7 +91,7 @@ const AudioPlayer: React.FC = ({ {onTranscribe && ( @@ -111,9 +111,9 @@ const AudioPlayer: React.FC = ({ /> ) : ( )} diff --git a/components/AudioSegmentItem.tsx b/components/AudioSegmentItem.tsx index e42e8ed7c..f14528b54 100644 --- a/components/AudioSegmentItem.tsx +++ b/components/AudioSegmentItem.tsx @@ -1,6 +1,6 @@ -import { Icon } from '@/components/ui/icon'; import { colors, fontSizes, spacing } from '@/styles/theme'; -import { ChevronDown, ChevronUp, Pause, Play, Trash2 } from 'lucide-react-native'; +import { Icon } from '@/components/ui/icon'; +import { ChevronUp, ChevronDown, Play, Pause, Trash2 } from 'lucide-react-native'; import React from 'react'; import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; import WaveformVisualizer from './WaveformVisualizer'; @@ -52,7 +52,7 @@ const AudioSegmentItem: React.FC = ({ @@ -64,7 +64,7 @@ const AudioSegmentItem: React.FC = ({ @@ -102,7 +102,7 @@ const AudioSegmentItem: React.FC = ({ )} @@ -111,7 +111,7 @@ const AudioSegmentItem: React.FC = ({ style={styles.deleteButton} onPress={() => onDelete(segment.id)} > - + diff --git a/components/Carousel.native.tsx b/components/Carousel.native.tsx index 4e5f2e5a2..682061255 100644 --- a/components/Carousel.native.tsx +++ b/components/Carousel.native.tsx @@ -1,5 +1,5 @@ -import { Icon } from '@/components/ui/icon'; import { borderRadius, colors, spacing } from '@/styles/theme'; +import { Icon } from '@/components/ui/icon'; import { ChevronLeft, ChevronRight } from 'lucide-react-native'; import type { ReactNode } from 'react'; import React, { useRef, useState } from 'react'; @@ -50,7 +50,7 @@ function Carousel({ items, renderItem, onPageChange }: CarouselProps) { onPress={() => pagerRef.current?.setPage(currentPage - 1)} disabled={currentPage === 0} > - + {items.map((_, index) => ( @@ -72,7 +72,7 @@ function Carousel({ items, renderItem, onPageChange }: CarouselProps) { onPress={() => pagerRef.current?.setPage(currentPage + 1)} disabled={currentPage === items.length - 1} > - +
diff --git a/components/Carousel.tsx b/components/Carousel.tsx index 1453c2b3e..89f0815ad 100644 --- a/components/Carousel.tsx +++ b/components/Carousel.tsx @@ -1,5 +1,5 @@ -import { Icon } from '@/components/ui/icon'; import { borderRadius, colors, spacing } from '@/styles/theme'; +import { Icon } from '@/components/ui/icon'; import { ChevronLeft, ChevronRight } from 'lucide-react-native'; import type { ReactNode } from 'react'; import React, { useRef, useState } from 'react'; @@ -69,7 +69,7 @@ function Carousel({ items, renderItem, onPageChange }: CarouselProps) { onPress={() => scrollToPage(currentPage - 1)} disabled={currentPage === 0} > - + {items.map((_, index) => ( @@ -91,7 +91,7 @@ function Carousel({ items, renderItem, onPageChange }: CarouselProps) { onPress={() => scrollToPage(currentPage + 1)} disabled={currentPage === items.length - 1} > - +
diff --git a/components/Carousel.web.tsx b/components/Carousel.web.tsx index 1453c2b3e..89f0815ad 100644 --- a/components/Carousel.web.tsx +++ b/components/Carousel.web.tsx @@ -1,5 +1,5 @@ -import { Icon } from '@/components/ui/icon'; import { borderRadius, colors, spacing } from '@/styles/theme'; +import { Icon } from '@/components/ui/icon'; import { ChevronLeft, ChevronRight } from 'lucide-react-native'; import type { ReactNode } from 'react'; import React, { useRef, useState } from 'react'; @@ -69,7 +69,7 @@ function Carousel({ items, renderItem, onPageChange }: CarouselProps) { onPress={() => scrollToPage(currentPage - 1)} disabled={currentPage === 0} > - + {items.map((_, index) => ( @@ -91,7 +91,7 @@ function Carousel({ items, renderItem, onPageChange }: CarouselProps) { onPress={() => scrollToPage(currentPage + 1)} disabled={currentPage === items.length - 1} > - +
diff --git a/components/EnergyVADRecorder.tsx b/components/EnergyVADRecorder.tsx index 1a62b435e..0b7f56c86 100644 --- a/components/EnergyVADRecorder.tsx +++ b/components/EnergyVADRecorder.tsx @@ -1,5 +1,5 @@ import { Icon } from '@/components/ui/icon'; -import { PlayCircle, StopCircle } from 'lucide-react-native'; +import { StopCircle, PlayCircle } from 'lucide-react-native'; import { RecordingPresets, setAudioModeAsync, @@ -175,7 +175,7 @@ const EnergyVADRecorder: React.FC = ({ {isActive ? 'Stop Energy Detection' : 'Start Energy Detection'} diff --git a/components/FloatingMenu.tsx b/components/FloatingMenu.tsx index 87dde03fb..c5d0e2548 100644 --- a/components/FloatingMenu.tsx +++ b/components/FloatingMenu.tsx @@ -1,5 +1,5 @@ -import { Icon } from '@/components/ui/icon'; import { colors } from '@/styles/theme'; +import { Icon } from '@/components/ui/icon'; import type { LucideIcon } from 'lucide-react-native'; import { Menu, X } from 'lucide-react-native'; import { useEffect, useRef, useState } from 'react'; @@ -169,7 +169,7 @@ export const FloatingMenu = ({
@@ -178,6 +178,7 @@ export const FloatingMenu = ({ }; const ItemButton = ({ icon, action }: FloatingMenuItem) => { + const IconComponent = icon; return ( { activeOpacity={0.7} > - + ); }; diff --git a/components/LanguageSelect.tsx b/components/LanguageSelect.tsx index 99f146b25..799548f82 100644 --- a/components/LanguageSelect.tsx +++ b/components/LanguageSelect.tsx @@ -7,7 +7,7 @@ import { useLocalization } from '@/hooks/useLocalization'; import { useLocalStore } from '@/store/localStore'; import { colors, spacing } from '@/styles/theme'; import { Icon } from '@/components/ui/icon'; -import { Globe } from 'lucide-react-native'; +import { Languages } from 'lucide-react-native'; import { memo, default as React, @@ -90,9 +90,9 @@ const LanguageSelect: React.FC = memo( const renderLeftIcon = useCallback( () => ( ), diff --git a/components/MiniAudioPlayer.tsx b/components/MiniAudioPlayer.tsx index 2a4769110..565cd8ee9 100644 --- a/components/MiniAudioPlayer.tsx +++ b/components/MiniAudioPlayer.tsx @@ -4,8 +4,7 @@ import { Text } from '@/components/ui/text'; import { useAudio } from '@/contexts/AudioContext'; import { colors, spacing } from '@/styles/theme'; import { getThemeColor } from '@/utils/styleUtils'; -import { Icon } from '@/components/ui/icon'; -import { Pause, Play, SparklesIcon } from 'lucide-react-native'; +import { Play, Pause, SparklesIcon } from 'lucide-react-native'; import React from 'react'; import { ActivityIndicator, StyleSheet, View } from 'react-native'; @@ -64,7 +63,7 @@ export default function MiniAudioPlayer({ {onTranscribe && ( diff --git a/components/PasswordInput.tsx b/components/PasswordInput.tsx index 9e56cede7..d9d34f8a9 100644 --- a/components/PasswordInput.tsx +++ b/components/PasswordInput.tsx @@ -42,7 +42,7 @@ export const PasswordInput = ({ diff --git a/components/ProjectDetails.tsx b/components/ProjectDetails.tsx index ab887cc16..e1b842881 100644 --- a/components/ProjectDetails.tsx +++ b/components/ProjectDetails.tsx @@ -3,7 +3,8 @@ import { languoid, project_language_link } from '@/db/drizzleSchema'; import { system } from '@/db/powersync/system'; import { borderRadius, colors, fontSizes, spacing } from '@/styles/theme'; import { useHybridData } from '@/views/new/useHybridData'; -import { Globe, Info } from 'lucide-react-native'; +import { Icon } from '@/components/ui/icon'; +import { Languages, Info } from 'lucide-react-native'; import { toCompilableQuery } from '@powersync/drizzle-driver'; import { and, eq } from 'drizzle-orm'; import { default as React } from 'react'; @@ -110,7 +111,7 @@ export const ProjectDetails: React.FC = ({ {project.name} - + {sourceLanguoids.length ? sourceLanguoids @@ -124,7 +125,7 @@ export const ProjectDetails: React.FC = ({ {project.description && ( - + {project.description} )} diff --git a/components/QuestFilterModal.tsx b/components/QuestFilterModal.tsx index a7dbed37d..86081f364 100644 --- a/components/QuestFilterModal.tsx +++ b/components/QuestFilterModal.tsx @@ -12,16 +12,7 @@ import { spacing } from '@/styles/theme'; import { Icon } from '@/components/ui/icon'; -import { - ArrowDown, - ArrowUp, - ChevronDown, - ChevronUp, - CheckCircle2, - Filter, - Trash2, - ArrowUpDown -} from 'lucide-react-native'; +import { ChevronUp, ChevronDown, CheckCircle2, Filter, ArrowUpDown, ArrowUp, ArrowDown, Trash2 } from 'lucide-react-native'; import React, { useEffect, useMemo, useState } from 'react'; import { ScrollView, @@ -101,7 +92,7 @@ const CategorySection: React.FC<{ @@ -119,7 +110,7 @@ const CategorySection: React.FC<{ ) : ( @@ -255,9 +246,7 @@ export const QuestFilterModal: React.FC = ({ {getActiveFiltersCount() > 0 && ( @@ -276,7 +265,7 @@ export const QuestFilterModal: React.FC = ({ {getActiveSortingCount() > 0 && ( @@ -350,7 +339,7 @@ export const QuestFilterModal: React.FC = ({ : ArrowDown } size={24} - color={colors.text} + className="text-foreground" /> {sortingOptions[index]?.field && ( @@ -361,7 +350,7 @@ export const QuestFilterModal: React.FC = ({ )} diff --git a/components/TranslationSettingsModal.tsx b/components/TranslationSettingsModal.tsx index a498818bb..dd7709ae8 100644 --- a/components/TranslationSettingsModal.tsx +++ b/components/TranslationSettingsModal.tsx @@ -123,7 +123,7 @@ export const TranslationSettingsModal: React.FC< {'Translation Settings'} - + diff --git a/components/VoteCommentModal.tsx b/components/VoteCommentModal.tsx index 11667340f..940a55f6e 100644 --- a/components/VoteCommentModal.tsx +++ b/components/VoteCommentModal.tsx @@ -2,7 +2,7 @@ import { useAuth } from '@/contexts/AuthContext'; import { useLocalization } from '@/hooks/useLocalization'; import { borderRadius, colors, fontSizes, spacing } from '@/styles/theme'; import { Icon } from '@/components/ui/icon'; -import { ThumbsDown, ThumbsUp } from 'lucide-react-native'; +import { ThumbsUp, ThumbsDown } from 'lucide-react-native'; import React, { useState } from 'react'; import { Modal, @@ -72,7 +72,7 @@ export const VoteCommentModal: React.FC = ({ ; -} & LucideProps) { +}: { as: LucideIcon; style?: StyleProp } & LucideProps) { return ( diff --git a/views/NotificationsView.tsx b/views/NotificationsView.tsx index e45a299ea..2c6ca1116 100644 --- a/views/NotificationsView.tsx +++ b/views/NotificationsView.tsx @@ -942,7 +942,7 @@ export default function NotificationsView() { {!shouldDownload && ( - + {t('projectNotAvailableOfflineWarning')} diff --git a/views/new/NextGenTranslationModalAlt.tsx b/views/new/NextGenTranslationModalAlt.tsx index 4bf6faa7b..fcb17fe02 100644 --- a/views/new/NextGenTranslationModalAlt.tsx +++ b/views/new/NextGenTranslationModalAlt.tsx @@ -28,8 +28,6 @@ import { SHOW_DEV_ELEMENTS } from '@/utils/featureFlags'; import { fileExists, getLocalUri } from '@/utils/fileUtils'; import { cn, getThemeColor } from '@/utils/styleUtils'; import RNAlert from '@blazejkustra/react-native-alert'; -import { Icon } from '@/components/ui/icon'; -import { X } from 'lucide-react-native'; import { toCompilableQuery } from '@powersync/drizzle-driver'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { eq } from 'drizzle-orm'; @@ -590,9 +588,9 @@ export default function NextGenTranslationModal({ )} From bae374c3decd802155ad751c86a5e241378c0595 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 15:39:07 -0600 Subject: [PATCH 068/143] remove withoutCredentials --- eas.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/eas.json b/eas.json index 444f92878..651219321 100644 --- a/eas.json +++ b/eas.json @@ -27,7 +27,6 @@ }, "preview-simulator": { "extends": "preview", - "withoutCredentials": true, "ios": { "simulator": true, "distribution": "internal" @@ -40,7 +39,6 @@ }, "production-simulator": { "extends": "production", - "withoutCredentials": true, "distribution": "internal", "ios": { "simulator": true From e4363165cba6abc8c04f518385cddfdb51c0da69 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 16:25:09 -0600 Subject: [PATCH 069/143] refactor(ci): reorganize iOS and Android build jobs in preview workflow - Added a new job to check for existing iOS builds. - Repositioned the Android Maestro tests job to improve workflow structure. - Removed redundant iOS build job definition to streamline the process. --- .eas/workflows/run-preview-tests.yml | 46 ++++++++++++++-------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index 7ad196f57..a609b6039 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -40,6 +40,16 @@ jobs: profile: preview platform: android + ios_get_build: + name: Check for existing ios build + needs: [fingerprint] + type: get-build + environment: preview + params: + fingerprint_hash: ${{ needs.fingerprint.outputs.ios_fingerprint_hash }} + profile: preview-simulator + platform: ios + android_repack: name: Repack Android needs: [android_get_build] @@ -61,29 +71,6 @@ jobs: platform: android profile: preview - android_maestro: - name: Run Android Maestro Tests - after: [android_repack, android_build] - type: maestro - environment: preview - image: latest - runs_on: linux-medium-nested-virtualization - params: - build_id: ${{ needs.android_repack.outputs.build_id || needs.android_build.outputs.build_id }} - record_screen: true - android_system_image_package: 'system-images;android-31;default;x86_64' - flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] - - ios_get_build: - name: Check for existing ios build - needs: [fingerprint] - type: get-build - environment: preview - params: - fingerprint_hash: ${{ needs.fingerprint.outputs.ios_fingerprint_hash }} - profile: preview-simulator - platform: ios - ios_repack: name: Repack iOS needs: [ios_get_build] @@ -105,6 +92,19 @@ jobs: platform: ios profile: preview-simulator + android_maestro: + name: Run Android Maestro Tests + after: [android_repack, android_build] + type: maestro + environment: preview + image: latest + runs_on: linux-medium-nested-virtualization + params: + build_id: ${{ needs.android_repack.outputs.build_id || needs.android_build.outputs.build_id }} + record_screen: true + android_system_image_package: 'system-images;android-31;default;x86_64' + flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] + ios_maestro: name: Run iOS Maestro Tests after: [ios_repack, ios_build] From 17784400f45f816ee5f414fef37cdcd01d70c1a3 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 16:49:28 -0600 Subject: [PATCH 070/143] format fix + check native build workflow attempt fix --- .github/workflows/check-native-build.yml | 23 ++++++++++++++------ components/AssetFilterModal.tsx | 27 +++++++++++++++++------- components/AudioSegmentItem.tsx | 12 +++++++++-- components/FloatingMenu.tsx | 6 +----- components/QuestFilterModal.tsx | 27 +++++++++++++++++------- views/new/NextGenTranslationModalAlt.tsx | 6 +----- 6 files changed, 67 insertions(+), 34 deletions(-) diff --git a/.github/workflows/check-native-build.yml b/.github/workflows/check-native-build.yml index 58a97525e..a70ef5616 100644 --- a/.github/workflows/check-native-build.yml +++ b/.github/workflows/check-native-build.yml @@ -78,16 +78,25 @@ jobs: } } + - name: Write fingerprint diff to file + if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'dev' + run: | + echo '${{ steps.fingerprint.outputs.fingerprint-diff }}' > fingerprint-diff-raw.json + shell: bash + - name: Check if fingerprint compatibility changed if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'dev' id: check-compatibility-change uses: actions/github-script@v7 - env: - FINGERPRINT_DIFF: ${{ steps.fingerprint.outputs.fingerprint-diff }} with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - const fingerprintDiff = process.env.FINGERPRINT_DIFF || '[]'; + const fs = require('fs'); + // Read fingerprint diff from file to avoid environment variable size limits + let fingerprintDiff = '[]'; + if (fs.existsSync('fingerprint-diff-raw.json')) { + fingerprintDiff = fs.readFileSync('fingerprint-diff-raw.json', 'utf8').trim(); + } // Handle fingerprint diff - it's a JSON string, check if it's an empty array const trimmedDiff = String(fingerprintDiff).trim(); // Empty array means no changes (compatible), non-empty means changes @@ -155,13 +164,15 @@ jobs: if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'dev' && steps.check-compatibility-change.outputs.has_changes == 'true' id: format-diff uses: actions/github-script@v7 - env: - FINGERPRINT_DIFF: ${{ steps.fingerprint.outputs.fingerprint-diff }} with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const fs = require('fs'); - const fingerprintDiffStr = process.env.FINGERPRINT_DIFF || '[]'; + // Read from file to avoid environment variable size limits + let fingerprintDiffStr = '[]'; + if (fs.existsSync('fingerprint-diff-raw.json')) { + fingerprintDiffStr = fs.readFileSync('fingerprint-diff-raw.json', 'utf8').trim(); + } // Parse the JSON string if it's valid JSON, otherwise use as-is let fingerprintDiff; try { diff --git a/components/AssetFilterModal.tsx b/components/AssetFilterModal.tsx index 060eb19f0..6b867f04a 100644 --- a/components/AssetFilterModal.tsx +++ b/components/AssetFilterModal.tsx @@ -12,7 +12,16 @@ import { spacing } from '@/styles/theme'; import { Icon } from '@/components/ui/icon'; -import { ChevronUp, ChevronDown, CheckCircle2, Filter, ArrowUpDown, ArrowUp, ArrowDown, Trash2 } from 'lucide-react-native'; +import { + ChevronUp, + ChevronDown, + CheckCircle2, + Filter, + ArrowUpDown, + ArrowUp, + ArrowDown, + Trash2 +} from 'lucide-react-native'; import React, { useEffect, useMemo, useState } from 'react'; import { ScrollView, @@ -107,11 +116,7 @@ const CategorySection: React.FC<{ {option.label} {selectedOptions.includes(option.id) ? ( - + ) : ( )} @@ -246,7 +251,11 @@ export const AssetFilterModal: React.FC = ({ {getActiveFiltersCount() > 0 && ( @@ -265,7 +274,9 @@ export const AssetFilterModal: React.FC = ({ {getActiveSortingCount() > 0 && ( diff --git a/components/AudioSegmentItem.tsx b/components/AudioSegmentItem.tsx index f14528b54..ee0f79013 100644 --- a/components/AudioSegmentItem.tsx +++ b/components/AudioSegmentItem.tsx @@ -1,6 +1,12 @@ import { colors, fontSizes, spacing } from '@/styles/theme'; import { Icon } from '@/components/ui/icon'; -import { ChevronUp, ChevronDown, Play, Pause, Trash2 } from 'lucide-react-native'; +import { + ChevronUp, + ChevronDown, + Play, + Pause, + Trash2 +} from 'lucide-react-native'; import React from 'react'; import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; import WaveformVisualizer from './WaveformVisualizer'; @@ -64,7 +70,9 @@ const AudioSegmentItem: React.FC = ({ diff --git a/components/FloatingMenu.tsx b/components/FloatingMenu.tsx index c5d0e2548..151311618 100644 --- a/components/FloatingMenu.tsx +++ b/components/FloatingMenu.tsx @@ -166,11 +166,7 @@ export const FloatingMenu = ({ activeOpacity={0.8} > - + diff --git a/components/QuestFilterModal.tsx b/components/QuestFilterModal.tsx index 86081f364..4e4927ae3 100644 --- a/components/QuestFilterModal.tsx +++ b/components/QuestFilterModal.tsx @@ -12,7 +12,16 @@ import { spacing } from '@/styles/theme'; import { Icon } from '@/components/ui/icon'; -import { ChevronUp, ChevronDown, CheckCircle2, Filter, ArrowUpDown, ArrowUp, ArrowDown, Trash2 } from 'lucide-react-native'; +import { + ChevronUp, + ChevronDown, + CheckCircle2, + Filter, + ArrowUpDown, + ArrowUp, + ArrowDown, + Trash2 +} from 'lucide-react-native'; import React, { useEffect, useMemo, useState } from 'react'; import { ScrollView, @@ -107,11 +116,7 @@ const CategorySection: React.FC<{ {option.label} {selectedOptions.includes(option.id) ? ( - + ) : ( )} @@ -246,7 +251,11 @@ export const QuestFilterModal: React.FC = ({ {getActiveFiltersCount() > 0 && ( @@ -265,7 +274,9 @@ export const QuestFilterModal: React.FC = ({ {getActiveSortingCount() > 0 && ( diff --git a/views/new/NextGenTranslationModalAlt.tsx b/views/new/NextGenTranslationModalAlt.tsx index fcb17fe02..d4ed526f6 100644 --- a/views/new/NextGenTranslationModalAlt.tsx +++ b/views/new/NextGenTranslationModalAlt.tsx @@ -587,11 +587,7 @@ export default function NextGenTranslationModal({ )} - + From c78bbcfe6468a9b37786dd4f3135c14e0fad9edc Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 17:04:56 -0600 Subject: [PATCH 071/143] disable eas caching temporarily --- eas.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eas.json b/eas.json index 651219321..722607baf 100644 --- a/eas.json +++ b/eas.json @@ -23,6 +23,9 @@ "distribution": "internal", "ios": { "distribution": "store" + }, + "env": { + "EAS_USE_CACHE": "0" } }, "preview-simulator": { From 9d20caa3e1ac400b0a74f295303a93dc7a620a29 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 17:19:49 -0600 Subject: [PATCH 072/143] invalidate preview cache --- eas.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eas.json b/eas.json index 722607baf..ef789377a 100644 --- a/eas.json +++ b/eas.json @@ -21,11 +21,11 @@ "channel": "preview", "environment": "preview", "distribution": "internal", + "cache": { + "key": "expo-cache-v2-2026-02-13" + }, "ios": { "distribution": "store" - }, - "env": { - "EAS_USE_CACHE": "0" } }, "preview-simulator": { From b8eb50033784877605fc58b1478da13af72df372 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 17:25:01 -0600 Subject: [PATCH 073/143] fix worker type for ios builds from linux to mac --- .eas/workflows/run-preview-tests.yml | 4 +- .github/workflows/check-native-build.yml | 72 +++++++++++++++++++++--- eas.json | 3 - 3 files changed, 67 insertions(+), 12 deletions(-) diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index a609b6039..c1c417a4b 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -87,7 +87,7 @@ jobs: if: ${{ !needs.ios_get_build.outputs.build_id }} type: build environment: preview - runs_on: linux-medium + runs_on: macos-medium params: platform: ios profile: preview-simulator @@ -111,7 +111,7 @@ jobs: type: maestro environment: preview image: latest - runs_on: linux-medium-nested-virtualization + runs_on: macos-medium params: build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] diff --git a/.github/workflows/check-native-build.yml b/.github/workflows/check-native-build.yml index a70ef5616..698857895 100644 --- a/.github/workflows/check-native-build.yml +++ b/.github/workflows/check-native-build.yml @@ -180,9 +180,54 @@ jobs: } catch (e) { fingerprintDiff = fingerprintDiffStr; } - const prettifiedDiff = JSON.stringify(fingerprintDiff, null, 2); + + // Format as GitHub code diff + function formatSource(source) { + if (!source) return ''; + const parts = []; + if (source.type === 'file' || source.type === 'dir') { + parts.push(`Path: ${source.filePath}`); + } else if (source.type === 'contents') { + parts.push(`ID: ${source.id}`); + } + if (source.hash) { + parts.push(`Hash: ${source.hash}`); + } + if (source.reasons && source.reasons.length > 0) { + parts.push(`Reasons: ${source.reasons.join(', ')}`); + } + return parts.join(' | '); + } + + function formatDiffAsCode(diff) { + if (!Array.isArray(diff) || diff.length === 0) { + return 'No changes detected.'; + } + + const lines = []; + diff.forEach((item, index) => { + if (item.op === 'added') { + lines.push(`+ Added: ${formatSource(item.addedSource)}`); + } else if (item.op === 'removed') { + lines.push(`- Removed: ${formatSource(item.removedSource)}`); + } else if (item.op === 'changed') { + lines.push(`- Changed (before): ${formatSource(item.beforeSource)}`); + lines.push(`+ Changed (after): ${formatSource(item.afterSource)}`); + } + // Add separator between items (except last) + if (index < diff.length - 1) { + lines.push(''); + } + }); + + return lines.join('\n'); + } + + const codeDiff = formatDiffAsCode(fingerprintDiff); // Write to file to avoid output size limits - fs.writeFileSync('fingerprint-diff.json', prettifiedDiff); + fs.writeFileSync('fingerprint-diff-formatted.txt', codeDiff); + // Also keep JSON for reference + fs.writeFileSync('fingerprint-diff.json', JSON.stringify(fingerprintDiff, null, 2)); // Set a flag output instead of the full diff core.setOutput('has_diff_file', 'true'); @@ -195,18 +240,31 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const fs = require('fs'); - let prettifiedDiff = '[]'; - if (process.env.HAS_DIFF_FILE === 'true' && fs.existsSync('fingerprint-diff.json')) { - prettifiedDiff = fs.readFileSync('fingerprint-diff.json', 'utf8'); + let codeDiff = 'No changes detected.'; + let jsonDiff = '[]'; + + if (process.env.HAS_DIFF_FILE === 'true') { + if (fs.existsSync('fingerprint-diff-formatted.txt')) { + codeDiff = fs.readFileSync('fingerprint-diff-formatted.txt', 'utf8'); + } + if (fs.existsSync('fingerprint-diff.json')) { + jsonDiff = fs.readFileSync('fingerprint-diff.json', 'utf8'); + } } const message = '\n' + 'โš ๏ธ Native Build Required - Manual Approval Needed\n\n' + 'This PR requires a native build because the fingerprint has changed compared to the base branch.\n\n' + '
\n' + - 'Fingerprint diff\n\n' + + '๐Ÿ“‹ Fingerprint diff\n\n' + + '```diff\n' + + codeDiff + '\n' + + '```\n\n' + + '
\n\n' + + '
\n' + + '๐Ÿ” Full JSON diff (for debugging)\n\n' + '```json\n' + - prettifiedDiff + '\n' + + jsonDiff + '\n' + '```\n\n' + '
\n\n' + 'Action Required: After confirming with the team, another team member must approve this PR to proceed with merging.\n\n' + diff --git a/eas.json b/eas.json index ef789377a..651219321 100644 --- a/eas.json +++ b/eas.json @@ -21,9 +21,6 @@ "channel": "preview", "environment": "preview", "distribution": "internal", - "cache": { - "key": "expo-cache-v2-2026-02-13" - }, "ios": { "distribution": "store" } From 4c64c1bf99339ca0b74ba63152d0359c7b352fa3 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 17:35:17 -0600 Subject: [PATCH 074/143] update ios repack step to use macos-medium for iOS builds --- .eas/workflows/run-preview-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index c1c417a4b..11ba0a61c 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -77,7 +77,7 @@ jobs: if: ${{ needs.ios_get_build.outputs.build_id }} type: repack environment: preview - runs_on: linux-medium + runs_on: macos-medium params: build_id: ${{ needs.ios_get_build.outputs.build_id }} From 88c26aafb73c9e87ad330b57c62229f0b4f0909e Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 17:48:40 -0600 Subject: [PATCH 075/143] fix i agree button not being shown --- maestro/register.yaml | 2 ++ maestro/reset-password.yaml | 6 +++--- maestro/sign-in.yaml | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/maestro/register.yaml b/maestro/register.yaml index 6a6a31d16..909115cc7 100644 --- a/maestro/register.yaml +++ b/maestro/register.yaml @@ -8,6 +8,8 @@ jsEngine: graaljs - launchApp: clearState: true - assertVisible: Terms & Privacy +- scrollUntilVisible: + element: I agree - tapOn: I agree - assertVisible: Every language. Every culture. - tapOn: diff --git a/maestro/reset-password.yaml b/maestro/reset-password.yaml index 2eabb7cc9..38ddb14ae 100644 --- a/maestro/reset-password.yaml +++ b/maestro/reset-password.yaml @@ -25,9 +25,9 @@ jsEngine: graaljs - launchApp: clearState: true - assertVisible: Terms & Privacy -- tapOn: - point: 8%,86% -- tapOn: Accept +- scrollUntilVisible: + element: I agree +- tapOn: I agree - assertVisible: Every language. Every culture. - tapOn: id: onboarding-close-button diff --git a/maestro/sign-in.yaml b/maestro/sign-in.yaml index dbac435bc..ba785bcbc 100644 --- a/maestro/sign-in.yaml +++ b/maestro/sign-in.yaml @@ -3,6 +3,8 @@ appId: ${MAESTRO_APP_ID} - launchApp: clearState: true - assertVisible: Terms & Privacy +- scrollUntilVisible: + element: I agree - tapOn: I agree - assertVisible: Every language. Every culture. - tapOn: From 77789ccbc50104f747f79e471fa9254e65bd8af8 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 17:58:00 -0600 Subject: [PATCH 076/143] record ios screen in maestro tests --- .eas/workflows/run-preview-tests.yml | 1 + .eas/workflows/run-production-tests.yml | 80 +++++++++++++------------ 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index 11ba0a61c..fe8f73859 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -113,5 +113,6 @@ jobs: image: latest runs_on: macos-medium params: + record_screen: true build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] diff --git a/.eas/workflows/run-production-tests.yml b/.eas/workflows/run-production-tests.yml index f2fa13c48..ba30d42bc 100644 --- a/.eas/workflows/run-production-tests.yml +++ b/.eas/workflows/run-production-tests.yml @@ -40,6 +40,16 @@ jobs: profile: production-simulator platform: android + ios_get_build: + name: Check for existing ios build + needs: [fingerprint] + type: get-build + environment: production + params: + fingerprint_hash: ${{ needs.fingerprint.outputs.ios_fingerprint_hash }} + profile: production-simulator + platform: ios + android_repack: name: Repack Android needs: [android_get_build] @@ -61,6 +71,27 @@ jobs: platform: android profile: production-simulator + ios_repack: + name: Repack iOS + needs: [ios_get_build] + if: ${{ needs.ios_get_build.outputs.build_id }} + type: repack + environment: production + runs_on: macos-medium + params: + build_id: ${{ needs.ios_get_build.outputs.build_id }} + + ios_build: + name: Build iOS + needs: [ios_get_build] + if: ${{ !needs.ios_get_build.outputs.build_id }} + type: build + environment: production + runs_on: macos-medium + params: + platform: ios + profile: production-simulator + android_maestro: name: Run Android Maestro Tests after: [android_repack, android_build] @@ -74,41 +105,14 @@ jobs: android_system_image_package: 'system-images;android-31;default;x86_64' flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] - # ios_get_build: - # name: Check for existing ios build - # needs: [fingerprint] - # type: get-build - # environment: production - # params: - # fingerprint_hash: ${{ needs.fingerprint.outputs.ios_fingerprint_hash }} - # profile: production-simulator - - # ios_repack: - # name: Repack iOS - # needs: [ios_get_build] - # if: ${{ needs.ios_get_build.outputs.build_id }} - # type: repack - # environment: production - # params: - # build_id: ${{ needs.ios_get_build.outputs.build_id }} - - # ios_build: - # name: Build iOS - # needs: [ios_get_build] - # if: ${{ !needs.ios_get_build.outputs.build_id }} - # type: build - # environment: production - # params: - # platform: ios - # profile: production-simulator - - # ios_maestro: - # name: Run iOS Maestro Tests - # after: [ios_repack, ios_build] - # type: maestro - # environment: production - # image: latest - # params: - # build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} - # flow_path: ['maestro.yaml'] - # flow_path: ['maestro.yaml'] + ios_maestro: + name: Run iOS Maestro Tests + after: [ios_repack, ios_build] + type: maestro + environment: production + image: latest + runs_on: macos-medium + params: + record_screen: true + build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} + flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] From c0bceb2b18345d590cc08f0643e732b46d3efb0b Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 18:04:05 -0600 Subject: [PATCH 077/143] try and fix terms page on small screens android --- app/terms.tsx | 50 +++++++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/app/terms.tsx b/app/terms.tsx index 5adf69126..785d13f65 100644 --- a/app/terms.tsx +++ b/app/terms.tsx @@ -96,34 +96,30 @@ function Terms() { {t('analyticsInfo')} - - - Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/terms`) - } - className="w-full justify-start" - > - {t('viewFullTerms')} - - - Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/privacy`) - } - className="w-full justify-start" - > - - {t('viewFullPrivacy')} - - + + Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/terms`) + } + className="w-full justify-start" + > + {t('viewFullTerms')} + + + Linking.openURL(`${process.env.EXPO_PUBLIC_SITE_URL}/privacy`) + } + className="w-full justify-start" + > + {t('viewFullPrivacy')} + - {canAcceptTerms && ( - - - - )} - + {canAcceptTerms && ( + + + + )}
); } From 7a3750801429f09096138f454346dc15be1fa9a6 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Fri, 13 Feb 2026 18:07:45 -0600 Subject: [PATCH 078/143] use consistent testing devices Pixel 6 and iPhone 16e --- .eas/workflows/run-preview-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index fe8f73859..a0ec0beaf 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -102,6 +102,7 @@ jobs: params: build_id: ${{ needs.android_repack.outputs.build_id || needs.android_build.outputs.build_id }} record_screen: true + device_identifier: 'pixel_6' android_system_image_package: 'system-images;android-31;default;x86_64' flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] @@ -114,5 +115,6 @@ jobs: runs_on: macos-medium params: record_screen: true + device_identifier: 'iPhone 16e' build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] From 0158249f2a29d63d097e29d4c1d79b13ae2fa936 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Fri, 13 Feb 2026 17:50:32 -0800 Subject: [PATCH 079/143] improved progress bar accuracy for merged segments --- contexts/AudioContext.tsx | 104 +++++++++++++++++++++++++++++--------- 1 file changed, 80 insertions(+), 24 deletions(-) diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index 7f8903bd3..86870ecc0 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -64,10 +64,10 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // - continuous UI-thread timing for smooth movement const STATUS_UPDATE_INTERVAL_MS = 5000; const DRIFT_CORRECTION_THRESHOLD_MS = 80; - // This is a timing adjustment per segment for a multi-segment sequence. - // Total padding budget is: - // segmentCount * MERGED_SEGMENT_PADDING_MS. - const MERGED_SEGMENT_PADDING_MS = 500; //this seems way to high, but it is working on my phone + // Initial merged-playback timing estimate: add this much wall-clock time + // per segment before we do the one-time last-segment slope correction. + const MERGED_SEGMENT_PADDING_MS = 250; + const FINAL_SEGMENT_END_FUDGE_MS = 40; // How often to push React state (triggers re-renders). Keep low to reduce // JS-thread pressure โ€” progress bars use SharedValues, not React state. const REACT_STATE_THROTTLE_MS = 100; @@ -88,6 +88,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const isPlayingRef = useRef(false); const isAdvancingSegmentRef = useRef(false); const useSequenceLevelProgressRef = useRef(false); + const hasRetimedLastSegmentRef = useRef(false); const playbackSessionRef = useRef(0); const preloadedSegmentRef = useRef<{ index: number; @@ -96,6 +97,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const animationStartWallClockMsRef = useRef(null); const animationStartPositionMsRef = useRef(0); const animationTargetPositionMsRef = useRef(0); + const animationDurationMsRef = useRef(0); // Wall-clock guard: ignore all status-callback position updates until this // timestamp. expo-av fires an unpredictable number of eager callbacks when // a sound loads/plays/seeks โ€” not on the interval timer. Those early @@ -166,6 +168,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { animationStartWallClockMsRef.current = null; animationStartPositionMsRef.current = 0; animationTargetPositionMsRef.current = 0; + animationDurationMsRef.current = 0; statusGuardUntilMsRef.current = 0; }; @@ -180,15 +183,6 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const totalSequenceDuration = () => segmentDurations.current.reduce((sum, d) => sum + d, 0); - const mergedPaddingForRemainingSegments = () => { - // "Remaining" means segments not yet loaded. - const remaining = Math.max( - 0, - sequenceSegments.current.length - (currentSequenceIndex.current + 1) - ); - return remaining * MERGED_SEGMENT_PADDING_MS; - }; - const unloadPreloadedSegment = async () => { const preloaded = preloadedSegmentRef.current; preloadedSegmentRef.current = null; @@ -247,23 +241,29 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const startPredictedProgressAnimation = ( fromTotalPosition: number, - targetTotalPosition: number + targetTotalPosition: number, + durationOverrideMs?: number ) => { const from = Math.max(0, fromTotalPosition); const target = Math.max(from, targetTotalPosition); - const remaining = target - from; + const distance = target - from; + const duration = + durationOverrideMs == null + ? distance + : Math.max(0, Math.round(durationOverrideMs)); animationStartWallClockMsRef.current = Date.now(); animationStartPositionMsRef.current = from; animationTargetPositionMsRef.current = target; + animationDurationMsRef.current = duration; cumulativePositionSharedRef.current.value = from; positionSharedRef.current.value = from; - if (remaining <= 0) return; + if (distance <= 0 || duration <= 0) return; positionSharedRef.current.value = withTiming(target, { - duration: remaining, + duration, easing: Easing.linear }); }; @@ -272,8 +272,13 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const startedAt = animationStartWallClockMsRef.current; if (!startedAt) return null; const elapsed = Date.now() - startedAt; - const predicted = animationStartPositionMsRef.current + elapsed; - return Math.min(animationTargetPositionMsRef.current, predicted); + const duration = animationDurationMsRef.current; + const from = animationStartPositionMsRef.current; + const target = animationTargetPositionMsRef.current; + const distance = target - from; + if (duration <= 0 || distance <= 0) return target; + const progress = Math.max(0, Math.min(1, elapsed / duration)); + return from + distance * progress; }; const stopCurrentSound = async () => { @@ -282,6 +287,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { clearStatusListener(); isAdvancingSegmentRef.current = false; useSequenceLevelProgressRef.current = false; + hasRetimedLastSegmentRef.current = false; resetPredictedProgress(); // Reset sequence state @@ -329,6 +335,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { playbackSessionRef.current += 1; isAdvancingSegmentRef.current = false; useSequenceLevelProgressRef.current = false; + hasRetimedLastSegmentRef.current = false; await unloadPreloadedSegment(); resetPredictedProgress(); sequenceSegments.current = []; @@ -371,6 +378,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const segmentIndex = currentSequenceIndex.current; const preloaded = preloadedSegmentRef.current; const canUsePreloaded = preloaded?.index === segmentIndex; + let lastSegmentRemainingMsAtStart: number | null = null; try { let sound: Audio.Sound; @@ -426,6 +434,25 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const cumulativeBefore = cumulativeDurationBeforeCurrent(); const targetTotal = cumulativeBefore + effectiveDuration; startPredictedProgressAnimation(cumulativeBefore, targetTotal); + } else { + const isLastSegment = + currentSequenceIndex.current === + sequenceSegments.current.length - 1; + if (isLastSegment && !hasRetimedLastSegmentRef.current) { + const cumulativeBefore = cumulativeDurationBeforeCurrent(); + const segStartMs = segment.startMs ?? 0; + const playedInSegmentAtStart = Math.max( + 0, + status.positionMillis - segStartMs + ); + const playedTotalAtStart = + cumulativeBefore + playedInSegmentAtStart; + const remainingTotal = + totalSequenceDuration() - + playedTotalAtStart + + FINAL_SEGMENT_END_FUDGE_MS; + lastSegmentRemainingMsAtStart = Math.max(0, remainingTotal); + } } // Guard: block all status-callback position writes for 1 second. // This lets the deterministic withTiming animation run uninterrupted @@ -512,6 +539,30 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { await sound.playAsync(); + // One-time retime: when the final segment actually starts playing, + // retime from current progress so remaining time matches that segment. + if ( + lastSegmentRemainingMsAtStart != null && + !hasRetimedLastSegmentRef.current && + useSequenceLevelProgressRef.current + ) { + const sequenceTotalDuration = totalSequenceDuration(); + const predicted = predictedPositionNow(); + const fromPosition = Math.max( + cumulativeDurationBeforeCurrent(), + predicted ?? positionSharedRef.current.value + ); + if (sequenceTotalDuration > fromPosition) { + // Keep the progress scale fixed and only adjust slope. + startPredictedProgressAnimation( + fromPosition, + sequenceTotalDuration, + lastSegmentRemainingMsAtStart + ); + } + hasRetimedLastSegmentRef.current = true; + } + // Preload exactly one segment ahead while current segment is playing. if (useSequenceLevelProgressRef.current) { const currentSession = playbackSessionRef.current; @@ -550,6 +601,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { segmentDurations.current = new Array(segments.length).fill(0); cumulativePositionSharedRef.current.value = 0; useSequenceLevelProgressRef.current = segments.length > 1; + hasRetimedLastSegmentRef.current = false; // For multi-segment sequences, preload durations for accurate total display. // Single segments get their duration set inside playSegment. @@ -570,12 +622,16 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } const totalDuration = totalSequenceDuration(); - const mergedTimelineDuration = + const initialEstimatedWallClockMs = totalDuration + segments.length * MERGED_SEGMENT_PADDING_MS; - setDuration(mergedTimelineDuration); - durationSharedRef.current.value = mergedTimelineDuration; - if (mergedTimelineDuration > 0) { - startPredictedProgressAnimation(0, mergedTimelineDuration); + setDuration(totalDuration); + durationSharedRef.current.value = totalDuration; + if (totalDuration > 0) { + startPredictedProgressAnimation( + 0, + totalDuration, + initialEstimatedWallClockMs + ); } } catch { // Failed to preload durations, will calculate on the fly From 1e7c55f8f67a6cf5ece9a6c95aeb776ee152c1c2 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Fri, 13 Feb 2026 18:05:40 -0800 Subject: [PATCH 080/143] prettier --- services/assetAudio.ts | 22 +++++++------------ store/localStore.ts | 2 +- utils/audioWaveform.ts | 9 ++++++-- views/new/BibleAssetsView.tsx | 4 +--- .../components/RecordingViewSimplified.tsx | 9 ++------ 5 files changed, 19 insertions(+), 27 deletions(-) diff --git a/services/assetAudio.ts b/services/assetAudio.ts index 81feba6cf..9df0d666c 100644 --- a/services/assetAudio.ts +++ b/services/assetAudio.ts @@ -23,10 +23,7 @@ import { useAudio } from '@/contexts/AudioContext'; import { system } from '@/db/powersync/system'; import { extractWaveformFromFile } from '@/utils/audioWaveform'; import { resolveTable } from '@/utils/dbUtils'; -import { - fileExists, - getLocalAttachmentUriWithOPFS -} from '@/utils/fileUtils'; +import { fileExists, getLocalAttachmentUriWithOPFS } from '@/utils/fileUtils'; import { Audio } from 'expo-av'; import { eq } from 'drizzle-orm'; @@ -164,10 +161,9 @@ async function resolveAudioValue( const attachment = await system.powersync.getOptional<{ id: string; local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, - [audioValue] - ); + }>(`SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, [ + audioValue + ]); if (attachment?.local_uri) { const localUri = system.permAttachmentQueue.getLocalUri( attachment.local_uri @@ -208,9 +204,9 @@ async function findFallbackUri( * Until the DB migration adds the metadata column to asset_content_link, * this will return undefined. */ -function parseTrimMetadata( - contentLink: { metadata?: string | null } -): { startMs: number; endMs: number } | undefined { +function parseTrimMetadata(contentLink: { + metadata?: string | null; +}): { startMs: number; endMs: number } | undefined { if (!contentLink.metadata) return undefined; try { const parsed = JSON.parse(contentLink.metadata) as { @@ -414,9 +410,7 @@ export async function getAssetWaveform( * TODO: Wire up to react-native-audio-concat with trim offsets. * For now, this is a placeholder that mirrors localAudioConcat.ts structure. */ -export function exportAssetAudio( - _assetId: string -): Promise { +export function exportAssetAudio(_assetId: string): Promise { // const audio = await resolveAssetAudio(assetId); // if (!audio) throw new Error('No audio found for asset'); // diff --git a/store/localStore.ts b/store/localStore.ts index d5f508757..c61863f64 100644 --- a/store/localStore.ts +++ b/store/localStore.ts @@ -628,7 +628,7 @@ export const useLocalStore = create()( 'currentUser', // I don't think we're getting this from the local store any more 'currentProjectId', 'currentQuestId', - 'currentAssetId', + 'currentAssetId' //'navigationStack' //commented out so the app can remember the last view on reload ].includes(key) ) diff --git a/utils/audioWaveform.ts b/utils/audioWaveform.ts index 5d81ae3c5..343b03598 100644 --- a/utils/audioWaveform.ts +++ b/utils/audioWaveform.ts @@ -118,7 +118,10 @@ export async function extractWaveformFromFile( } catch (error) { // If WAV parsing fails, try to extract from M4A/other formats using Expo AV const errorMessage = error instanceof Error ? error.message : String(error); - if (errorMessage.includes('RIFF header') || errorMessage.includes('WAV file')) { + if ( + errorMessage.includes('RIFF header') || + errorMessage.includes('WAV file') + ) { // Not a WAV file - try M4A/other format extraction return await extractWaveformFromAudioFile(uri, barCount, normalize); } @@ -165,7 +168,9 @@ async function extractWaveformFromAudioFile( ); } } - throw new Error(`Failed to extract waveform from audio file: ${errorMessage}`); + throw new Error( + `Failed to extract waveform from audio file: ${errorMessage}` + ); } } diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index c6bd30b52..d858f2d77 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -2567,9 +2567,7 @@ export default function BibleAssetsView() { selectedAssetIds.has(a.id) ); assetsToProcess = - firstSelectedIndex >= 0 - ? assets.slice(firstSelectedIndex) - : assets; + firstSelectedIndex >= 0 ? assets.slice(firstSelectedIndex) : assets; } else { assetsToProcess = assets; } diff --git a/views/new/recording/components/RecordingViewSimplified.tsx b/views/new/recording/components/RecordingViewSimplified.tsx index be8b77b75..f64784a35 100644 --- a/views/new/recording/components/RecordingViewSimplified.tsx +++ b/views/new/recording/components/RecordingViewSimplified.tsx @@ -17,9 +17,7 @@ import { system } from '@/db/powersync/system'; import { useProjectById } from '@/hooks/db/useProjects'; import { useCurrentNavigation } from '@/hooks/useAppNavigation'; import { useLocalization } from '@/hooks/useLocalization'; -import { - useAssetAudio -} from '@/services/assetAudio'; +import { useAssetAudio } from '@/services/assetAudio'; import { useLocalStore } from '@/store/localStore'; import { resolveTable } from '@/utils/dbUtils'; import { @@ -478,10 +476,7 @@ const RecordingViewSimplified = ({ try { // During Play All, any asset tap acts as "stop play all" only. if (isPlayAllRunningRef.current) { - debugLog( - 'โธ๏ธ Stopping Play All from asset tap:', - assetId.slice(0, 8) - ); + debugLog('โธ๏ธ Stopping Play All from asset tap:', assetId.slice(0, 8)); await stopPlayAll(); return; } From 98492524e95793f60773fc01fecdf4b47a9d4239 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 16 Feb 2026 20:50:20 -0600 Subject: [PATCH 081/143] refactor(maestro): update flow paths and add new flows for user management - Changed flow paths in testing workflows to reference the new directory structure under `.maestro`. - Introduced new flows for user registration, sign-in, password reset, and project management. - Added API functions for user deletion and password reset link generation in `api.js`. - Removed deprecated `sign-in.yaml` flow file. --- .eas/workflows/run-preview-tests.yml | 4 +- .eas/workflows/run-production-tests.yml | 4 +- {maestro => .maestro}/api.js | 64 ++++++++++++++++++- .maestro/flows/_launch-and-onboard.yaml | 16 +++++ .maestro/flows/create-records.yaml | 43 +++++++++++++ {maestro => .maestro/flows}/register.yaml | 20 ++---- .../flows}/reset-password.yaml | 14 +--- .maestro/flows/sign-in.yaml | 23 +++++++ components/AppHeader.tsx | 1 + components/ui/checkbox.tsx | 3 + components/ui/drawer/index.tsx | 6 +- maestro/sign-in.yaml | 25 -------- tsconfig.json | 2 +- 13 files changed, 168 insertions(+), 57 deletions(-) rename {maestro => .maestro}/api.js (71%) create mode 100644 .maestro/flows/_launch-and-onboard.yaml create mode 100644 .maestro/flows/create-records.yaml rename {maestro => .maestro/flows}/register.yaml (63%) rename {maestro => .maestro/flows}/reset-password.yaml (89%) create mode 100644 .maestro/flows/sign-in.yaml delete mode 100644 maestro/sign-in.yaml diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index a0ec0beaf..15f3bf863 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -104,7 +104,7 @@ jobs: record_screen: true device_identifier: 'pixel_6' android_system_image_package: 'system-images;android-31;default;x86_64' - flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] + flow_path: ['.maestro/flows/register.yaml', '.maestro/flows/sign-in.yaml'] ios_maestro: name: Run iOS Maestro Tests @@ -117,4 +117,4 @@ jobs: record_screen: true device_identifier: 'iPhone 16e' build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} - flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] + flow_path: ['.maestro/flows/register.yaml', '.maestro/flows/sign-in.yaml'] diff --git a/.eas/workflows/run-production-tests.yml b/.eas/workflows/run-production-tests.yml index ba30d42bc..7183b443a 100644 --- a/.eas/workflows/run-production-tests.yml +++ b/.eas/workflows/run-production-tests.yml @@ -103,7 +103,7 @@ jobs: build_id: ${{ needs.android_repack.outputs.build_id || needs.android_build.outputs.build_id }} record_screen: true android_system_image_package: 'system-images;android-31;default;x86_64' - flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] + flow_path: ['.maestro/flows/register.yaml', '.maestro/flows/sign-in.yaml'] ios_maestro: name: Run iOS Maestro Tests @@ -115,4 +115,4 @@ jobs: params: record_screen: true build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} - flow_path: ['maestro/register.yaml', 'maestro/sign-in.yaml'] + flow_path: ['.maestro/flows/register.yaml', '.maestro/flows/sign-in.yaml'] diff --git a/maestro/api.js b/.maestro/api.js similarity index 71% rename from maestro/api.js rename to .maestro/api.js index 430b26463..5a3f5e8d8 100644 --- a/maestro/api.js +++ b/.maestro/api.js @@ -132,7 +132,69 @@ function generatePasswordResetLink(email) { return resetLink; } +function deleteProject(projectName) { + // Validate projectName is defined and is a non-empty string + if (!projectName || typeof projectName !== 'string' || projectName.trim() === '') { + throw new Error( + 'Project name is required and must be a non-empty string. Received: ' + projectName + ); + } + + console.log('Deleting project with name:', projectName); + + // First, get the project by name using Supabase REST API + const getProjectResponse = http.get( + supabaseUrl + '/rest/v1/project?name=eq.' + encodeURIComponent(projectName) + '&select=id', + { + headers: { + Authorization: 'Bearer ' + serviceRoleKey, + apikey: serviceRoleKey, + 'Content-Type': 'application/json', + 'Prefer': 'return=representation' + } + } + ); + + if (getProjectResponse.status !== 200) { + throw new Error( + 'Failed to query project: ' + getProjectResponse.status + ' ' + getProjectResponse.body + ); + } + + // Parse the response to get the project ID + const projects = JSON.parse(getProjectResponse.body); + if (!projects || projects.length === 0) { + throw new Error('Project not found with name: ' + projectName); + } + + const projectId = projects[0].id; + console.log('Found project ID:', projectId); + + // Delete the project by ID + const deleteResponse = http.delete( + supabaseUrl + '/rest/v1/project?id=eq.' + projectId, + { + headers: { + Authorization: 'Bearer ' + serviceRoleKey, + apikey: serviceRoleKey, + 'Content-Type': 'application/json', + 'Prefer': 'return=representation' + } + } + ); + + if (deleteResponse.status !== 200 && deleteResponse.status !== 204) { + throw new Error( + 'Failed to delete project: ' + deleteResponse.status + ' ' + deleteResponse.body + ); + } + + console.log('Successfully deleted project:', projectName); + return deleteResponse; +} + output.api = { deleteUser, - generatePasswordResetLink + generatePasswordResetLink, + deleteProject }; diff --git a/.maestro/flows/_launch-and-onboard.yaml b/.maestro/flows/_launch-and-onboard.yaml new file mode 100644 index 000000000..209ced421 --- /dev/null +++ b/.maestro/flows/_launch-and-onboard.yaml @@ -0,0 +1,16 @@ +appId: ${MAESTRO_APP_ID} +--- +- launchApp: + clearState: true +- assertVisible: Terms & Privacy +- scrollUntilVisible: + element: I agree +- tapOn: + text: I agree + waitToSettleTimeoutMs: 0 # stop waiting for onboarding animation +- assertVisible: + text: Every language. Every culture. + waitToSettleTimeoutMs: 0 # stop waiting for onboarding animation +- tapOn: + id: onboarding-close-button + waitToSettleTimeoutMs: 0 # stop waiting for onboarding animation diff --git a/.maestro/flows/create-records.yaml b/.maestro/flows/create-records.yaml new file mode 100644 index 000000000..734db49f4 --- /dev/null +++ b/.maestro/flows/create-records.yaml @@ -0,0 +1,43 @@ +appId: ${MAESTRO_APP_ID} +onFlowStart: + - runScript: ../api.js +--- +- evalScript: ${output.projectName = "Test project"} +- evalScript: ${output.questName = "Test quest"} +- runFlow: sign-in.yaml + +# Create project +- runFlow: + commands: + - tapOn: + id: app-drawer-menu-button + - tapOn: # go back to projects page + text: Projects + below: Connected + - tapOn: New Project + - tapOn: Project Name + - inputText: ${output.projectName} + # - inputText: Modern English + # - tapOn: '[Modern English]' - for some reason Maestro is not finding content in drawers + - assertVisible: + text: English + below: ${output.projectName} + - tapOn: Create + - assertVisible: + text: ${output.projectName}, English + +# Create quest +- runFlow: + commands: + - tapOn: ${output.projectName}, English + - tapOn: Create + - tapOn: Quest Name + - inputText: ${output.questName} + - pressKey: Enter + - tapOn: + text: Create + above: Cancel + - assertVisible: ${output.questName} + +# Cleanup +- evalScript: ${output.api.deleteProject(output.projectName)} diff --git a/maestro/register.yaml b/.maestro/flows/register.yaml similarity index 63% rename from maestro/register.yaml rename to .maestro/flows/register.yaml index 909115cc7..6805930a2 100644 --- a/maestro/register.yaml +++ b/.maestro/flows/register.yaml @@ -1,19 +1,11 @@ appId: ${MAESTRO_APP_ID} onFlowStart: - - runScript: ./api.js -jsEngine: graaljs + - runScript: ../api.js --- - evalScript: ${output.username = faker.internet().username()} - evalScript: ${output.email = faker.internet().emailAddress()} -- launchApp: - clearState: true -- assertVisible: Terms & Privacy -- scrollUntilVisible: - element: I agree -- tapOn: I agree -- assertVisible: Every language. Every culture. -- tapOn: - id: onboarding-close-button +- runFlow: + file: _launch-and-onboard.yaml - tapOn: Create Account - tapOn: Username - inputText: ${output.username}-testing @@ -23,13 +15,13 @@ jsEngine: graaljs - inputText: password - tapOn: Confirm Password - inputText: password -- hideKeyboard +- pressKey: Enter - tapOn: - point: 10%,69% + id: checkbox # checkboxes are hard to find by maestro in LangQuest, using id - tapOn: Register - assertVisible: Projects - tapOn: - point: 89%,5% + id: app-drawer-menu-button - tapOn: Profile - assertVisible: Profile - evalScript: ${output.api.deleteUser(output.email)} diff --git a/maestro/reset-password.yaml b/.maestro/flows/reset-password.yaml similarity index 89% rename from maestro/reset-password.yaml rename to .maestro/flows/reset-password.yaml index 38ddb14ae..9598dfcad 100644 --- a/maestro/reset-password.yaml +++ b/.maestro/flows/reset-password.yaml @@ -1,7 +1,6 @@ appId: ${MAESTRO_APP_ID} onFlowStart: - - runScript: ./api.js -jsEngine: graaljs + - runScript: ../api.js --- # Reset Password Test Flow # This test covers the complete password reset flow: @@ -22,15 +21,8 @@ jsEngine: graaljs - evalScript: ${output.resetLink = output.api.generatePasswordResetLink(MAESTRO_TEST_EMAIL)} # Step 2: Launch app and open the reset link -- launchApp: - clearState: true -- assertVisible: Terms & Privacy -- scrollUntilVisible: - element: I agree -- tapOn: I agree -- assertVisible: Every language. Every culture. -- tapOn: - id: onboarding-close-button +- runFlow: + file: _launch-and-onboard.yaml - openLink: link: ${output.resetLink} autoVerify: true diff --git a/.maestro/flows/sign-in.yaml b/.maestro/flows/sign-in.yaml new file mode 100644 index 000000000..cacffe1f4 --- /dev/null +++ b/.maestro/flows/sign-in.yaml @@ -0,0 +1,23 @@ +appId: ${MAESTRO_APP_ID} +--- +# Sign-in flow - launches app, onboards, and signs in +- runFlow: + file: _launch-and-onboard.yaml +- tapOn: + text: Sign In + index: -1 +- tapOn: Enter your email +- inputText: ${MAESTRO_TEST_EMAIL} +- tapOn: Enter your password +- inputText: ${MAESTRO_TEST_PASSWORD} +- hideKeyboard +- tapOn: + text: Sign In + below: I forgot my password +- tapOn: + id: app-drawer-menu-button +- tapOn: Profile +- assertVisible: + text: Profile + above: + text: ${MAESTRO_TEST_EMAIL} diff --git a/components/AppHeader.tsx b/components/AppHeader.tsx index baa427a73..544ecb938 100644 --- a/components/AppHeader.tsx +++ b/components/AppHeader.tsx @@ -259,6 +259,7 @@ export default function AppHeader({ onPress={drawerToggleCallback} className="relative size-8" hitSlop={10} + testID="app-drawer-menu-button" > diff --git a/components/ui/checkbox.tsx b/components/ui/checkbox.tsx index 59264b75f..cb041c413 100644 --- a/components/ui/checkbox.tsx +++ b/components/ui/checkbox.tsx @@ -11,12 +11,14 @@ function Checkbox({ checkedClassName, indicatorClassName, iconClassName, + testID = 'checkbox', ...props }: CheckboxPrimitive.RootProps & React.RefAttributes & { checkedClassName?: string; indicatorClassName?: string; iconClassName?: string; + testID?: string; }) { return ( ( Date: Mon, 16 Feb 2026 22:00:57 -0600 Subject: [PATCH 082/143] fix sign in button press in maestro flow --- .maestro/flows/sign-in.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.maestro/flows/sign-in.yaml b/.maestro/flows/sign-in.yaml index cacffe1f4..5679bfedc 100644 --- a/.maestro/flows/sign-in.yaml +++ b/.maestro/flows/sign-in.yaml @@ -10,7 +10,8 @@ appId: ${MAESTRO_APP_ID} - inputText: ${MAESTRO_TEST_EMAIL} - tapOn: Enter your password - inputText: ${MAESTRO_TEST_PASSWORD} -- hideKeyboard +- tapOn: + point: 95%,30% - tapOn: text: Sign In below: I forgot my password From abb1315ae757dbcd72b8fc8cc7bd3f936973794c Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 16 Feb 2026 22:13:13 -0600 Subject: [PATCH 083/143] add ios autofill fix --- .../flows/_ios-toggle-autofill-passwords.yaml | 33 +++++++++++++++++++ .maestro/flows/register.yaml | 4 +-- .maestro/flows/sign-in.yaml | 4 +-- 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 .maestro/flows/_ios-toggle-autofill-passwords.yaml diff --git a/.maestro/flows/_ios-toggle-autofill-passwords.yaml b/.maestro/flows/_ios-toggle-autofill-passwords.yaml new file mode 100644 index 000000000..a3eed6877 --- /dev/null +++ b/.maestro/flows/_ios-toggle-autofill-passwords.yaml @@ -0,0 +1,33 @@ +appId: ${MAESTRO_APP_ID} +--- +# iOS-only subflow to toggle AutoFill Passwords in Settings +# This should only be called from iOS test flows +- launchApp: + appId: 'com.apple.Preferences' +- scrollUntilVisible: + element: Apps +- tapOn: Apps +- scrollUntilVisible: + element: Passwords +- tapOn: Passwords +- scrollUntilVisible: + element: View AutoFill Settings +- tapOn: View AutoFill Settings +- runFlow: + when: + visible: + text: '1' + rightOf: AutoFill Passwords and Passkeys + commands: + - tapOn: + text: '1' + rightOf: AutoFill Passwords and Passkeys +- runFlow: + when: + visible: + text: '1' + rightOf: Suggest Strong Passwords + commands: + - tapOn: + text: '1' + rightOf: Suggest Strong Passwords diff --git a/.maestro/flows/register.yaml b/.maestro/flows/register.yaml index 6805930a2..de6c76390 100644 --- a/.maestro/flows/register.yaml +++ b/.maestro/flows/register.yaml @@ -4,8 +4,8 @@ onFlowStart: --- - evalScript: ${output.username = faker.internet().username()} - evalScript: ${output.email = faker.internet().emailAddress()} -- runFlow: - file: _launch-and-onboard.yaml +- runFlow: _launch-and-onboard.yaml +- runFlow: _ios-toggle-autofill-passwords.yaml - tapOn: Create Account - tapOn: Username - inputText: ${output.username}-testing diff --git a/.maestro/flows/sign-in.yaml b/.maestro/flows/sign-in.yaml index 5679bfedc..175e73f0d 100644 --- a/.maestro/flows/sign-in.yaml +++ b/.maestro/flows/sign-in.yaml @@ -1,8 +1,8 @@ appId: ${MAESTRO_APP_ID} --- # Sign-in flow - launches app, onboards, and signs in -- runFlow: - file: _launch-and-onboard.yaml +- runFlow: _launch-and-onboard.yaml +- runFlow: _ios-toggle-autofill-passwords.yaml - tapOn: text: Sign In index: -1 From 737544ee184775d2fc1442a884bde49787f21019 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 16 Feb 2026 23:08:12 -0600 Subject: [PATCH 084/143] fix maestro flow to only apply on IOS - password autofill + run before everything else --- .maestro/flows/register.yaml | 5 ++++- .maestro/flows/sign-in.yaml | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.maestro/flows/register.yaml b/.maestro/flows/register.yaml index de6c76390..b54dbedf6 100644 --- a/.maestro/flows/register.yaml +++ b/.maestro/flows/register.yaml @@ -4,8 +4,11 @@ onFlowStart: --- - evalScript: ${output.username = faker.internet().username()} - evalScript: ${output.email = faker.internet().emailAddress()} +- runFlow: + when: + platform: iOS + file: _ios-toggle-autofill-passwords.yaml - runFlow: _launch-and-onboard.yaml -- runFlow: _ios-toggle-autofill-passwords.yaml - tapOn: Create Account - tapOn: Username - inputText: ${output.username}-testing diff --git a/.maestro/flows/sign-in.yaml b/.maestro/flows/sign-in.yaml index 175e73f0d..f456e4808 100644 --- a/.maestro/flows/sign-in.yaml +++ b/.maestro/flows/sign-in.yaml @@ -1,8 +1,10 @@ appId: ${MAESTRO_APP_ID} --- -# Sign-in flow - launches app, onboards, and signs in +- runFlow: + when: + platform: iOS + file: _ios-toggle-autofill-passwords.yaml - runFlow: _launch-and-onboard.yaml -- runFlow: _ios-toggle-autofill-passwords.yaml - tapOn: text: Sign In index: -1 From 8ddda84686576a8f3c7a76a7dc6c3ffedcf2f641 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 16 Feb 2026 23:09:01 -0600 Subject: [PATCH 085/143] fix agree to terms localization --- services/localizations.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/services/localizations.ts b/services/localizations.ts index a61e6eacd..4dc4d8fd4 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -2584,17 +2584,16 @@ export const localizations = { mandarin: '้œ€่ฆ้ชŒ่ฏ' }, agreeToTerms: { - english: 'I have read and agree to the Terms & Privacy', - spanish: 'He leรญdo y acepto los Tรฉrminos y Privacidad', - brazilian_portuguese: 'Eu li e concordo com os Termos e Privacidade', - tok_pisin: 'Mi ridim na agri long Terms na Privacy', - indonesian: 'Saya telah membaca dan menyetujui Syarat & Privasi', - nepali: 'เคฎเฅˆเคฒเฅ‡ เคธเคฐเฅเคคเคนเคฐเฅ‚ เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคชเคขเฅ‡เค•เฅ‹ เค›เฅ เคฐ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเค›เฅ', - hindi: 'เคฎเฅˆเค‚เคจเฅ‡ เคจเคฟเคฏเคฎ เค”เคฐ เค—เฅ‹เคชเคจเฅ€เคฏเคคเคพ เคชเคขเคผ เคฒเฅ€ เคนเฅˆ เค”เคฐ เคธเคนเคฎเคค เคนเฅ‚เค‚', - burmese: - 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€žแ€Šแ€บ แ€…แ€Šแ€บแ€ธแ€™แ€ปแ€‰แ€บแ€ธแ€™แ€ปแ€ฌแ€ธแ€”แ€พแ€„แ€ทแ€บ แ€€แ€ญแ€ฏแ€šแ€บแ€›แ€ฑแ€ธแ€œแ€ฏแ€ถแ€แ€ผแ€ฏแ€ถแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€–แ€แ€บแ€›แ€พแ€ฏแ€•แ€ผแ€ฎแ€ธ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€•แ€ซแ€žแ€Šแ€บ', - thai: 'เธ‰เธฑเธ™เน„เธ”เน‰เธญเนˆเธฒเธ™เนเธฅเธฐเธขเธญเธกเธฃเธฑเธšเธ‚เน‰เธญเธเธณเธซเธ™เธ”เนเธฅเธฐเธ„เธงเธฒเธกเน€เธ›เน‡เธ™เธชเนˆเธงเธ™เธ•เธฑเธงเนเธฅเน‰เธง', - mandarin: 'ๆˆ‘ๅทฒ้˜…่ฏปๅนถๅŒๆ„ๆกๆฌพๅ’Œ้š็ง' + english: 'I have read and agree to the {link}', + spanish: 'He leรญdo y acepto los {link}', + brazilian_portuguese: 'Eu li e concordo com os {link}', + tok_pisin: 'Mi ridim na agri long {link}', + indonesian: 'Saya telah membaca dan menyetujui {link}', + nepali: 'เคฎเฅˆเคฒเฅ‡ {link} เคชเคขเฅ‡เค•เฅ‹ เค›เฅ เคฐ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเค›เฅ', + hindi: 'เคฎเฅˆเค‚เคจเฅ‡ {link} เคชเคขเคผ เคฒเฅ€ เคนเฅˆ เค”เคฐ เคธเคนเคฎเคค เคนเฅ‚เค‚', + burmese: 'แ€€แ€ปแ€ฝแ€”แ€บแ€ฏแ€•แ€บแ€žแ€Šแ€บ {link} แ€€แ€ญแ€ฏ แ€–แ€แ€บแ€›แ€พแ€ฏแ€•แ€ผแ€ฎแ€ธ แ€žแ€˜แ€ฑแ€ฌแ€แ€ฐแ€•แ€ซแ€žแ€Šแ€บ', + thai: 'เธ‰เธฑเธ™เน„เธ”เน‰เธญเนˆเธฒเธ™เนเธฅเธฐเธขเธญเธกเธฃเธฑเธš{link}เนเธฅเน‰เธง', + mandarin: 'ๆˆ‘ๅทฒ้˜…่ฏปๅนถๅŒๆ„{link}' }, termsAndPrivacyLink: { english: 'Terms & Privacy', From 6d09441ab6d6aa5800f0e6058ba8898e1d5ebecc Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 16 Feb 2026 23:09:36 -0600 Subject: [PATCH 086/143] add package.json scripts for clean rebuilds + fix swift warnings in microphone energy module --- modules/microphone-energy/ios/MicrophoneEnergyModule.swift | 6 +++--- package.json | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/microphone-energy/ios/MicrophoneEnergyModule.swift b/modules/microphone-energy/ios/MicrophoneEnergyModule.swift index a9079c698..18c407cbc 100644 --- a/modules/microphone-energy/ios/MicrophoneEnergyModule.swift +++ b/modules/microphone-energy/ios/MicrophoneEnergyModule.swift @@ -1,4 +1,4 @@ -๏ปฟimport ExpoModulesCore +import ExpoModulesCore import AVFoundation import Foundation @@ -78,7 +78,7 @@ public class MicrophoneEnergyModule: Module { } do { - try audioSession.setCategory(.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetooth, .allowBluetoothA2DP]) + try audioSession.setCategory(.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetoothHFP, .allowBluetoothA2DP]) try audioSession.setActive(true) audioEngine = AVAudioEngine() @@ -103,7 +103,7 @@ public class MicrophoneEnergyModule: Module { if let converter = self.audioConverter, let desired = self.desiredFormat { guard let convertedBuffer = AVAudioPCMBuffer(pcmFormat: desired, frameCapacity: buffer.frameLength) else { return } - var inputProvided = false + nonisolated(unsafe) var inputProvided = false let inputBlock: AVAudioConverterInputBlock = { _, outStatus in if !inputProvided { outStatus.pointee = .haveData; inputProvided = true; return buffer } else { outStatus.pointee = .noDataNow; return nil } diff --git a/package.json b/package.json index 0843ba58e..b1e487475 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "export:analyze": "npx expo-atlas .expo/atlas.jsonl", "generate-env": "npx tsx ./scripts/generate-env.ts", "reset-project": "node ./scripts/reset-project.js", - "rebuild-android": "git clean -xdf node_modules package-lock.json android ios && npm i && npx expo prebuild --platform android && cd android && gradlew clean && cd ..", + "clean-rebuild:android": "git clean -xdf node_modules package-lock.json android ios && npm i && npx expo prebuild --platform android && cd android && gradlew clean && cd ..", + "clean-rebuild:ios": "git clean -xdf node_modules package-lock.json && npm i && npx expo prebuild --platform ios", "android": "expo run:android --variant debugOptimized --device", "android:preview": "npx cross-env EXPO_PUBLIC_APP_VARIANT=preview expo run:android --device --variant release", "android:release": "npx cross-env EXPO_PUBLIC_APP_VARIANT=production expo run:android --device --variant release", From 165165eb395054d7f6f9ff7bea858e67b22b9171 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 16 Feb 2026 23:10:56 -0600 Subject: [PATCH 087/143] dont create apps on maestro test file changes --- .eas/workflows/deploy-to-preview.yml | 1 + .eas/workflows/deploy-to-production.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.eas/workflows/deploy-to-preview.yml b/.eas/workflows/deploy-to-preview.yml index 59fb0a2c3..9c1718d9c 100644 --- a/.eas/workflows/deploy-to-preview.yml +++ b/.eas/workflows/deploy-to-preview.yml @@ -21,6 +21,7 @@ on: - '!deno.json' - '!.cursor/**' - '!.vscode/**' + - '!.maestro/**' jobs: fingerprint: diff --git a/.eas/workflows/deploy-to-production.yml b/.eas/workflows/deploy-to-production.yml index 13684044e..8deb93f4a 100644 --- a/.eas/workflows/deploy-to-production.yml +++ b/.eas/workflows/deploy-to-production.yml @@ -21,6 +21,7 @@ on: - '!deno.json' - '!.cursor/**' - '!.vscode/**' + - '!.maestro/**' jobs: fingerprint: From 8b1d480dd9e75755f73ea253d61e9a59dcb79b1f Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 17 Feb 2026 00:12:39 -0600 Subject: [PATCH 088/143] chore: format fix --- .maestro/api.js | 30 ++++++++++++++++------ components/DrawerLegendList.tsx | 9 +++---- components/RecordingSelectionList.tsx | 5 ++-- components/ui/drawer/index.web.tsx | 5 ++-- components/ui/input.tsx | 3 +-- components/ui/textarea.tsx | 3 +-- db/powersync/system.ts | 35 +++++++++++--------------- hooks/db/useLanguoidLinkSuggestions.ts | 3 +-- hooks/useAppNavigation.ts | 2 +- hooks/useHybridSupabaseQuery.ts | 6 +++-- hooks/useMicrophoneEnergy.web.ts | 5 ++-- services/localizations.ts | 3 +-- views/new/NextGenAssetDetailView.tsx | 10 +++++--- 13 files changed, 65 insertions(+), 54 deletions(-) diff --git a/.maestro/api.js b/.maestro/api.js index 5a3f5e8d8..503e64b55 100644 --- a/.maestro/api.js +++ b/.maestro/api.js @@ -134,30 +134,41 @@ function generatePasswordResetLink(email) { function deleteProject(projectName) { // Validate projectName is defined and is a non-empty string - if (!projectName || typeof projectName !== 'string' || projectName.trim() === '') { + if ( + !projectName || + typeof projectName !== 'string' || + projectName.trim() === '' + ) { throw new Error( - 'Project name is required and must be a non-empty string. Received: ' + projectName + 'Project name is required and must be a non-empty string. Received: ' + + projectName ); } console.log('Deleting project with name:', projectName); - + // First, get the project by name using Supabase REST API const getProjectResponse = http.get( - supabaseUrl + '/rest/v1/project?name=eq.' + encodeURIComponent(projectName) + '&select=id', + supabaseUrl + + '/rest/v1/project?name=eq.' + + encodeURIComponent(projectName) + + '&select=id', { headers: { Authorization: 'Bearer ' + serviceRoleKey, apikey: serviceRoleKey, 'Content-Type': 'application/json', - 'Prefer': 'return=representation' + Prefer: 'return=representation' } } ); if (getProjectResponse.status !== 200) { throw new Error( - 'Failed to query project: ' + getProjectResponse.status + ' ' + getProjectResponse.body + 'Failed to query project: ' + + getProjectResponse.status + + ' ' + + getProjectResponse.body ); } @@ -178,14 +189,17 @@ function deleteProject(projectName) { Authorization: 'Bearer ' + serviceRoleKey, apikey: serviceRoleKey, 'Content-Type': 'application/json', - 'Prefer': 'return=representation' + Prefer: 'return=representation' } } ); if (deleteResponse.status !== 200 && deleteResponse.status !== 204) { throw new Error( - 'Failed to delete project: ' + deleteResponse.status + ' ' + deleteResponse.body + 'Failed to delete project: ' + + deleteResponse.status + + ' ' + + deleteResponse.body ); } diff --git a/components/DrawerLegendList.tsx b/components/DrawerLegendList.tsx index 53d9efccc..373076909 100644 --- a/components/DrawerLegendList.tsx +++ b/components/DrawerLegendList.tsx @@ -4,11 +4,10 @@ import { LegendList } from '@legendapp/list'; import React from 'react'; import type { StyleProp, ViewStyle } from 'react-native'; -export interface DrawerLegendListProps - extends Omit< - LegendListProps, - 'renderScrollComponent' | 'style' | 'contentContainerStyle' - > { +export interface DrawerLegendListProps extends Omit< + LegendListProps, + 'renderScrollComponent' | 'style' | 'contentContainerStyle' +> { /** * Optional ref for the LegendList */ diff --git a/components/RecordingSelectionList.tsx b/components/RecordingSelectionList.tsx index 43cf63397..2314b3067 100644 --- a/components/RecordingSelectionList.tsx +++ b/components/RecordingSelectionList.tsx @@ -41,8 +41,9 @@ interface RecordingSelectionListPropsBase { } // Lazy rendering with data + renderItem -interface RecordingSelectionListPropsLazy - extends RecordingSelectionListPropsBase { +interface RecordingSelectionListPropsLazy< + T +> extends RecordingSelectionListPropsBase { data: T[]; renderItem: ( item: T, diff --git a/components/ui/drawer/index.web.tsx b/components/ui/drawer/index.web.tsx index 112a348c6..fa8a23ee3 100644 --- a/components/ui/drawer/index.web.tsx +++ b/components/ui/drawer/index.web.tsx @@ -35,8 +35,9 @@ function DrawerClose({ return ; } -interface DrawerContentProps - extends React.ComponentProps { +interface DrawerContentProps extends React.ComponentProps< + typeof DrawerPrimitive.Content +> { /** * When true, the default wrapper is not applied. * On web, this prop is accepted for API compatibility but has no effect diff --git a/components/ui/input.tsx b/components/ui/input.tsx index f58ccfdf2..9b2beed52 100644 --- a/components/ui/input.tsx +++ b/components/ui/input.tsx @@ -112,8 +112,7 @@ const suffixStyledVariants = cva('h-full border-l border-border', { }); interface InputProps - extends TextInputProps, - VariantProps { + extends TextInputProps, VariantProps { prefix?: React.ReactNode | LucideIcon; suffix?: React.ReactNode | LucideIcon; prefixStyling?: boolean; diff --git a/components/ui/textarea.tsx b/components/ui/textarea.tsx index 13e1c9ec1..1afe9e7c5 100644 --- a/components/ui/textarea.tsx +++ b/components/ui/textarea.tsx @@ -22,8 +22,7 @@ const textareaVariants = cva( ); interface TextareaProps - extends TextInputProps, - VariantProps { + extends TextInputProps, VariantProps { drawerInput?: boolean; } diff --git a/db/powersync/system.ts b/db/powersync/system.ts index 05440b1a9..af70b91f2 100644 --- a/db/powersync/system.ts +++ b/db/powersync/system.ts @@ -552,9 +552,8 @@ export class System { if (needsMigration) { // Check degraded mode - only throw MigrationNeededError if we should retry - const { shouldRetryMigration, isDegradedMode } = await import( - '../../services/degradedModeService' - ); + const { shouldRetryMigration, isDegradedMode } = + await import('../../services/degradedModeService'); const isDegraded = await isDegradedMode(); const shouldRetry = await shouldRetryMigration(); @@ -588,9 +587,8 @@ export class System { '[System] โš ๏ธ Migration still needed after pre-auth check' ); // Check degraded mode - only throw MigrationNeededError if we should retry - const { shouldRetryMigration, isDegradedMode } = await import( - '../../services/degradedModeService' - ); + const { shouldRetryMigration, isDegradedMode } = + await import('../../services/degradedModeService'); const isDegraded = await isDegradedMode(); const shouldRetry = await shouldRetryMigration(); @@ -618,9 +616,8 @@ export class System { // CRITICAL: Check degraded mode before PowerSync initialization // In degraded mode, we skip sync to prevent data corruption with outdated schema - const { isDegradedMode: checkDegradedMode } = await import( - '../../services/degradedModeService' - ); + const { isDegradedMode: checkDegradedMode } = + await import('../../services/degradedModeService'); const isDegraded = await checkDegradedMode(); if (isDegraded) { @@ -664,9 +661,8 @@ export class System { // CRITICAL: Check server schema version FIRST // This ensures client and server schemas are compatible before proceeding console.log('[System] Checking server schema version...'); - const { checkAppUpgradeNeeded } = await import( - '../schemaVersionService' - ); + const { checkAppUpgradeNeeded } = + await import('../schemaVersionService'); // Create raw database wrapper from PowerSync for schema version check const dbForSchemaCheck = { getAll: async (sql: string, params?: unknown[]) => { @@ -1356,9 +1352,8 @@ export class System { // Fast check first - most users won't have corrupted attachments console.log('[System] Checking for corrupted attachments...'); try { - const { getCorruptedCount, cleanupAllCorrupted } = await import( - '@/services/corruptedAttachmentsService' - ); + const { getCorruptedCount, cleanupAllCorrupted } = + await import('@/services/corruptedAttachmentsService'); const corruptedCount = await getCorruptedCount(); if (corruptedCount > 0) { @@ -1564,9 +1559,8 @@ export class System { console.log('[System] Starting migration process...'); // Dynamic import to avoid circular dependencies - const { runMigrations, getMinimumSchemaVersion } = await import( - '../migrations/index' - ); + const { runMigrations, getMinimumSchemaVersion } = + await import('../migrations/index'); const { APP_SCHEMA_VERSION } = await import('../drizzleSchema'); // Create migrationDb if not already set (works for both pre-auth and post-auth) @@ -1773,9 +1767,8 @@ export class System { const { APP_SCHEMA_VERSION } = await import('../drizzleSchema'); // Check degraded mode first - const { shouldRetryMigration, isDegradedMode } = await import( - '../../services/degradedModeService' - ); + const { shouldRetryMigration, isDegradedMode } = + await import('../../services/degradedModeService'); const isDegraded = await isDegradedMode(); const shouldRetry = await shouldRetryMigration(); diff --git a/hooks/db/useLanguoidLinkSuggestions.ts b/hooks/db/useLanguoidLinkSuggestions.ts index f69a9c388..f39ffc734 100644 --- a/hooks/db/useLanguoidLinkSuggestions.ts +++ b/hooks/db/useLanguoidLinkSuggestions.ts @@ -25,8 +25,7 @@ interface LanguoidDetail { ui_ready: boolean | null; } -export interface LanguoidLinkSuggestionWithDetails - extends LanguoidLinkSuggestion { +export interface LanguoidLinkSuggestionWithDetails extends LanguoidLinkSuggestion { languoid_name: string | null; suggested_languoid_name: string | null; suggested_languoid_level: string | null; diff --git a/hooks/useAppNavigation.ts b/hooks/useAppNavigation.ts index ab4300ec1..658f39a23 100644 --- a/hooks/useAppNavigation.ts +++ b/hooks/useAppNavigation.ts @@ -7,7 +7,7 @@ import type { AppView, NavigationStackItem } from '@/store/localStore'; import { useLocalStore } from '@/store/localStore'; import { profiler } from '@/utils/profiler'; import { useCallback, useMemo } from 'react'; -import { useLocalization } from './useLocalization'; +import { useLocalization } from '@/hooks/useLocalization'; export interface NavigationState { view: AppView; diff --git a/hooks/useHybridSupabaseQuery.ts b/hooks/useHybridSupabaseQuery.ts index 3732c76c9..944fa8d9f 100644 --- a/hooks/useHybridSupabaseQuery.ts +++ b/hooks/useHybridSupabaseQuery.ts @@ -691,8 +691,10 @@ type GetInfiniteQueryParam = Parameters< typeof useInfiniteQuery> >[0]; -interface InfiniteQueryContext - extends QueryFunctionContext['queryKey'], number> { +interface InfiniteQueryContext extends QueryFunctionContext< + GetQueryParam['queryKey'], + number +> { pageSize: number; } diff --git a/hooks/useMicrophoneEnergy.web.ts b/hooks/useMicrophoneEnergy.web.ts index 1da927da2..1e02c8a49 100644 --- a/hooks/useMicrophoneEnergy.web.ts +++ b/hooks/useMicrophoneEnergy.web.ts @@ -107,8 +107,9 @@ export function useMicrophoneEnergy(): UseMicrophoneEnergyReturn { streamRef.current = stream; // Create audio context - const audioContext = new (window.AudioContext || - (window as any).webkitAudioContext)(); + const audioContext = new ( + window.AudioContext || (window as any).webkitAudioContext + )(); audioContextRef.current = audioContext; // Create analyser node diff --git a/services/localizations.ts b/services/localizations.ts index afeb27b16..d7f32cb69 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -11153,8 +11153,7 @@ export const localizations = { 'เค•เคˆ เค‘เคกเคฟเคฏเฅ‹ เคเคธเฅ‡เคŸ เค•เฅ‹ เคเค• เคเคธเฅ‡เคŸ เคฎเฅ‡เค‚ เคฎเคฐเฅเคœ เค•เคฐเคจเฅ‡ เค•เฅ€ เค…เคจเฅเคฎเคคเคฟ เคฆเฅ‡เค‚เฅค เคธเคพเคตเคงเคพเคจเฅ€ เคธเฅ‡ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ โ€” เคฎเคฐเฅเคœ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฌเคพเคฆ เคธเฅ‡เค—เคฎเฅ‡เค‚เคŸ เค•เฅเคฐเคฎ เค•เฅ‹ เคฎเฅˆเคจเฅเคฏเฅเค…เคฒ เคฐเฅ‚เคช เคธเฅ‡ เคธเคฎเคพเคฏเฅ‹เคœเคฟเคค เค•เคฐเคจเฅ‡ เค•เฅ€ เค†เคตเคถเฅเคฏเค•เคคเคพ เคนเฅ‹ เคธเค•เคคเฅ€ เคนเฅˆเฅค', burmese: 'แ€กแ€žแ€ถแ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธแ€…แ€ฝแ€ฌแ€€แ€ญแ€ฏ แ€แ€…แ€บแ€แ€ฏแ€แ€Šแ€บแ€ธแ€žแ€ฑแ€ฌ แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€žแ€ญแ€ฏแ€ท แ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€…แ€•แ€บแ€แ€ฝแ€„แ€ทแ€บแ€•แ€ผแ€ฏแ€•แ€ซแ‹ แ€žแ€แ€ญแ€–แ€ผแ€„แ€ทแ€บ แ€กแ€žแ€ฏแ€ถแ€ธแ€•แ€ผแ€ฏแ€•แ€ซ โ€” แ€•แ€ฑแ€ซแ€„แ€บแ€ธแ€…แ€•แ€บแ€•แ€ผแ€ฎแ€ธแ€”แ€ฑแ€ฌแ€€แ€บ แ€กแ€•แ€ญแ€ฏแ€„แ€บแ€ธแ€กแ€… แ€กแ€…แ€‰แ€บแ€€แ€ญแ€ฏ แ€œแ€€แ€บแ€–แ€ผแ€„แ€ทแ€บ แ€Šแ€พแ€ญแ€šแ€ฐแ€›แ€”แ€บ แ€œแ€ญแ€ฏแ€กแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€žแ€Šแ€บแ‹', - thai: - 'เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธฃเธงเธกเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน€เธชเธตเธขเธ‡เธซเธฅเธฒเธขเธฃเธฒเธขเธเธฒเธฃเน€เธ›เน‡เธ™เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน€เธ”เธตเธขเธง เนƒเธŠเน‰เธ”เน‰เธงเธขเธ„เธงเธฒเธกเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡ โ€” เธฅเธณเธ”เธฑเธšเธ‚เธญเธ‡เธชเนˆเธงเธ™เธญเธฒเธˆเธ•เน‰เธญเธ‡เธ›เธฃเธฑเธšเธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡เธซเธฅเธฑเธ‡เธˆเธฒเธเธฃเธงเธก', + thai: 'เธญเธ™เธธเธเธฒเธ•เนƒเธซเน‰เธฃเธงเธกเธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน€เธชเธตเธขเธ‡เธซเธฅเธฒเธขเธฃเธฒเธขเธเธฒเธฃเน€เธ›เน‡เธ™เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเน€เธ”เธตเธขเธง เนƒเธŠเน‰เธ”เน‰เธงเธขเธ„เธงเธฒเธกเธฃเธฐเธกเธฑเธ”เธฃเธฐเธงเธฑเธ‡ โ€” เธฅเธณเธ”เธฑเธšเธ‚เธญเธ‡เธชเนˆเธงเธ™เธญเธฒเธˆเธ•เน‰เธญเธ‡เธ›เธฃเธฑเธšเธ”เน‰เธงเธขเธ•เธ™เน€เธญเธ‡เธซเธฅเธฑเธ‡เธˆเธฒเธเธฃเธงเธก', mandarin: 'ๅ…่ฎธๅฐ†ๅคšไธช้Ÿณ้ข‘่ต„ไบงๅˆๅนถไธบๅ•ไธช่ต„ไบงใ€‚่ฏท่ฐจๆ…Žไฝฟ็”จ โ€” ๅˆๅนถๅŽๅฏ่ƒฝ้œ€่ฆๆ‰‹ๅŠจ่ฐƒๆ•ด็‰‡ๆฎต้กบๅบใ€‚' } diff --git a/views/new/NextGenAssetDetailView.tsx b/views/new/NextGenAssetDetailView.tsx index 8d3d74787..ad5556905 100644 --- a/views/new/NextGenAssetDetailView.tsx +++ b/views/new/NextGenAssetDetailView.tsx @@ -1011,9 +1011,13 @@ export default function NextGenAssetDetailView() { 1 )[0]!; ids.splice(targetIndex, 0, movedId); - await updateContentLinkOrder(activeAsset.id, ids, { - localOverride: activeAsset.source === 'local' - }); + await updateContentLinkOrder( + activeAsset.id, + ids, + { + localOverride: activeAsset.source === 'local' + } + ); setCurrentContentIndex(targetIndex); } setShowReorderInput(false); From 8c45e99aff1e084dc5404c9aae84ef9db3c660d4 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:19:21 -0600 Subject: [PATCH 089/143] refactor: standardize item card components with cn() and Button component - Replace className template literals with cn() utility - Use Button component for external link icon - Increase DownloadIndicator size to 20 for consistency --- views/new/AssetCardItem.tsx | 36 ++++++++++++++++++-------------- views/new/AssetListItem.tsx | 17 +++++++++++---- views/new/BibleAssetListItem.tsx | 30 ++++++++++++++------------ 3 files changed, 50 insertions(+), 33 deletions(-) diff --git a/views/new/AssetCardItem.tsx b/views/new/AssetCardItem.tsx index aaca53c67..a87634d8b 100644 --- a/views/new/AssetCardItem.tsx +++ b/views/new/AssetCardItem.tsx @@ -16,6 +16,7 @@ import { useAppNavigation } from '@/hooks/useAppNavigation'; import { useLocalization } from '@/hooks/useLocalization'; // import { useTagStore } from '@/hooks/useTagStore'; import { SHOW_DEV_ELEMENTS } from '@/utils/featureFlags'; +import { cn } from '@/utils/styleUtils'; import type { AttachmentRecord } from '@powersync/attachments'; import { CheckSquareIcon, @@ -32,6 +33,7 @@ import { import React from 'react'; import { Pressable, View } from 'react-native'; // import { TagModal } from '../../components/TagModal'; +import { Button } from '@/components/ui/button'; import { Text } from '@/components/ui/text'; import { useItemDownload, useItemDownloadStatus } from './useHybridData'; @@ -286,13 +288,14 @@ const AssetCardItemComponent: React.FC = ({ return ( {/* Highlight indicator triangle */} {/* { isHighlighted && } */} @@ -398,7 +401,7 @@ const AssetCardItemComponent: React.FC = ({
*/} {/* Actions: Edit name + Open details (hidden in selection mode) */} - + {/* Highlight indicator badge */} {isHighlighted && ( @@ -417,8 +420,8 @@ const AssetCardItemComponent: React.FC = ({ e.stopPropagation(); onRename(asset.id, asset.name); }} - className="flex h-7 w-7 items-center justify-center rounded-full bg-primary/20 active:bg-primary/40" - hitSlop={8} + className="flex size-7 items-center justify-center rounded-full bg-primary/20 active:bg-primary/40" + hitSlop={6} > = ({ isFlaggedForDownload={isDownloaded} isLoading={isDownloading} onPress={handleDownloadToggle} - size={16} + size={20} iconColor="text-primary/50" /> )} {!isSelectionMode && ( - { e.stopPropagation(); handleOpenAsset(); }} - className="mr-2" - hitSlop={8} + hitSlop={2} > - + )} diff --git a/views/new/AssetListItem.tsx b/views/new/AssetListItem.tsx index 79a06c4f2..836559b8a 100644 --- a/views/new/AssetListItem.tsx +++ b/views/new/AssetListItem.tsx @@ -28,6 +28,7 @@ import { import React from 'react'; import { Pressable, View } from 'react-native'; // import { TagModal } from '../../components/TagModal'; +import { Button } from '@/components/ui/button'; import { useItemDownload, useItemDownloadStatus } from './useHybridData'; // Define props locally to avoid require cycle @@ -240,16 +241,24 @@ export const AssetListItem: React.FC = ({ isFlaggedForDownload={isDownloaded} isLoading={isDownloading} onPress={handleDownloadToggle} - size={16} + size={20} iconColor="text-primary/50" /> - +
{SHOW_DEV_ELEMENTS && ( diff --git a/views/new/BibleAssetListItem.tsx b/views/new/BibleAssetListItem.tsx index 728a5b472..2c0e96731 100644 --- a/views/new/BibleAssetListItem.tsx +++ b/views/new/BibleAssetListItem.tsx @@ -19,6 +19,7 @@ import { useAppNavigation } from '@/hooks/useAppNavigation'; import { useLocalization } from '@/hooks/useLocalization'; // import { useTagStore } from '@/hooks/useTagStore'; import { SHOW_DEV_ELEMENTS } from '@/utils/featureFlags'; +import { cn } from '@/utils/styleUtils'; import type { AttachmentRecord } from '@powersync/attachments'; import { CheckSquareIcon, @@ -35,6 +36,7 @@ import { import React from 'react'; import { Pressable, View } from 'react-native'; // import { TagModal } from '../../components/TagModal'; +import { Button } from '@/components/ui/button'; import { Text } from '@/components/ui/text'; import { useItemDownload, useItemDownloadStatus } from './useHybridData'; @@ -289,13 +291,14 @@ const BibleAssetListItemComponent: React.FC = ({ return ( {/* Highlight indicator triangle */} {/* { isHighlighted && } */} @@ -434,26 +437,27 @@ const BibleAssetListItemComponent: React.FC = ({ isFlaggedForDownload={isDownloaded} isLoading={isDownloading} onPress={handleDownloadToggle} - size={16} + size={20} iconColor="text-primary/50" /> )} {!isSelectionMode && ( - { e.stopPropagation(); handleOpenAsset(); }} - className="mr-2" - hitSlop={8} + hitSlop={2} > - + )}
From ce784e5e13d6abfaf7a367b300a75a72e40982f5 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:20:43 -0600 Subject: [PATCH 090/143] fix text color on play button for audio player --- components/MiniAudioPlayer.tsx | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/components/MiniAudioPlayer.tsx b/components/MiniAudioPlayer.tsx index 565cd8ee9..1cf98af53 100644 --- a/components/MiniAudioPlayer.tsx +++ b/components/MiniAudioPlayer.tsx @@ -2,8 +2,8 @@ import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; import { useAudio } from '@/contexts/AudioContext'; -import { colors, spacing } from '@/styles/theme'; -import { getThemeColor } from '@/utils/styleUtils'; +import { spacing } from '@/styles/theme'; +import { getThemeColor, useThemeColor } from '@/utils/styleUtils'; import { Play, Pause, SparklesIcon } from 'lucide-react-native'; import React from 'react'; import { ActivityIndicator, StyleSheet, View } from 'react-native'; @@ -30,6 +30,7 @@ export default function MiniAudioPlayer({ isPlaying, currentAudioId } = useAudio(); + const primaryColor = useThemeColor('primary'); const handlePlayPause = async () => { if (isPlaying && currentAudioId === id) { @@ -58,19 +59,19 @@ export default function MiniAudioPlayer({ {onTranscribe && ( @@ -102,14 +107,12 @@ const styles = StyleSheet.create({ width: 44, height: 44, borderRadius: 22, - backgroundColor: colors.primary, alignItems: 'center', justifyContent: 'center' }, transcribePill: { height: 32, borderRadius: 16, - backgroundColor: colors.primary, alignItems: 'center', justifyContent: 'center', paddingHorizontal: 12 From 8510c6ea27aeda993c1d714dab44f79acc88f23e Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:40:53 -0600 Subject: [PATCH 091/143] add languoid aliases for new localizations + seed local --- package-lock.json | 4 +- ...d_hindi_burmese_thai_mandarin_ui_ready.sql | 142 --------------- ...d_hindi_burmese_thai_mandarin_ui_ready.sql | 167 ++++++++++++++++++ supabase/seeds/public.sql | 18 +- 4 files changed, 184 insertions(+), 147 deletions(-) delete mode 100644 supabase/migrations/20260212000000_add_hindi_burmese_thai_mandarin_ui_ready.sql create mode 100644 supabase/migrations/20260217000000_add_hindi_burmese_thai_mandarin_ui_ready.sql diff --git a/package-lock.json b/package-lock.json index 60e894324..0d92ca4ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "langquest", - "version": "2.0.13", + "version": "2.0.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "langquest", - "version": "2.0.13", + "version": "2.0.14", "hasInstallScript": true, "dependencies": { "@azure/core-asynciterator-polyfill": "^1.0.2", diff --git a/supabase/migrations/20260212000000_add_hindi_burmese_thai_mandarin_ui_ready.sql b/supabase/migrations/20260212000000_add_hindi_burmese_thai_mandarin_ui_ready.sql deleted file mode 100644 index 6dd65654b..000000000 --- a/supabase/migrations/20260212000000_add_hindi_burmese_thai_mandarin_ui_ready.sql +++ /dev/null @@ -1,142 +0,0 @@ --- Enable Hindi, Burmese, Thai, and Mandarin as UI-ready languages --- These languoid records may already exist in production with different IDs --- ISO 639-3 codes: hin (Hindi), mya (Burmese), tha (Thai), cmn (Mandarin) --- --- In local dev, the languoids are created by seeds (which run AFTER migrations), --- so we use conditional statements that only execute if the languoid exists. - --- Enable Hindi (เคนเคฟเคจเฅเคฆเฅ€) -UPDATE public.languoid -SET ui_ready = true, - last_updated = NOW() -WHERE name = 'Hindi' - AND EXISTS ( - SELECT 1 FROM public.languoid_source - WHERE languoid_id = languoid.id - AND unique_identifier = 'hin' - ); - --- Add Hindi endonymic alias (เคนเคฟเคจเฅเคฆเฅ€) -INSERT INTO public.languoid_alias ( - subject_languoid_id, - label_languoid_id, - name, - alias_type, - source_names -) -SELECT - languoid.id, - languoid.id, - 'เคนเคฟเคจเฅเคฆเฅ€', - 'endonym'::public.alias_type, - ARRAY['lexvo'] -FROM public.languoid -WHERE name = 'Hindi' - AND EXISTS ( - SELECT 1 FROM public.languoid_source - WHERE languoid_id = languoid.id - AND unique_identifier = 'hin' - ) -ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; - --- Enable Burmese (แ€™แ€ผแ€”แ€บแ€™แ€ฌ) -UPDATE public.languoid -SET ui_ready = true, - last_updated = NOW() -WHERE name = 'Burmese' - AND EXISTS ( - SELECT 1 FROM public.languoid_source - WHERE languoid_id = languoid.id - AND unique_identifier = 'mya' - ); - --- Add Burmese endonymic alias (แ€™แ€ผแ€”แ€บแ€™แ€ฌ) -INSERT INTO public.languoid_alias ( - subject_languoid_id, - label_languoid_id, - name, - alias_type, - source_names -) -SELECT - languoid.id, - languoid.id, - 'แ€™แ€ผแ€”แ€บแ€™แ€ฌ', - 'endonym'::public.alias_type, - ARRAY['lexvo'] -FROM public.languoid -WHERE name = 'Burmese' - AND EXISTS ( - SELECT 1 FROM public.languoid_source - WHERE languoid_id = languoid.id - AND unique_identifier = 'mya' - ) -ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; - --- Enable Thai (เน„เธ—เธข) -UPDATE public.languoid -SET ui_ready = true, - last_updated = NOW() -WHERE name = 'Thai' - AND EXISTS ( - SELECT 1 FROM public.languoid_source - WHERE languoid_id = languoid.id - AND unique_identifier = 'tha' - ); - --- Add Thai endonymic alias (เน„เธ—เธข) -INSERT INTO public.languoid_alias ( - subject_languoid_id, - label_languoid_id, - name, - alias_type, - source_names -) -SELECT - languoid.id, - languoid.id, - 'เน„เธ—เธข', - 'endonym'::public.alias_type, - ARRAY['lexvo'] -FROM public.languoid -WHERE name = 'Thai' - AND EXISTS ( - SELECT 1 FROM public.languoid_source - WHERE languoid_id = languoid.id - AND unique_identifier = 'tha' - ) -ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; - --- Enable Mandarin (ๆ™ฎ้€š่ฏ) -UPDATE public.languoid -SET ui_ready = true, - last_updated = NOW() -WHERE name = 'Mandarin' - AND EXISTS ( - SELECT 1 FROM public.languoid_source - WHERE languoid_id = languoid.id - AND unique_identifier = 'cmn' - ); - --- Add Mandarin endonymic alias (ๆ™ฎ้€š่ฏ) -INSERT INTO public.languoid_alias ( - subject_languoid_id, - label_languoid_id, - name, - alias_type, - source_names -) -SELECT - languoid.id, - languoid.id, - 'ๆ™ฎ้€š่ฏ', - 'endonym'::public.alias_type, - ARRAY['lexvo'] -FROM public.languoid -WHERE name = 'Mandarin' - AND EXISTS ( - SELECT 1 FROM public.languoid_source - WHERE languoid_id = languoid.id - AND unique_identifier = 'cmn' - ) -ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; diff --git a/supabase/migrations/20260217000000_add_hindi_burmese_thai_mandarin_ui_ready.sql b/supabase/migrations/20260217000000_add_hindi_burmese_thai_mandarin_ui_ready.sql new file mode 100644 index 000000000..0d95f8455 --- /dev/null +++ b/supabase/migrations/20260217000000_add_hindi_burmese_thai_mandarin_ui_ready.sql @@ -0,0 +1,167 @@ +-- Add Hindi, Burmese, Thai, and Mandarin languoids to dev branch +-- These languoids already exist in production with specific IDs +-- Production IDs: +-- Hindi: 3502e2a1-3cfd-45f7-8167-a9a67d42c76a +-- Burmese: fa8369a5-03a6-4d1e-ba44-152409a2f97c +-- Thai: fe361436-f7ff-4955-a442-59b76623b3c9 +-- Mandarin: 0d75d06f-2692-4127-b810-67dd64fa6eee +-- +-- In local dev, the languoids are created by seeds (which run AFTER migrations), +-- so we use conditional statements that only execute if the languoids exist. + +-- ============================================================================ +-- Hindi (เคนเคฟเคจเฅเคฆเฅ€) +-- ISO 639-3: hin +-- ============================================================================ + +-- Add Hindi endonymic aliases (เคนเคฟเคจเฅเคฆเฅ€, เคนเคฟเค‚เคฆเฅ€) - only if the languoid exists +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + '3502e2a1-3cfd-45f7-8167-a9a67d42c76a', + '3502e2a1-3cfd-45f7-8167-a9a67d42c76a', + 'เคนเคฟเคจเฅเคฆเฅ€', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +WHERE EXISTS ( + SELECT 1 FROM public.languoid WHERE id = '3502e2a1-3cfd-45f7-8167-a9a67d42c76a' +) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + '3502e2a1-3cfd-45f7-8167-a9a67d42c76a', + '3502e2a1-3cfd-45f7-8167-a9a67d42c76a', + 'เคนเคฟเค‚เคฆเฅ€', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +WHERE EXISTS ( + SELECT 1 FROM public.languoid WHERE id = '3502e2a1-3cfd-45f7-8167-a9a67d42c76a' +) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +-- ============================================================================ +-- Burmese (แ€™แ€ผแ€”แ€บแ€™แ€ฌ) +-- ISO 639-3: mya +-- ============================================================================ + +-- Add Burmese endonymic alias (แ€™แ€ผแ€”แ€บแ€™แ€ฌ) - only if the languoid exists +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + 'fa8369a5-03a6-4d1e-ba44-152409a2f97c', + 'fa8369a5-03a6-4d1e-ba44-152409a2f97c', + 'แ€™แ€ผแ€”แ€บแ€™แ€ฌ', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +WHERE EXISTS ( + SELECT 1 FROM public.languoid WHERE id = 'fa8369a5-03a6-4d1e-ba44-152409a2f97c' +) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +-- Add Burmese exonymic alias (Myanmar) - only if the languoid exists +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + 'fa8369a5-03a6-4d1e-ba44-152409a2f97c', + 'fa8369a5-03a6-4d1e-ba44-152409a2f97c', + 'Myanmar', + 'exonym'::public.alias_type, + ARRAY['lexvo'] +WHERE EXISTS ( + SELECT 1 FROM public.languoid WHERE id = 'fa8369a5-03a6-4d1e-ba44-152409a2f97c' +) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +-- ============================================================================ +-- Thai (เน„เธ—เธข) +-- ISO 639-3: tha +-- ============================================================================ + +-- Add Thai endonymic alias (เน„เธ—เธข) - only if the languoid exists +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + 'fe361436-f7ff-4955-a442-59b76623b3c9', + 'fe361436-f7ff-4955-a442-59b76623b3c9', + 'เน„เธ—เธข', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +WHERE EXISTS ( + SELECT 1 FROM public.languoid WHERE id = 'fe361436-f7ff-4955-a442-59b76623b3c9' +) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +-- ============================================================================ +-- Mandarin (ๆ™ฎ้€š่ฏ) +-- ISO 639-3: cmn +-- ============================================================================ + +-- Update name from "Mandarin Chinese" to "Mandarin" to match migration expectations +UPDATE public.languoid +SET name = 'Mandarin', last_updated = NOW() +WHERE id = '0d75d06f-2692-4127-b810-67dd64fa6eee' + AND name = 'Mandarin Chinese'; + +-- Add Mandarin endonymic aliases (ๆ™ฎ้€š่ฏ, ไธญๆ–‡) - only if the languoid exists +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + '0d75d06f-2692-4127-b810-67dd64fa6eee', + '0d75d06f-2692-4127-b810-67dd64fa6eee', + 'ๆ™ฎ้€š่ฏ', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +WHERE EXISTS ( + SELECT 1 FROM public.languoid WHERE id = '0d75d06f-2692-4127-b810-67dd64fa6eee' +) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +INSERT INTO public.languoid_alias ( + subject_languoid_id, + label_languoid_id, + name, + alias_type, + source_names +) +SELECT + '0d75d06f-2692-4127-b810-67dd64fa6eee', + '0d75d06f-2692-4127-b810-67dd64fa6eee', + 'ไธญๆ–‡', + 'endonym'::public.alias_type, + ARRAY['lexvo'] +WHERE EXISTS ( + SELECT 1 FROM public.languoid WHERE id = '0d75d06f-2692-4127-b810-67dd64fa6eee' +) +ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; diff --git a/supabase/seeds/public.sql b/supabase/seeds/public.sql index 345a6ff6f..5ca3cd501 100644 --- a/supabase/seeds/public.sql +++ b/supabase/seeds/public.sql @@ -75,7 +75,11 @@ INSERT INTO "public"."languoid" ("id", "parent_id", "name", "level", "ui_ready", ('7a735df4-4f4e-4a03-b60e-eb7911152cf4', NULL, 'Nepali', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), ('a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d', NULL, 'Brazilian Portuguese', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), ('b2c3d4e5-f6a7-4b5c-9d0e-1f2a3b4c5d6e', NULL, 'Tok Pisin', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), - ('c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f', NULL, 'Indonesian', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL); + ('c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f', NULL, 'Indonesian', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('d4e5f6a7-b8c9-4d5e-0f1a-2b3c4d5e6f7a', NULL, 'Hindi', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('e5f6a7b8-c9d0-4e5f-1a2b-3c4d5e6f7a8b', NULL, 'Burmese', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('f6a7b8c9-d0e1-4f5a-2b3c-4d5e6f7a8b9c', NULL, 'Thai', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('a7b8c9d0-e1f2-4a5b-3c4d-5e6f7a8b9c0d', NULL, 'Mandarin', 'language', true, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL); -- @@ -91,7 +95,11 @@ INSERT INTO "public"."languoid_alias" ("id", "subject_languoid_id", "label_langu ('a1a1a1a1-0006-4000-8000-000000000006', '7a735df4-4f4e-4a03-b60e-eb7911152cf4', '7a735df4-4f4e-4a03-b60e-eb7911152cf4', 'เคจเฅ‡เคชเคพเคฒเฅ€', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), ('a1a1a1a1-0007-4000-8000-000000000007', 'a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d', 'a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d', 'Portuguรชs Brasileiro', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), ('a1a1a1a1-0008-4000-8000-000000000008', 'b2c3d4e5-f6a7-4b5c-9d0e-1f2a3b4c5d6e', 'b2c3d4e5-f6a7-4b5c-9d0e-1f2a3b4c5d6e', 'Tok Pisin', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), - ('a1a1a1a1-0009-4000-8000-000000000009', 'c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f', 'c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f', 'Bahasa Indonesia', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL); + ('a1a1a1a1-0009-4000-8000-000000000009', 'c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f', 'c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f', 'Bahasa Indonesia', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('a1a1a1a1-0010-4000-8000-000000000010', 'd4e5f6a7-b8c9-4d5e-0f1a-2b3c4d5e6f7a', 'd4e5f6a7-b8c9-4d5e-0f1a-2b3c4d5e6f7a', 'เคนเคฟเคจเฅเคฆเฅ€', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('a1a1a1a1-0011-4000-8000-000000000011', 'e5f6a7b8-c9d0-4e5f-1a2b-3c4d5e6f7a8b', 'e5f6a7b8-c9d0-4e5f-1a2b-3c4d5e6f7a8b', 'แ€™แ€ผแ€”แ€บแ€™แ€ฌ', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('a1a1a1a1-0012-4000-8000-000000000012', 'f6a7b8c9-d0e1-4f5a-2b3c-4d5e6f7a8b9c', 'f6a7b8c9-d0e1-4f5a-2b3c-4d5e6f7a8b9c', 'เน„เธ—เธข', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('a1a1a1a1-0013-4000-8000-000000000013', 'a7b8c9d0-e1f2-4a5b-3c4d-5e6f7a8b9c0d', 'a7b8c9d0-e1f2-4a5b-3c4d-5e6f7a8b9c0d', 'ๆ™ฎ้€š่ฏ', 'endonym', ARRAY['lexvo'], true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL); -- @@ -107,7 +115,11 @@ INSERT INTO "public"."languoid_source" ("id", "name", "version", "languoid_id", ('b2b2b2b2-0006-4000-8000-000000000006', 'iso639-3', NULL, '7a735df4-4f4e-4a03-b60e-eb7911152cf4', 'npi', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), ('b2b2b2b2-0007-4000-8000-000000000007', 'iso639-3', NULL, 'a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d', 'por', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), ('b2b2b2b2-0008-4000-8000-000000000008', 'iso639-3', NULL, 'b2c3d4e5-f6a7-4b5c-9d0e-1f2a3b4c5d6e', 'tpi', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), - ('b2b2b2b2-0009-4000-8000-000000000009', 'iso639-3', NULL, 'c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f', 'ind', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL); + ('b2b2b2b2-0009-4000-8000-000000000009', 'iso639-3', NULL, 'c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f', 'ind', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('b2b2b2b2-0010-4000-8000-000000000010', 'iso639-3', NULL, 'd4e5f6a7-b8c9-4d5e-0f1a-2b3c4d5e6f7a', 'hin', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('b2b2b2b2-0011-4000-8000-000000000011', 'iso639-3', NULL, 'e5f6a7b8-c9d0-4e5f-1a2b-3c4d5e6f7a8b', 'mya', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('b2b2b2b2-0012-4000-8000-000000000012', 'iso639-3', NULL, 'f6a7b8c9-d0e1-4f5a-2b3c-4d5e6f7a8b9c', 'tha', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL), + ('b2b2b2b2-0013-4000-8000-000000000013', 'iso639-3', NULL, 'a7b8c9d0-e1f2-4a5b-3c4d-5e6f7a8b9c0d', 'cmn', NULL, true, NULL, '2024-01-01 00:00:00+00', '2024-01-01 00:00:00+00', NULL); -- From 8356243e74c37290d52066999e42cec49e13695f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 17 Feb 2026 22:50:56 +0000 Subject: [PATCH 092/143] bump package.json version to 2.1.0 to match app.config.ts Co-authored-by: Keean --- package-lock.json | 315 ++++++++++++++++------------------------------ package.json | 2 +- 2 files changed, 111 insertions(+), 206 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0d92ca4ba..c193039d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -162,7 +162,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2538,7 +2537,6 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, "license": "MIT" }, "node_modules/@blazejkustra/react-native-alert": { @@ -5132,14 +5130,14 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" @@ -5786,7 +5784,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -5861,7 +5858,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -5904,7 +5900,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -5920,7 +5915,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -5976,7 +5970,6 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -6006,7 +5999,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -6139,7 +6131,7 @@ "version": "0.17.0", "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.17.0.tgz", "integrity": "sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@libsql/core": "^0.17.0", @@ -6153,7 +6145,7 @@ "version": "0.17.0", "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.17.0.tgz", "integrity": "sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "js-base64": "^3.7.5" @@ -6166,7 +6158,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6180,7 +6171,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6191,7 +6181,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.9.0.tgz", "integrity": "sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@libsql/isomorphic-ws": "^0.1.5", @@ -6204,7 +6194,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/ws": "^8.5.4", @@ -6218,7 +6208,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6232,7 +6221,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6246,7 +6234,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6260,7 +6247,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6274,7 +6260,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6288,7 +6273,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6302,7 +6286,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6435,7 +6418,7 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@nicolo-ribaudo/chokidar-2": { @@ -8212,7 +8195,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.1.tgz", "integrity": "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-clean": "20.1.1", @@ -8242,7 +8225,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.1.tgz", "integrity": "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8255,7 +8238,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.1.tgz", "integrity": "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8270,7 +8253,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.1.tgz", "integrity": "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8283,7 +8266,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.1.tgz", "integrity": "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8296,7 +8279,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.1.tgz", "integrity": "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config": "20.1.1", @@ -8320,7 +8303,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8333,7 +8316,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.1.tgz", "integrity": "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-android": "20.1.1", @@ -8347,7 +8330,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.1.tgz", "integrity": "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-apple": "20.1.1", @@ -8361,7 +8344,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.1.tgz", "integrity": "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-platform-apple": "20.1.1" @@ -8371,7 +8354,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.1.tgz", "integrity": "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@react-native-community/cli-tools": "20.1.1", @@ -8391,7 +8374,7 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "async-limiter": "~1.0.0" @@ -8401,7 +8384,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.1.tgz", "integrity": "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@vscode/sudo-prompt": "^9.0.0", @@ -8420,7 +8403,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8433,7 +8416,7 @@ "version": "20.1.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.1.tgz", "integrity": "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "joi": "^17.2.1" @@ -8443,7 +8426,7 @@ "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": "^12.20.0 || >=14" @@ -8453,7 +8436,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -9246,7 +9229,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" @@ -9256,14 +9239,14 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/@sinclair/typebox": { @@ -10581,7 +10564,7 @@ "version": "9.3.2", "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@xmldom/xmldom": { @@ -10756,7 +10739,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "colorette": "^1.0.7", @@ -10768,7 +10751,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -10778,7 +10761,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" @@ -10846,7 +10829,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/arg": { @@ -11092,7 +11075,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -11111,7 +11094,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/async-lock": { @@ -11641,7 +11624,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -11654,7 +11636,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -11666,7 +11648,7 @@ "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -11691,7 +11673,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -11701,14 +11683,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/body-parser/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -11954,7 +11936,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -12009,7 +11990,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "devOptional": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -12034,7 +12014,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -12104,7 +12083,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true, "license": "MIT" }, "node_modules/class-variance-authority": { @@ -12123,7 +12101,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" @@ -12219,7 +12197,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -12277,7 +12254,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -12302,7 +12279,7 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/commander": { @@ -12433,7 +12410,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -12517,7 +12494,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.1", @@ -12544,7 +12521,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -12584,7 +12560,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "node-fetch": "^2.7.0" @@ -12594,7 +12570,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -12615,21 +12591,21 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/cross-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause" }, "node_modules/cross-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -12704,7 +12680,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -12783,7 +12758,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 12" @@ -12868,7 +12843,7 @@ "version": "1.11.19", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/debug": { @@ -12892,7 +12867,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12917,7 +12892,6 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", - "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -13167,7 +13141,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -13177,7 +13151,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13193,7 +13166,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, "license": "Apache-2.0" }, "node_modules/diff-sequences": { @@ -13221,7 +13193,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, "license": "MIT" }, "node_modules/dnssd-advertise": { @@ -13362,7 +13333,6 @@ "version": "0.45.1", "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", - "dev": true, "license": "Apache-2.0", "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", @@ -13562,7 +13532,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -13572,7 +13542,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "envinfo": "dist/cli.js" @@ -13585,7 +13555,6 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -13604,7 +13573,7 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -14839,7 +14808,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -14863,7 +14831,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -16729,7 +16696,7 @@ "version": "4.5.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -16912,7 +16879,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -17304,7 +17271,7 @@ "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" @@ -17377,7 +17344,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -17538,7 +17505,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -17863,7 +17829,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, "license": "MIT" }, "node_modules/http-errors": { @@ -17917,7 +17882,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -17942,7 +17906,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -18024,7 +17988,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -18139,7 +18102,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -18180,7 +18142,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -18339,7 +18300,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -18349,7 +18310,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -18390,7 +18350,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -18537,7 +18497,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18598,7 +18557,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -18696,7 +18655,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -18713,7 +18671,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -18726,7 +18683,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -18741,7 +18697,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -18756,7 +18711,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -18802,7 +18756,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -18829,7 +18782,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -18844,7 +18796,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -18876,7 +18827,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -18910,7 +18860,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -18971,7 +18920,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -18984,7 +18932,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -19115,7 +19062,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -19178,7 +19124,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -19205,7 +19150,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -19226,7 +19170,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -19240,7 +19183,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -19273,7 +19215,6 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -19284,7 +19225,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -19318,7 +19258,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -19366,7 +19305,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -19613,7 +19551,7 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -19623,7 +19561,7 @@ "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", @@ -19647,7 +19585,7 @@ "version": "3.7.8", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/js-logger": { @@ -19791,7 +19729,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -19850,7 +19787,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, + "devOptional": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -19999,7 +19936,7 @@ "version": "2.12.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "picocolors": "^1.1.1", @@ -20038,7 +19975,7 @@ "wasm32", "arm" ], - "dev": true, + "devOptional": true, "license": "MIT", "os": [ "darwin", @@ -20348,7 +20285,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -20502,7 +20438,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -20519,7 +20455,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-fragments": "^0.2.1", @@ -20534,7 +20470,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -20546,7 +20482,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -20560,7 +20496,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -20573,7 +20509,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -20589,7 +20525,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -20602,7 +20538,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -20617,14 +20553,14 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "cliui": "^6.0.0", @@ -20647,7 +20583,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "camelcase": "^5.0.0", @@ -20709,7 +20645,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -20725,7 +20660,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -20774,7 +20708,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -21312,7 +21246,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "mime": "cli.js" @@ -21355,7 +21289,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -21584,7 +21517,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -21607,7 +21540,7 @@ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "deprecated": "Use your platform's native DOMException instead", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -21627,7 +21560,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", @@ -21667,7 +21600,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -21727,7 +21660,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -21785,7 +21717,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -21931,7 +21862,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -21947,7 +21877,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-wsl": "^1.1.0" @@ -21960,7 +21890,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -21987,7 +21917,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "bl": "^4.1.0", @@ -22118,7 +22048,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -22388,7 +22317,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -22417,7 +22345,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -22430,7 +22357,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -22444,7 +22370,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -22457,7 +22382,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -22473,7 +22397,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -22558,7 +22481,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", @@ -22576,7 +22498,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -22602,7 +22523,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "dev": true, "funding": [ { "type": "opencollective", @@ -22645,7 +22565,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -22671,7 +22590,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -22799,7 +22717,6 @@ "version": "3.8.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -22965,7 +22882,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/prompts": { @@ -23061,7 +22978,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, "funding": [ { "type": "individual", @@ -23086,7 +23002,7 @@ "version": "6.14.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -24170,7 +24086,7 @@ "version": "19.2.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "react-is": "^19.2.0", @@ -24190,7 +24106,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "license": "MIT", "dependencies": { "pify": "^2.3.0" @@ -24210,7 +24125,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -24225,7 +24140,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -24238,7 +24152,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -24397,7 +24310,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/require-resolve": { @@ -24440,7 +24353,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -24477,7 +24389,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -24487,7 +24398,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", @@ -24777,7 +24688,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/set-function-length": { @@ -25195,7 +25106,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", @@ -25210,7 +25121,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -25223,7 +25134,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -25233,7 +25144,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/sliced": { @@ -25473,14 +25384,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/strict-url-sanitise/-/strict-url-sanitise-0.0.1.tgz", "integrity": "sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -25631,7 +25542,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -25641,7 +25551,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -25663,7 +25572,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -25905,7 +25814,6 @@ "version": "3.4.19", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", - "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -25952,7 +25860,6 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -26326,7 +26233,7 @@ "version": "4.21.0", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "esbuild": "~0.27.0", @@ -26788,7 +26695,7 @@ "version": "0.27.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -26863,7 +26770,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -27088,7 +26995,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -27251,7 +27158,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -27276,7 +27182,6 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -27374,7 +27279,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 8" @@ -27560,7 +27465,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/which-typed-array": { diff --git a/package.json b/package.json index e0a297c08..4507a36dc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "langquest", "main": "expo-router/entry", - "version": "2.0.14", + "version": "2.1.0", "scripts": { "start": "expo start --dev-client", "start:offline:android": "expo start --dev-client -- --localhost --android", From 2fe692eefcecd5a6a9882e973ec724a347c9b70e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 17 Feb 2026 23:42:35 +0000 Subject: [PATCH 093/143] add missing localization languages to mustBeOnlineToAcceptInvite and fix incomplete entries Co-authored-by: Keean --- services/localizations.ts | 118 ++++++++++++++++++++++++++++++++++---- 1 file changed, 108 insertions(+), 10 deletions(-) diff --git a/services/localizations.ts b/services/localizations.ts index 47e17ca77..c90b78b0d 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -134,6 +134,8 @@ export const localizations = { english: 'Options', spanish: 'Opciones', brazilian_portuguese: 'Opรงรตes', + tok_pisin: 'Ol options', + indonesian: 'Opsi', nepali: 'เคตเคฟเค•เคฒเฅเคชเคนเคฐเฅ‚', hindi: 'เคตเคฟเค•เคฒเฅเคช', burmese: 'แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€…แ€›แ€ฌแ€™แ€ปแ€ฌแ€ธ', @@ -288,6 +290,10 @@ export const localizations = { }, newQuest: { english: 'New Quest', + spanish: 'Nueva Misiรณn', + brazilian_portuguese: 'Nova Missรฃo', + tok_pisin: 'Nupela Quest', + indonesian: 'Quest Baru', nepali: 'เคจเคฏเคพเค เค•เฅเคตเฅ‡เคธเฅเคŸ', hindi: 'เคจเคฏเคพ เค•เฅเคตเฅ‡เคธเฅเคŸ', burmese: 'Quest แ€กแ€žแ€…แ€บ', @@ -296,6 +302,10 @@ export const localizations = { }, questName: { english: 'Quest Name', + spanish: 'Nombre de la Misiรณn', + brazilian_portuguese: 'Nome da Missรฃo', + tok_pisin: 'Nem bilong Quest', + indonesian: 'Nama Quest', nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸเค•เฅ‹ เคจเคพเคฎ', hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เค•เคพ เคจเคพเคฎ', burmese: 'Quest แ€กแ€™แ€Šแ€บ', @@ -1043,6 +1053,18 @@ export const localizations = { thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเน€เธŠเธดเธเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ เธเธฃเธธเธ“เธฒเธฅเธญเธ‡เธญเธตเธเธ„เธฃเธฑเน‰เธ‡', mandarin: 'ๆ‹’็ป้‚€่ฏทๅคฑ่ดฅใ€‚่ฏท้‡่ฏ•ใ€‚' }, + mustBeOnlineToAcceptInvite: { + english: 'You must be online to accept an invitation', + spanish: 'Debes estar en lรญnea para aceptar una invitaciรณn', + brazilian_portuguese: 'Vocรช precisa estar online para aceitar um convite', + tok_pisin: 'Yu mas stap long internet bilong accept invitation', + indonesian: 'Anda harus online untuk menerima undangan', + nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจเคฎเคพ เคนเฅเคจเฅเคชเคฐเฅเค›', + hindi: 'เค†เคฎเค‚เคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค เค†เคชเค•เฅ‹ เค‘เคจเคฒเคพเค‡เคจ เคนเฅ‹เคจเคพ เคนเฅ‹เค—เคพ', + burmese: 'แ€–แ€ญแ€แ€บแ€แ€ฑแ€ซแ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€œแ€€แ€บแ€แ€ถแ€›แ€”แ€บ แ€žแ€„แ€บแ€žแ€Šแ€บ แ€กแ€„แ€บแ€แ€ฌแ€”แ€€แ€บแ€›แ€พแ€ญแ€›แ€™แ€Šแ€บ', + thai: 'เธ„เธธเธ“เธ•เน‰เธญเธ‡เธญเธญเธ™เน„เธฅเธ™เนŒเน€เธžเธทเนˆเธญเธขเธญเธกเธฃเธฑเธšเธ„เธณเน€เธŠเธดเธ', + mandarin: 'ๆ‚จๅฟ…้กปๅœจ็บฟๆ‰่ƒฝๆŽฅๅ—้‚€่ฏท' + }, failedToVote: { english: 'Failed to submit vote', spanish: 'Error al enviar el voto', @@ -1332,6 +1354,8 @@ export const localizations = { english: 'Project', spanish: 'Proyecto', brazilian_portuguese: 'Projeto', + tok_pisin: 'Projek', + indonesian: 'Proyek', nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ', hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ', burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธ', @@ -1484,6 +1508,8 @@ export const localizations = { english: 'Quest', spanish: 'Misiรณn', brazilian_portuguese: 'Missรฃo', + tok_pisin: 'Quest', + indonesian: 'Misi', nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ', hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ', burmese: 'Quest', @@ -2189,6 +2215,8 @@ export const localizations = { english: 'Voting', spanish: 'Votaciรณn', brazilian_portuguese: 'Votaรงรฃo', + tok_pisin: 'Voting', + indonesian: 'Pemungutan Suara', nepali: 'เคฎเคคเคฆเคพเคจ', hindi: 'เคฎเคคเคฆเคพเคจ', burmese: 'แ€™แ€ฒแ€•แ€ฑแ€ธแ€แ€ผแ€„แ€บแ€ธ', @@ -2259,6 +2287,8 @@ export const localizations = { english: 'Asset', spanish: 'Recurso', brazilian_portuguese: 'Recurso', + tok_pisin: 'Asset', + indonesian: 'Aset', nepali: 'เคเคธเฅ‡เคŸ', hindi: 'เคเคธเฅ‡เคŸ', burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏ', @@ -2303,7 +2333,11 @@ export const localizations = { brazilian_portuguese: 'selecionado(s)', tok_pisin: 'selected', indonesian: 'terpilih', - nepali: 'เคšเคฏเคจ เค—เคฐเคฟเคเค•เฅ‹' + nepali: 'เคšเคฏเคจ เค—เคฐเคฟเคเค•เฅ‹', + hindi: 'เคšเคฏเคจเคฟเคค', + burmese: 'แ€›แ€ฝแ€ฑแ€ธแ€แ€ปแ€šแ€บแ€‘แ€ฌแ€ธแ€žแ€Šแ€บ', + thai: 'เธ—เธตเนˆเน€เธฅเธทเธญเธ', + mandarin: 'ๅทฒ้€‰ๆ‹ฉ' }, delete: { english: 'Delete', @@ -2746,6 +2780,8 @@ export const localizations = { english: 'Report Project', spanish: 'Reportar Proyecto', brazilian_portuguese: 'Reportar Projeto', + tok_pisin: 'Reportim Projek', + indonesian: 'Laporkan Proyek', nepali: 'เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', hindi: 'เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', burmese: 'แ€…แ€ฎแ€™แ€ถแ€€แ€ญแ€”แ€บแ€ธแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', @@ -2756,6 +2792,8 @@ export const localizations = { english: 'Report Quest', spanish: 'Reportar Quest', brazilian_portuguese: 'Reportar Quest', + tok_pisin: 'Reportim Quest', + indonesian: 'Laporkan Misi', nepali: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', hindi: 'เค•เฅเคตเฅ‡เคธเฅเคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', burmese: 'Quest แ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', @@ -2766,6 +2804,8 @@ export const localizations = { english: 'Report Asset', spanish: 'Reportar Recurso', brazilian_portuguese: 'Reportar Recurso', + tok_pisin: 'Reportim Asset', + indonesian: 'Laporkan Aset', nepali: 'เคเคธเฅ‡เคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', hindi: 'เคเคธเฅ‡เคŸ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', burmese: 'แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€€แ€ญแ€ฏ แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', @@ -2788,6 +2828,8 @@ export const localizations = { english: 'Report', spanish: 'Reportar', brazilian_portuguese: 'Reportar', + tok_pisin: 'Reportim', + indonesian: 'Laporkan', nepali: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ', hindi: 'เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค•เคฐเฅ‡เค‚', burmese: 'แ€žแ€แ€„แ€บแ€ธแ€•แ€ญแ€ฏแ€ทแ€•แ€ซ', @@ -4706,6 +4748,10 @@ export const localizations = { '{sender} ha solicitado unirse al proyecto "{project}" como {role}', brazilian_portuguese: '{sender} solicitou participar do projeto "{project}" como {role}', + tok_pisin: + '{sender} i askim long joinim projek "{project}" olsem {role}', + indonesian: + '{sender} telah meminta untuk bergabung dengan proyek "{project}" sebagai {role}', nepali: '{sender} เคฒเฅ‡ "{project}" เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸเคฎเคพ {role} เค•เฅ‹ เคฐเฅ‚เคชเคฎเคพ เคธเคพเคฎเฅ‡เคฒ เคนเฅเคจ เค…เคจเฅเคฐเฅ‹เคง เค—เคฐเฅเคจเฅเคญเคฏเฅ‹', hindi: @@ -6173,7 +6219,11 @@ export const localizations = { brazilian_portuguese: 'Depois de', tok_pisin: 'Despela', indonesian: 'Setelah', - nepali: 'เคฌเคพเคฆเคฎเคพ' + nepali: 'เคฌเคพเคฆเคฎเคพ', + hindi: 'เคฌเคพเคฆ', + burmese: 'แ€•แ€ผแ€ฎแ€ธแ€”แ€ฑแ€ฌแ€€แ€บ', + thai: 'เธซเธฅเธฑเธ‡เธˆเธฒเธ', + mandarin: 'ไน‹ๅŽ' }, noLabelSelected: { english: 'No label selected', @@ -9164,7 +9214,15 @@ export const localizations = { indonesian: 'Ditemukan {count} lampiran rusak dengan URL blob di database. Ini menyebabkan kesalahan sinkronisasi dan harus dibersihkan.', nepali: - 'เคกเคพเคŸเคพเคฌเฅ‡เคธเคฎเคพ blob URL เคญเคเค•เฅ‹ {count} เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคซเฅ‡เคฒเคพ เคชเคพเคฐเคฟเคฏเฅ‹เฅค เคฏเคธเคฒเฅ‡ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคจเคฟเคฎเฅเคคเฅเคฏเคพเค‡เคฐเคนเฅ‡เค•เฅ‹ เค› เคฐ เคธเคซเคพ เค—เคฐเฅเคจเฅเคชเคฐเฅเค›เฅค' + 'เคกเคพเคŸเคพเคฌเฅ‡เคธเคฎเคพ blob URL เคญเคเค•เฅ‹ {count} เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคซเฅ‡เคฒเคพ เคชเคพเคฐเคฟเคฏเฅ‹เฅค เคฏเคธเคฒเฅ‡ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคจเคฟเคฎเฅเคคเฅเคฏเคพเค‡เคฐเคนเฅ‡เค•เฅ‹ เค› เคฐ เคธเคซเคพ เค—เคฐเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: + 'เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคฎเฅ‡เค‚ blob URL เค•เฅ‡ เคธเคพเคฅ {count} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคฎเคฟเคฒเคพเฅค เคฏเฅ‡ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคชเฅˆเคฆเคพ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚ เค”เคฐ เค‡เคจเฅเคนเฅ‡เค‚ เคธเคพเคซ เค•เคฟเคฏเคพ เคœเคพเคจเคพ เคšเคพเคนเคฟเคเฅค', + burmese: + 'แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€แ€ฝแ€„แ€บ blob URL แ€™แ€ปแ€ฌแ€ธแ€•แ€ซแ€›แ€พแ€ญแ€žแ€ฑแ€ฌ {count} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€€แ€ญแ€ฏ แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€คแ€กแ€›แ€ฌแ€™แ€ปแ€ฌแ€ธแ€žแ€Šแ€บ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ผแ€…แ€บแ€…แ€ฑแ€•แ€ผแ€ฎแ€ธ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€›แ€™แ€Šแ€บแ‹', + thai: + 'เธžเธšเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒเธžเธฃเน‰เธญเธก URL เธ‚เธญเธ‡ blob เนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธชเธดเนˆเธ‡เน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธเธณเธฅเธฑเธ‡เธ—เธณเนƒเธซเน‰เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเนเธฅเธฐเธ„เธงเธฃเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”', + mandarin: + 'ๅœจๆ•ฐๆฎๅบ“ไธญๅ‘็Žฐ {count} ไธชๅธฆๆœ‰ blob URL ็š„ๆŸๅ้™„ไปถใ€‚่ฟ™ไบ›ๆญฃๅœจๅฏผ่‡ดๅŒๆญฅ้”™่ฏฏ๏ผŒๅบ”่ฏฅๆธ…็†ใ€‚' }, foundCorruptedAttachmentsPlural: { english: @@ -9178,7 +9236,15 @@ export const localizations = { indonesian: 'Ditemukan {count} lampiran rusak dengan URL blob di database. Ini menyebabkan kesalahan sinkronisasi dan harus dibersihkan.', nepali: - 'เคกเคพเคŸเคพเคฌเฅ‡เคธเคฎเคพ blob URL เคญเคเค•เคพ {count} เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคซเฅ‡เคฒเคพ เคชเคพเคฐเคฟเคฏเฅ‹เฅค เคฏเคธเคฒเฅ‡ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคจเคฟเคฎเฅเคคเฅเคฏเคพเค‡เคฐเคนเฅ‡เค•เฅ‹ เค› เคฐ เคธเคซเคพ เค—เคฐเฅเคจเฅเคชเคฐเฅเค›เฅค' + 'เคกเคพเคŸเคพเคฌเฅ‡เคธเคฎเคพ blob URL เคญเคเค•เคพ {count} เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคซเฅ‡เคฒเคพ เคชเคพเคฐเคฟเคฏเฅ‹เฅค เคฏเคธเคฒเฅ‡ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟเคนเคฐเฅ‚ เคจเคฟเคฎเฅเคคเฅเคฏเคพเค‡เคฐเคนเฅ‡เค•เฅ‹ เค› เคฐ เคธเคซเคพ เค—เคฐเฅเคจเฅเคชเคฐเฅเค›เฅค', + hindi: + 'เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคฎเฅ‡เค‚ blob URL เค•เฅ‡ เคธเคพเคฅ {count} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคฎเคฟเคฒเฅ‡เฅค เคฏเฅ‡ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคชเฅˆเคฆเคพ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚ เค”เคฐ เค‡เคจเฅเคนเฅ‡เค‚ เคธเคพเคซ เค•เคฟเคฏเคพ เคœเคพเคจเคพ เคšเคพเคนเคฟเคเฅค', + burmese: + 'แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€แ€ฝแ€„แ€บ blob URL แ€™แ€ปแ€ฌแ€ธแ€•แ€ซแ€›แ€พแ€ญแ€žแ€ฑแ€ฌ {count} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€คแ€กแ€›แ€ฌแ€™แ€ปแ€ฌแ€ธแ€žแ€Šแ€บ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ผแ€…แ€บแ€…แ€ฑแ€•แ€ผแ€ฎแ€ธ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€›แ€™แ€Šแ€บแ‹', + thai: + 'เธžเธšเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒเธžเธฃเน‰เธญเธก URL เธ‚เธญเธ‡ blob เนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธชเธดเนˆเธ‡เน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธเธณเธฅเธฑเธ‡เธ—เธณเนƒเธซเน‰เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเนเธฅเธฐเธ„เธงเธฃเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”', + mandarin: + 'ๅœจๆ•ฐๆฎๅบ“ไธญๅ‘็Žฐ {count} ไธชๅธฆๆœ‰ blob URL ็š„ๆŸๅ้™„ไปถใ€‚่ฟ™ไบ›ๆญฃๅœจๅฏผ่‡ดๅŒๆญฅ้”™่ฏฏ๏ผŒๅบ”่ฏฅๆธ…็†ใ€‚' }, cleanAll: { english: 'Clean All ({count})', @@ -9186,7 +9252,11 @@ export const localizations = { brazilian_portuguese: 'Limpar Tudo ({count})', tok_pisin: 'Klinim Olgeta ({count})', indonesian: 'Bersihkan Semua ({count})', - nepali: 'เคธเคฌเฅˆ เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ ({count})' + nepali: 'เคธเคฌเฅˆ เคธเคซเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ ({count})', + hindi: 'เคธเคญเฅ€ เคธเคพเคซ เค•เคฐเฅ‡เค‚ ({count})', + burmese: 'แ€กแ€ฌแ€ธแ€œแ€ฏแ€ถแ€ธ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซ ({count})', + thai: 'เธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เธ—เธฑเน‰เธ‡เธซเธกเธ” ({count})', + mandarin: 'ๆธ…็†ๅ…จ้ƒจ ({count})' }, cleaning: { english: 'Cleaning...', @@ -9242,7 +9312,11 @@ export const localizations = { brazilian_portuguese: 'Ativos Associados ({count})', tok_pisin: 'Ol Asset i go wantaim ({count})', indonesian: 'Aset Terkait ({count})', - nepali: 'เคธเคฎเฅเคฌเคฆเฅเคง เคเคธเฅ‡เคŸเคนเคฐเฅ‚ ({count})' + nepali: 'เคธเคฎเฅเคฌเคฆเฅเคง เคเคธเฅ‡เคŸเคนเคฐเฅ‚ ({count})', + hindi: 'เคธเค‚เคฌเคฆเฅเคง เคเคธเฅ‡เคŸ ({count})', + burmese: 'แ€†แ€€แ€บแ€…แ€•แ€บแ€žแ€ฑแ€ฌ แ€•แ€ญแ€ฏแ€„แ€บแ€†แ€ญแ€ฏแ€„แ€บแ€™แ€พแ€ฏแ€™แ€ปแ€ฌแ€ธ ({count})', + thai: 'เธชเธดเธ™เธ—เธฃเธฑเธžเธขเนŒเธ—เธตเนˆเน€เธเธตเนˆเธขเธงเธ‚เน‰เธญเธ‡ ({count})', + mandarin: 'ๅ…ณ่”่ต„ไบง ({count})' }, contentLinks: { english: 'Content Links ({count})', @@ -9250,7 +9324,11 @@ export const localizations = { brazilian_portuguese: 'Links de Conteรบdo ({count})', tok_pisin: 'Ol Link bilong Content ({count})', indonesian: 'Tautan Konten ({count})', - nepali: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคฒเคฟเค‚เค•เคนเคฐเฅ‚ ({count})' + nepali: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคฒเคฟเค‚เค•เคนเคฐเฅ‚ ({count})', + hindi: 'เคธเคพเคฎเค—เฅเคฐเฅ€ เคฒเคฟเค‚เค• ({count})', + burmese: 'แ€กแ€€แ€ผแ€ฑแ€ฌแ€„แ€บแ€ธแ€กแ€›แ€ฌ แ€œแ€„แ€ทแ€บแ€แ€บแ€™แ€ปแ€ฌแ€ธ ({count})', + thai: 'เธฅเธดเธ‡เธเนŒเน€เธ™เธทเน‰เธญเธซเธฒ ({count})', + mandarin: 'ๅ†…ๅฎน้“พๆŽฅ ({count})' }, cleanThis: { english: 'Clean This', @@ -9326,7 +9404,11 @@ export const localizations = { brazilian_portuguese: 'Falha ao limpar anexo: {error}', tok_pisin: 'I no inap klinim fayl: {error}', indonesian: 'Gagal membersihkan lampiran: {error}', - nepali: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ: {error}' + nepali: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเฅเคจ เค…เคธเคซเคฒ: {error}', + hindi: 'เคธเค‚เคฒเค—เฅเคจเค• เคธเคพเคซ เค•เคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคตเคฟเคซเคฒ: {error}', + burmese: 'แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแแ€™แ€›แ€•แ€ซ: {error}', + thai: 'เธฅเน‰เธฒเธ‡เน„เธŸเธฅเนŒเนเธ™เธšเน„เธกเนˆเธชเธณเน€เธฃเน‡เธˆ: {error}', + mandarin: 'ๆธ…็†้™„ไปถๅคฑ่ดฅ: {error}' }, cleanAllCorruptedAttachments: { english: 'Clean All Corrupted Attachments', @@ -9352,7 +9434,15 @@ export const localizations = { indonesian: 'Ini akan membersihkan {count} lampiran rusak. Tindakan ini tidak dapat dibatalkan.', nepali: - 'เคฏเคธเคฒเฅ‡ {count} เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + 'เคฏเคธเคฒเฅ‡ {count} เคฌเคฟเค—เฅเคฐเคฟเคเค•เฅ‹ เคธเค‚เคฒเค—เฅเคจเค• เคธเคซเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: + 'เคฏเคน {count} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เค•เฅ‹ เคธเคพเคซ เค•เคฐเฅ‡เค—เคพเฅค เค‡เคธ เค•เคพเคฐเฅเคฏ เค•เฅ‹ เคชเฅ‚เคฐเฅเคตเคตเคค เคจเคนเฅ€เค‚ เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพเฅค', + burmese: + 'แ€คแ€กแ€›แ€ฌแ€žแ€Šแ€บ {count} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซแ€™แ€Šแ€บแ‹ แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', + thai: + 'เธ™เธตเนˆเธˆเธฐเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', + mandarin: + '่ฟ™ๅฐ†ๆธ…็† {count} ไธชๆŸๅ็š„้™„ไปถใ€‚ๆญคๆ“ไฝœๆ— ๆณ•ๆ’คๆถˆใ€‚' }, cleanAllConfirmPlural: { english: @@ -9366,7 +9456,15 @@ export const localizations = { indonesian: 'Ini akan membersihkan {count} lampiran rusak. Tindakan ini tidak dapat dibatalkan.', nepali: - 'เคฏเคธเคฒเฅ‡ {count} เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค' + 'เคฏเคธเคฒเฅ‡ {count} เคฌเคฟเค—เฅเคฐเคฟเคเค•เคพ เคธเค‚เคฒเค—เฅเคจเค•เคนเคฐเฅ‚ เคธเคซเคพ เค—เคฐเฅเคจเฅ‡เค›เฅค เคฏเฅ‹ เค•เคพเคฐเฅเคฏ เคชเฅ‚เคฐเฅเคตเคตเคค เค—เคฐเฅเคจ เคธเค•เคฟเคเคฆเฅˆเคจเฅค', + hindi: + 'เคฏเคน {count} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค•เฅ‹เค‚ เค•เฅ‹ เคธเคพเคซ เค•เคฐเฅ‡เค—เคพเฅค เค‡เคธ เค•เคพเคฐเฅเคฏ เค•เฅ‹ เคชเฅ‚เคฐเฅเคตเคตเคค เคจเคนเฅ€เค‚ เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพเฅค', + burmese: + 'แ€คแ€กแ€›แ€ฌแ€žแ€Šแ€บ {count} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซแ€™แ€Šแ€บแ‹ แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', + thai: + 'เธ™เธตเนˆเธˆเธฐเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', + mandarin: + '่ฟ™ๅฐ†ๆธ…็† {count} ไธชๆŸๅ็š„้™„ไปถใ€‚ๆญคๆ“ไฝœๆ— ๆณ•ๆ’คๆถˆใ€‚' }, partialSuccess: { english: 'Partial Success', From 61518b1c5f5df9fcc2b7390134b59236d0d0b5e0 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 18 Feb 2026 00:02:04 +0000 Subject: [PATCH 094/143] fix: remove duplicate mustBeOnlineToAcceptInvite entry and format Co-authored-by: Keean --- services/localizations.ts | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/services/localizations.ts b/services/localizations.ts index c90b78b0d..797c0329e 100644 --- a/services/localizations.ts +++ b/services/localizations.ts @@ -4748,8 +4748,7 @@ export const localizations = { '{sender} ha solicitado unirse al proyecto "{project}" como {role}', brazilian_portuguese: '{sender} solicitou participar do projeto "{project}" como {role}', - tok_pisin: - '{sender} i askim long joinim projek "{project}" olsem {role}', + tok_pisin: '{sender} i askim long joinim projek "{project}" olsem {role}', indonesian: '{sender} telah meminta untuk bergabung dengan proyek "{project}" sebagai {role}', nepali: @@ -5330,14 +5329,6 @@ export const localizations = { thai: 'เธ›เธเธดเน€เธชเธ˜เธ„เธณเน€เธŠเธดเธ', mandarin: '้‚€่ฏทๅทฒๆ‹’็ป' }, - mustBeOnlineToAcceptInvite: { - english: 'You must be online to accept an invitation', - spanish: 'Debes estar en lรญnea para aceptar una invitaciรณn', - brazilian_portuguese: 'Vocรช precisa estar online para aceitar um convite', - tok_pisin: 'Yu mas stap long internet bilong accept invitation', - indonesian: 'Anda harus online untuk menerima undangan', - nepali: 'เค†เคฎเคจเฅเคคเฅเคฐเคฃ เคธเฅเคตเฅ€เค•เคพเคฐ เค—เคฐเฅเคจ เคคเคชเคพเคˆเค‚ เค…เคจเคฒเคพเค‡เคจเคฎเคพ เคนเฅเคจเฅเคชเคฐเฅเค›' - }, failedToAcceptInvite: { english: 'Failed to accept invitation', spanish: 'Error al aceptar invitaciรณn', @@ -9219,8 +9210,7 @@ export const localizations = { 'เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคฎเฅ‡เค‚ blob URL เค•เฅ‡ เคธเคพเคฅ {count} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคฎเคฟเคฒเคพเฅค เคฏเฅ‡ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคชเฅˆเคฆเคพ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚ เค”เคฐ เค‡เคจเฅเคนเฅ‡เค‚ เคธเคพเคซ เค•เคฟเคฏเคพ เคœเคพเคจเคพ เคšเคพเคนเคฟเคเฅค', burmese: 'แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€แ€ฝแ€„แ€บ blob URL แ€™แ€ปแ€ฌแ€ธแ€•แ€ซแ€›แ€พแ€ญแ€žแ€ฑแ€ฌ {count} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€€แ€ญแ€ฏ แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€คแ€กแ€›แ€ฌแ€™แ€ปแ€ฌแ€ธแ€žแ€Šแ€บ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ผแ€…แ€บแ€…แ€ฑแ€•แ€ผแ€ฎแ€ธ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€›แ€™แ€Šแ€บแ‹', - thai: - 'เธžเธšเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒเธžเธฃเน‰เธญเธก URL เธ‚เธญเธ‡ blob เนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธชเธดเนˆเธ‡เน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธเธณเธฅเธฑเธ‡เธ—เธณเนƒเธซเน‰เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเนเธฅเธฐเธ„เธงเธฃเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”', + thai: 'เธžเธšเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒเธžเธฃเน‰เธญเธก URL เธ‚เธญเธ‡ blob เนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธชเธดเนˆเธ‡เน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธเธณเธฅเธฑเธ‡เธ—เธณเนƒเธซเน‰เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเนเธฅเธฐเธ„เธงเธฃเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”', mandarin: 'ๅœจๆ•ฐๆฎๅบ“ไธญๅ‘็Žฐ {count} ไธชๅธฆๆœ‰ blob URL ็š„ๆŸๅ้™„ไปถใ€‚่ฟ™ไบ›ๆญฃๅœจๅฏผ่‡ดๅŒๆญฅ้”™่ฏฏ๏ผŒๅบ”่ฏฅๆธ…็†ใ€‚' }, @@ -9241,8 +9231,7 @@ export const localizations = { 'เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เคฎเฅ‡เค‚ blob URL เค•เฅ‡ เคธเคพเคฅ {count} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เคฎเคฟเคฒเฅ‡เฅค เคฏเฅ‡ เคธเคฟเค‚เค• เคคเฅเคฐเฅเคŸเคฟเคฏเคพเค‚ เคชเฅˆเคฆเคพ เค•เคฐ เคฐเคนเฅ‡ เคนเฅˆเค‚ เค”เคฐ เค‡เคจเฅเคนเฅ‡เค‚ เคธเคพเคซ เค•เคฟเคฏเคพ เคœเคพเคจเคพ เคšเคพเคนเคฟเคเฅค', burmese: 'แ€’แ€ฑแ€แ€ฌแ€˜แ€ฑแ€ทแ€…แ€บแ€แ€ฝแ€„แ€บ blob URL แ€™แ€ปแ€ฌแ€ธแ€•แ€ซแ€›แ€พแ€ญแ€žแ€ฑแ€ฌ {count} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€แ€ฝแ€ฑแ€ทแ€›แ€พแ€ญแ€•แ€ซแ€žแ€Šแ€บแ‹ แ€คแ€กแ€›แ€ฌแ€™แ€ปแ€ฌแ€ธแ€žแ€Šแ€บ แ€‘แ€•แ€บแ€แ€ฐแ€•แ€ผแ€ฏแ€แ€ผแ€„แ€บแ€ธ แ€กแ€™แ€พแ€ฌแ€ธแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€–แ€ผแ€…แ€บแ€…แ€ฑแ€•แ€ผแ€ฎแ€ธ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€›แ€™แ€Šแ€บแ‹', - thai: - 'เธžเธšเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒเธžเธฃเน‰เธญเธก URL เธ‚เธญเธ‡ blob เนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธชเธดเนˆเธ‡เน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธเธณเธฅเธฑเธ‡เธ—เธณเนƒเธซเน‰เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเนเธฅเธฐเธ„เธงเธฃเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”', + thai: 'เธžเธšเน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒเธžเธฃเน‰เธญเธก URL เธ‚เธญเธ‡ blob เนƒเธ™เธเธฒเธ™เธ‚เน‰เธญเธกเธนเธฅ เธชเธดเนˆเธ‡เน€เธซเธฅเนˆเธฒเธ™เธตเน‰เธเธณเธฅเธฑเธ‡เธ—เธณเนƒเธซเน‰เน€เธเธดเธ”เธ‚เน‰เธญเธœเธดเธ”เธžเธฅเธฒเธ”เนƒเธ™เธเธฒเธฃเธ‹เธดเธ‡เธ„เนŒเนเธฅเธฐเธ„เธงเธฃเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”', mandarin: 'ๅœจๆ•ฐๆฎๅบ“ไธญๅ‘็Žฐ {count} ไธชๅธฆๆœ‰ blob URL ็š„ๆŸๅ้™„ไปถใ€‚่ฟ™ไบ›ๆญฃๅœจๅฏผ่‡ดๅŒๆญฅ้”™่ฏฏ๏ผŒๅบ”่ฏฅๆธ…็†ใ€‚' }, @@ -9439,10 +9428,8 @@ export const localizations = { 'เคฏเคน {count} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค• เค•เฅ‹ เคธเคพเคซ เค•เคฐเฅ‡เค—เคพเฅค เค‡เคธ เค•เคพเคฐเฅเคฏ เค•เฅ‹ เคชเฅ‚เคฐเฅเคตเคตเคค เคจเคนเฅ€เค‚ เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพเฅค', burmese: 'แ€คแ€กแ€›แ€ฌแ€žแ€Šแ€บ {count} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซแ€™แ€Šแ€บแ‹ แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', - thai: - 'เธ™เธตเนˆเธˆเธฐเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', - mandarin: - '่ฟ™ๅฐ†ๆธ…็† {count} ไธชๆŸๅ็š„้™„ไปถใ€‚ๆญคๆ“ไฝœๆ— ๆณ•ๆ’คๆถˆใ€‚' + thai: 'เธ™เธตเนˆเธˆเธฐเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', + mandarin: '่ฟ™ๅฐ†ๆธ…็† {count} ไธชๆŸๅ็š„้™„ไปถใ€‚ๆญคๆ“ไฝœๆ— ๆณ•ๆ’คๆถˆใ€‚' }, cleanAllConfirmPlural: { english: @@ -9461,10 +9448,8 @@ export const localizations = { 'เคฏเคน {count} เคฆเฅ‚เคทเคฟเคค เคธเค‚เคฒเค—เฅเคจเค•เฅ‹เค‚ เค•เฅ‹ เคธเคพเคซ เค•เคฐเฅ‡เค—เคพเฅค เค‡เคธ เค•เคพเคฐเฅเคฏ เค•เฅ‹ เคชเฅ‚เคฐเฅเคตเคตเคค เคจเคนเฅ€เค‚ เค•เคฟเคฏเคพ เคœเคพ เคธเค•เคคเคพเฅค', burmese: 'แ€คแ€กแ€›แ€ฌแ€žแ€Šแ€บ {count} แ€•แ€ปแ€€แ€บแ€…แ€ฎแ€ธแ€”แ€ฑแ€žแ€ฑแ€ฌ แ€–แ€ญแ€ฏแ€„แ€บแ€แ€ฝแ€ฒแ€™แ€ปแ€ฌแ€ธแ€€แ€ญแ€ฏ แ€›แ€พแ€„แ€บแ€ธแ€œแ€„แ€บแ€ธแ€•แ€ซแ€™แ€Šแ€บแ‹ แ€คแ€œแ€ฏแ€•แ€บแ€†แ€ฑแ€ฌแ€„แ€บแ€แ€ปแ€€แ€บแ€€แ€ญแ€ฏ แ€•แ€ผแ€”แ€บแ€œแ€Šแ€บแ€•แ€ผแ€ฏแ€•แ€ผแ€„แ€บแ€แ€ผแ€„แ€บแ€ธ แ€™แ€•แ€ผแ€ฏแ€œแ€ฏแ€•แ€บแ€”แ€ญแ€ฏแ€„แ€บแ€•แ€ซแ‹', - thai: - 'เธ™เธตเนˆเธˆเธฐเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', - mandarin: - '่ฟ™ๅฐ†ๆธ…็† {count} ไธชๆŸๅ็š„้™„ไปถใ€‚ๆญคๆ“ไฝœๆ— ๆณ•ๆ’คๆถˆใ€‚' + thai: 'เธ™เธตเนˆเธˆเธฐเธ—เธณเธ„เธงเธฒเธกเธชเธฐเธญเธฒเธ”เน„เธŸเธฅเนŒเนเธ™เธšเธ—เธตเนˆเน€เธชเธตเธขเธซเธฒเธข {count} เน„เธŸเธฅเนŒ เธเธฒเธฃเธเธฃเธฐเธ—เธณเธ™เธตเน‰เน„เธกเนˆเธชเธฒเธกเธฒเธฃเธ–เธขเธเน€เธฅเธดเธเน„เธ”เน‰', + mandarin: '่ฟ™ๅฐ†ๆธ…็† {count} ไธชๆŸๅ็š„้™„ไปถใ€‚ๆญคๆ“ไฝœๆ— ๆณ•ๆ’คๆถˆใ€‚' }, partialSuccess: { english: 'Partial Success', From d95bdb0c3ef9354b2e64930599df0650369776e4 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Wed, 18 Feb 2026 11:26:24 -0800 Subject: [PATCH 095/143] Add line-ending policy for consistent working tree state. Introduce repo-level .gitattributes and .editorconfig rules, and set VS Code default EOL to LF to prevent phantom modified files on Windows. Co-authored-by: Cursor --- .editorconfig | 15 +++++++++++++++ .gitattributes | 6 ++++++ .vscode/settings.json | 1 + 3 files changed, 22 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..93e1febb2 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{bat,cmd,ps1}] +end_of_line = crlf diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..1ec875276 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +* text=auto eol=lf + +# Keep Windows-native script endings for better local tooling compatibility. +*.bat text eol=crlf +*.cmd text eol=crlf +*.ps1 text eol=crlf diff --git a/.vscode/settings.json b/.vscode/settings.json index be018b0d9..0c3f9f28e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "editor.defaultFormatter": "esbenp.prettier-vscode", + "files.eol": "\n", "tailwindCSS.classAttributes": [ "class", "className", From 0c946d27f69d987aba4df0d939f40d7c770d577f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 19 Feb 2026 00:12:30 +0000 Subject: [PATCH 096/143] rename localization migration to latest timestamp Co-authored-by: Keean --- ...> 20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename supabase/migrations/{20260217000000_add_hindi_burmese_thai_mandarin_ui_ready.sql => 20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql} (100%) diff --git a/supabase/migrations/20260217000000_add_hindi_burmese_thai_mandarin_ui_ready.sql b/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql similarity index 100% rename from supabase/migrations/20260217000000_add_hindi_burmese_thai_mandarin_ui_ready.sql rename to supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql From 3c3165d900d90d4616c85014af33c45add0cfd90 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 19 Feb 2026 00:15:27 +0000 Subject: [PATCH 097/143] add EAS build cache provider Co-authored-by: Keean --- app.config.ts | 3 +- package-lock.json | 669 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 1 + 3 files changed, 670 insertions(+), 3 deletions(-) diff --git a/app.config.ts b/app.config.ts index fe1100ff0..dfb334961 100644 --- a/app.config.ts +++ b/app.config.ts @@ -144,7 +144,8 @@ export default ({ config }: ConfigContext): ExpoConfig => }, runtimeVersion: { policy: 'appVersion' - } + }, + buildCacheProvider: 'eas' }); const withUseThirdPartySQLitePod: ConfigPlugin = (expoConfig) => { diff --git a/package-lock.json b/package-lock.json index c193039d4..67b6d2b0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "langquest", - "version": "2.0.14", + "version": "2.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "langquest", - "version": "2.0.14", + "version": "2.1.0", "hasInstallScript": true, "dependencies": { "@azure/core-asynciterator-polyfill": "^1.0.2", @@ -134,6 +134,7 @@ "default-gateway": "^7.2.2", "drizzle-kit": "^0.31.9", "drizzle-orm": "^0.45.1", + "eas-build-cache-provider": "^18.0.1", "eslint": "^9.38.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-react": "^7.37.4", @@ -7015,6 +7016,17 @@ "win32" ] }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/core": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", @@ -13468,6 +13480,574 @@ "node": ">= 0.4" } }, + "node_modules/eas-build-cache-provider": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/eas-build-cache-provider/-/eas-build-cache-provider-18.0.1.tgz", + "integrity": "sha512-a4LJYBFAUtnGUUOfb4UVrkJ7tDGoDI2lZMsx4m93097WrdwXKQImt5uXNikNx9oyBUINrbPAyVh0uhyeDl1pgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "7.23.5", + "@expo/config": "11.0.10", + "@expo/spawn-async": "^1.7.2", + "chalk": "4.1.2", + "figures": "3.2.0", + "fs-extra": "11.2.0", + "getenv": "1.0.0", + "log-symbols": "4.1.0", + "semver": "7.5.2", + "terminal-link": "2.1.1", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/config": { + "version": "11.0.10", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-11.0.10.tgz", + "integrity": "sha512-8S8Krr/c5lnl0eF03tA2UGY9rGBhZcbWKz2UWw5dpL/+zstwUmog8oyuuC8aRcn7GiTQLlbBkxcMeT8sOGlhbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~10.0.2", + "@expo/config-types": "^53.0.4", + "@expo/json-file": "^9.1.4", + "deepmerge": "^4.3.1", + "getenv": "^1.0.0", + "glob": "^10.4.2", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "3.35.0" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/config-plugins": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-10.0.3.tgz", + "integrity": "sha512-fjCckkde67pSDf48x7wRuPsgQVIqlDwN7NlOk9/DFgQ1hCH0L5pGqoSmikA1vtAyiA83MOTpkGl3F3wyATyUog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@expo/config-types": "^53.0.4", + "@expo/json-file": "~9.1.4", + "@expo/plist": "^0.3.4", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^10.4.2", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/config-plugins/node_modules/getenv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/config-types": { + "version": "53.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-53.0.5.tgz", + "integrity": "sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g==", + "dev": true, + "license": "MIT" + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/config/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/json-file": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.1.5.tgz", + "integrity": "sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.3" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@expo/plist": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.3.5.tgz", + "integrity": "sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.2.3", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/eas-build-cache-provider/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/eas-build-cache-provider/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/eas-build-cache-provider/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eas-build-cache-provider/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eas-build-cache-provider/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/eas-build-cache-provider/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eas-build-cache-provider/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/eas-build-cache-provider/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eas-build-cache-provider/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eas-build-cache-provider/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/eas-build-cache-provider/node_modules/getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eas-build-cache-provider/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eas-build-cache-provider/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eas-build-cache-provider/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/eas-build-cache-provider/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/eas-build-cache-provider/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/eas-build-cache-provider/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eas-build-cache-provider/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eas-build-cache-provider/node_modules/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eas-build-cache-provider/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eas-build-cache-provider/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eas-build-cache-provider/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/eas-build-cache-provider/node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/eas-build-cache-provider/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eas-build-cache-provider/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true, + "license": "0BSD" + }, + "node_modules/eas-build-cache-provider/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/eas-build-cache-provider/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/eas-build-cache-provider/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -16911,6 +17491,32 @@ "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", "license": "MIT" }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -25424,6 +26030,32 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/string-width/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -25538,6 +26170,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -27515,6 +28161,25 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 4507a36dc..7d57532f2 100644 --- a/package.json +++ b/package.json @@ -184,6 +184,7 @@ "default-gateway": "^7.2.2", "drizzle-kit": "^0.31.9", "drizzle-orm": "^0.45.1", + "eas-build-cache-provider": "^18.0.1", "eslint": "^9.38.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-react": "^7.37.4", From 0fd5f7464acda755279f7e24aa720574f330e8ed Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 19 Feb 2026 00:17:54 +0000 Subject: [PATCH 098/143] fix clean-rebuild scripts to use --clean flag Co-authored-by: Keean --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7d57532f2..b656ff381 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "export:analyze": "npx expo-atlas .expo/atlas.jsonl", "generate-env": "npx tsx ./scripts/generate-env.ts", "reset-project": "node ./scripts/reset-project.js", - "clean-rebuild:android": "git clean -xdf node_modules package-lock.json android ios && npm i && npx expo prebuild --platform android && cd android && gradlew clean && cd ..", - "clean-rebuild:ios": "git clean -xdf node_modules package-lock.json && npm i && npx expo prebuild --platform ios", + "clean-rebuild:android": "git clean -xdf node_modules package-lock.json && npm i && npx expo prebuild --platform android --clean", + "clean-rebuild:ios": "git clean -xdf node_modules package-lock.json && npm i && npx expo prebuild --platform ios --clean", "android": "expo run:android --variant debugOptimized --device", "android:preview": "npx cross-env EXPO_PUBLIC_APP_VARIANT=preview expo run:android --device --variant release", "android:release": "npx cross-env EXPO_PUBLIC_APP_VARIANT=production expo run:android --device --variant release", From e9d42b3bb659fcda96823ed2f1bdf218a9c807c6 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Wed, 18 Feb 2026 18:23:56 -0600 Subject: [PATCH 099/143] Add "development-simulator" build profile to eas.json --- eas.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/eas.json b/eas.json index 651219321..51e1bc58b 100644 --- a/eas.json +++ b/eas.json @@ -43,6 +43,14 @@ "ios": { "simulator": true } + }, + "development-simulator": { + "developmentClient": true, + "distribution": "internal", + "ios": { + "simulator": true + }, + "environment": "development" } }, "submit": { From 8a7d05b151810d66bd257452f25397deaeda68db Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Wed, 18 Feb 2026 17:49:53 -0800 Subject: [PATCH 100/143] fixed Play All with expo-audio --- app/_layout.tsx | 24 ++++++++++++------------ contexts/AudioContext.tsx | 18 ++++++++++++++---- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/app/_layout.tsx b/app/_layout.tsx index 33672aab4..dcf6cde28 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -143,12 +143,12 @@ export default function RootLayout() { return ( - - - - - - + + + + + + @@ -164,12 +164,12 @@ export default function RootLayout() { - - - - - - + + + + + + ); } diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index 4c95b0684..09aeb952b 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -466,13 +466,18 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } // Set up listener for position updates + natural completion. + // Track whether the player has actually started playing, used as a guard + // so that the !status.playing fallback doesn't fire on initial load. + let hasStartedPlaying = false; soundListenerRef.current = sound.addListener( 'playbackStatusUpdate', (status) => { - if (!sound.isLoaded) { + if (!status.isLoaded) { return; } + if (status.playing) hasStartedPlaying = true; + const now = Date.now(); const guarded = now < statusGuardUntilMsRef.current; const currentSeg = @@ -533,7 +538,10 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { return; } - if (status.didJustFinish) { + // expo-audio doesn't fire didJustFinish reliably on all platforms. + // Fallback: treat playingโ†’false (after having started) as completion, + // since the listener is always removed before any manual pause/stop. + if (status.didJustFinish || (hasStartedPlaying && !status.playing)) { if (isAdvancingSegmentRef.current) return; isAdvancingSegmentRef.current = true; clearStatusListener(); @@ -698,7 +706,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { /** * Hook to access audio playback functionality. * @param options - Configuration options - * @param options.stopOnUnmount - Whether to stop audio when component unmounts (default: true) + * @param options.stopOnUnmount - Whether to stop audio when component unmounts (default: false) */ export function useAudio(options?: { stopOnUnmount?: boolean }) { const context = useContext(AudioContext); @@ -706,7 +714,9 @@ export function useAudio(options?: { stopOnUnmount?: boolean }) { throw new Error('useAudio must be used within an AudioProvider'); } - const stopOnUnmount = options?.stopOnUnmount ?? true; + // Default to false so transient/virtualized consumers (e.g., list cards) + // do not accidentally stop shared playback when they unmount. + const stopOnUnmount = options?.stopOnUnmount ?? false; const stopCurrentSoundRef = React.useRef(context.stopCurrentSound); // Keep ref updated with latest function From 1282560c81f3fdd43f70f4c04e6e92dad1f6181a Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Wed, 18 Feb 2026 19:02:50 -0800 Subject: [PATCH 101/143] prettier and lint --- contexts/AudioContext.tsx | 25 ++++++++++++------------- services/assetAudio.ts | 18 ++++++++++-------- views/new/BibleAssetsView.tsx | 14 +++++++++----- 3 files changed, 31 insertions(+), 26 deletions(-) diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index 09aeb952b..c0397ebb7 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -1,8 +1,5 @@ -import { - createAudioPlayer, - setAudioModeAsync, - type AudioPlayer -} from 'expo-audio'; +import { createAudioPlayer, setAudioModeAsync } from 'expo-audio'; +import type { AudioPlayer } from 'expo-audio'; import React, { createContext, useContext, useRef, useState } from 'react'; import type { SharedValue } from 'react-native-reanimated'; import { Easing, useSharedValue, withTiming } from 'react-native-reanimated'; @@ -206,7 +203,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { if (!preloaded) return; try { preloaded.sound.pause(); - preloaded.sound.release(); + await Promise.resolve(preloaded.sound.release()); } catch { // Ignore preload unload errors } @@ -232,12 +229,12 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const shouldSeek = segment.startMs != null && segment.startMs > 0; if (shouldSeek) { - sound.seekTo(segment.startMs! / 1000); + await sound.seekTo(segment.startMs! / 1000); } if (sessionId !== playbackSessionRef.current) { try { - sound.release(); + void sound.release(); } catch { // Ignore stale preload unload errors } @@ -326,7 +323,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { const setPosition = async (newPosition: number) => { if (soundRef.current && isPlaying) { - soundRef.current.seekTo(newPosition / 1000); + await soundRef.current.seekTo(newPosition / 1000); setPositionState(newPosition); cumulativePositionSharedRef.current.value = newPosition; positionSharedRef.current.value = newPosition; @@ -411,7 +408,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { // Seek to startMs before starting playback (unless preloaded segment // was already seeked during background preload). if (shouldSeek && !canUsePreloaded) { - sound.seekTo(segment.startMs! / 1000); + await sound.seekTo(segment.startMs! / 1000); } // Get initial status to set the duration @@ -484,8 +481,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { sequenceSegments.current[currentSequenceIndex.current]; const cumulativeDuration = cumulativeDurationBeforeCurrent(); const segStartMs = currentSeg?.startMs ?? 0; - const currentPositionMs = - (status.currentTime ?? sound.currentTime) * 1000; + const currentPositionMs = status.currentTime * 1000; const positionInSegment = currentPositionMs - segStartMs; const totalPosition = cumulativeDuration + Math.max(0, positionInSegment); @@ -516,7 +512,10 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { ? Number.POSITIVE_INFINITY : totalPosition - predicted; if (Math.abs(drift) >= DRIFT_CORRECTION_THRESHOLD_MS) { - startPredictedProgressAnimation(totalPosition, currentTargetTotal); + startPredictedProgressAnimation( + totalPosition, + currentTargetTotal + ); } } } diff --git a/services/assetAudio.ts b/services/assetAudio.ts index 099de4e07..b8f29746b 100644 --- a/services/assetAudio.ts +++ b/services/assetAudio.ts @@ -70,7 +70,9 @@ function computeTotalDuration(segments: AssetAudioSegment[]): number { return segments.reduce((sum, seg) => sum + effectiveDuration(seg), 0); } -const waitForPlayerLoaded = async (player: ReturnType) => { +const waitForPlayerLoaded = async ( + player: ReturnType +) => { if (player.isLoaded) return; await new Promise((resolve) => { const timeoutId = setTimeout(resolve, 5000); @@ -114,7 +116,7 @@ async function resolveAudioValue( // --- Direct local path (from saveAudioLocally) --- if (audioValue.startsWith('local/')) { const constructedUri = await getLocalAttachmentUriWithOPFS(audioValue); - if (await fileExists(constructedUri)) return constructedUri; + if (fileExists(constructedUri)) return constructedUri; // Fallback: search attachment queue if (system.permAttachmentQueue) { @@ -132,7 +134,7 @@ async function resolveAudioValue( const foundUri = system.permAttachmentQueue.getLocalUri( attachment.local_uri ); - if (await fileExists(foundUri)) return foundUri; + if (fileExists(foundUri)) return foundUri; } } @@ -142,7 +144,7 @@ async function resolveAudioValue( // --- Full file URI --- if (audioValue.startsWith('file://')) { - if (await fileExists(audioValue)) return audioValue; + if (fileExists(audioValue)) return audioValue; // Fallback: search attachment queue by filename if (system.permAttachmentQueue) { @@ -160,7 +162,7 @@ async function resolveAudioValue( const foundUri = system.permAttachmentQueue.getLocalUri( attachment.local_uri ); - if (await fileExists(foundUri)) return foundUri; + if (fileExists(foundUri)) return foundUri; } } } @@ -179,7 +181,7 @@ async function resolveAudioValue( const localUri = system.permAttachmentQueue.getLocalUri( attachment.local_uri ); - if (await fileExists(localUri)) return localUri; + if (fileExists(localUri)) return localUri; } } @@ -202,9 +204,9 @@ async function findFallbackUri( for (const value of fallbackLink.audio) { if (value.startsWith('local/')) { const uri = await getLocalAttachmentUriWithOPFS(value); - if (await fileExists(uri)) return uri; + if (fileExists(uri)) return uri; } else if (value.startsWith('file://')) { - if (await fileExists(value)) return value; + if (fileExists(value)) return value; } } return null; diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index f75654f9f..3cfee4f93 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -52,7 +52,12 @@ import { UserPlusIcon } from 'lucide-react-native'; import React from 'react'; -import { ActivityIndicator, InteractionManager, Pressable, View } from 'react-native'; +import { + ActivityIndicator, + InteractionManager, + Pressable, + View +} from 'react-native'; import type { FlatList } from 'react-native'; import Animated, { cancelAnimation, @@ -599,8 +604,8 @@ export default function BibleAssetsView() { type Quest = typeof questTable.$inferSelect; // Use passed quest data if available (instant!), otherwise query - const { data: queriedQuestData, refetch: refetchQuest } = useHybridData( - { + const { data: queriedQuestData, refetch: refetchQuest } = + useHybridData({ dataType: 'current-quest', queryKeyParams: [currentQuestId], offlineQuery: toCompilableQuery( @@ -621,8 +626,7 @@ export default function BibleAssetsView() { enableCloudQuery: !!currentQuestId, enableOfflineQuery: !!currentQuestId, getItemId: (item) => item.id - } - ); + }); // Prefer queried data (fresh) over navigation data (may be stale) // This ensures UI updates immediately after publishing without needing to navigate away From 3e7907f2ed49937be5a3f9962cfcae739adf96d0 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Thu, 19 Feb 2026 14:56:33 -0800 Subject: [PATCH 102/143] getting trim modal to work again and performance improvements - including performance improvements to the BibleAssetsView which was slowing everything down. --- hooks/db/useAssets.ts | 130 ++++------ views/new/AssetCardItem.tsx | 6 +- views/new/BibleAssetListItem.tsx | 6 +- views/new/BibleAssetsView.tsx | 45 ++-- .../components/BibleRecordingView.tsx | 23 +- .../components/RecordSelectionControls.tsx | 23 +- .../components/RecordingViewSimplified.tsx | 23 +- .../recording/components/TrimSegmentModal.tsx | 240 +++++++----------- views/new/recording/hooks/useTrimModal.ts | 147 +++-------- 9 files changed, 257 insertions(+), 386 deletions(-) diff --git a/hooks/db/useAssets.ts b/hooks/db/useAssets.ts index 212e0b8e0..d19a8cb1a 100644 --- a/hooks/db/useAssets.ts +++ b/hooks/db/useAssets.ts @@ -46,6 +46,52 @@ export type QuestAssetLink = InferSelectModel; export type AssetContent = InferSelectModel; export type Vote = InferSelectModel; +type AssetRowWithTagIds = AssetQuestLink & { + tag_ids?: unknown; + metadata?: unknown; +}; + +function normalizeTagIds(value: unknown): string[] { + if (!value) return []; + if (Array.isArray(value)) { + return value.map((v) => String(v)).filter(Boolean); + } + if (typeof value !== 'string') return []; + + const trimmed = value.trim(); + if (!trimmed) return []; + + try { + const parsed = JSON.parse(trimmed) as unknown; + if (!Array.isArray(parsed)) return []; + return parsed.map((v) => String(v)).filter(Boolean); + } catch { + return []; + } +} + +function normalizeMetadataValue(value: unknown): unknown { + if (value == null) return value; + if (typeof value !== 'string') return value; + + const trimmed = value.trim(); + if (!trimmed) return value; + + try { + return JSON.parse(trimmed) as unknown; + } catch { + return value; + } +} + +function normalizeAssetQuestLinkRow(row: AssetRowWithTagIds): AssetQuestLink { + return { + ...row, + tag_ids: normalizeTagIds(row.tag_ids), + metadata: normalizeMetadataValue(row.metadata) + } as AssetQuestLink; +} + /** * Returns a single asset by ID using hybrid fetch */ @@ -1103,31 +1149,9 @@ export function useAssetsByQuest( .offset(offset); // Convert tag_ids from JSON string to array for consistency with cloud query - const processedAssets = assets.map((asset) => { - let tagIds: string[] = []; - try { - if (asset.tag_ids) { - const parsed = JSON.parse(String(asset.tag_ids)); - tagIds = Array.isArray(parsed) ? (parsed as string[]) : []; - } - if (asset.metadata) { - const parsed = JSON.parse(String(asset.metadata)); - asset.metadata = parsed as string | null; - } - } catch (error) { - console.warn( - '[useAssetsByQuest] Failed to parse tag_ids:', - asset.tag_ids, - error - ); - tagIds = []; - } - - return { - ...asset, - tag_ids: tagIds - } as AssetQuestLink; - }); + const processedAssets = assets.map((asset) => + normalizeAssetQuestLinkRow(asset as AssetRowWithTagIds) + ); return processedAssets; } catch (error) { @@ -1286,31 +1310,9 @@ export function useLocalAssetsByQuest( // No .limit() or .offset() - fetch everything // Process tag_ids and metadata - const processedAssets = assets.map((asset) => { - let tagIds: string[] = []; - try { - if (asset.tag_ids) { - const parsed = JSON.parse(String(asset.tag_ids)); - tagIds = Array.isArray(parsed) ? (parsed as string[]) : []; - } - if (asset.metadata) { - const parsed = JSON.parse(String(asset.metadata)); - asset.metadata = parsed as string | null; - } - } catch (error) { - console.warn( - '[useLocalAssetsByQuest] Failed to parse tag_ids:', - asset.tag_ids, - error - ); - tagIds = []; - } - - return { - ...asset, - tag_ids: tagIds - } as AssetQuestLink; - }); + const processedAssets = assets.map((asset) => + normalizeAssetQuestLinkRow(asset as AssetRowWithTagIds) + ); return processedAssets; } catch (error) { @@ -1425,31 +1427,9 @@ function _useLocalAssetsByQuestInfinite( .offset(offset); // Convert tag_ids from JSON string to array for consistency with cloud query - const processedAssets = assets.map((asset) => { - let tagIds: string[] = []; - try { - if (asset.tag_ids) { - const parsed = JSON.parse(String(asset.tag_ids)); - tagIds = Array.isArray(parsed) ? (parsed as string[]) : []; - } - if (asset.metadata) { - const parsed = JSON.parse(String(asset.metadata)); - asset.metadata = parsed as string | null; - } - } catch (error) { - console.warn( - '[useAssetsByQuest] Failed to parse tag_ids:', - asset.tag_ids, - error - ); - tagIds = []; - } - - return { - ...asset, - tag_ids: tagIds - } as AssetQuestLink; - }); + const processedAssets = assets.map((asset) => + normalizeAssetQuestLinkRow(asset as AssetRowWithTagIds) + ); return processedAssets; } catch (error) { diff --git a/views/new/AssetCardItem.tsx b/views/new/AssetCardItem.tsx index a87634d8b..d0e0bf81a 100644 --- a/views/new/AssetCardItem.tsx +++ b/views/new/AssetCardItem.tsx @@ -286,7 +286,11 @@ const AssetCardItemComponent: React.FC = ({ ); return ( - + = ({ ); return ( - + ; + // ============================================================================ // HELPER FUNCTIONS (moved outside component for better performance) // ============================================================================ @@ -953,26 +955,27 @@ export default function BibleAssetsView() { assetsRef.current = assets; }, [assets]); - // Handler for selecting/deselecting an asset for recording insertion - // Optimized with ref to avoid recreation on every asset change - // Handle single selection for published quests (for playAll start point) + // Ref to avoid recreating handleToggleSelect on every selection change. + // Without this, every toggle creates a new Set โ†’ new handleToggleSelect โ†’ + // new renderItem โ†’ DraggableAssetItem's React.memo sees new onToggleSelect โ†’ + // ALL items re-render instead of just the toggled one. + const selectedAssetIdsRef = React.useRef(selectedAssetIds); + selectedAssetIdsRef.current = selectedAssetIds; + const handleToggleSelect = React.useCallback( (assetId: string) => { if (isPublished) { - // Single selection: if already selected, deselect. Otherwise, select only this one. - if (selectedAssetIds.has(assetId)) { + if (selectedAssetIdsRef.current.has(assetId)) { cancelSelection(); } else { - // Clear all and select only this one cancelSelection(); toggleSelect(assetId); } } else { - // Multi-selection for batch operations when not published toggleSelect(assetId); } }, - [isPublished, selectedAssetIds, cancelSelection, toggleSelect] + [isPublished, cancelSelection, toggleSelect] ); const handleSelectForRecording = React.useCallback( @@ -2808,13 +2811,11 @@ export default function BibleAssetsView() { handleCloseTrimModal, trimTargetAsset, trimWaveformData, - trimAudioUris, - trimAudioDurations, + trimAssetAudio, canTrimSelected } = useTrimModal({ selectedAssetIds, - assets, - getAssetAudioUris + assets }); // Handle publish button press with useMutation @@ -3331,7 +3332,8 @@ export default function BibleAssetsView() { autoscrollThreshold={0.15} autoscrollSpeedScale={1.5} onScroll={scrollHandler} - ItemSeparatorComponent={() => } + ItemSeparatorComponent={ListItemSeparator} + windowSize={10} ListFooterComponent={ <> {/* Loading indicator for infinite scroll */} @@ -3582,14 +3584,15 @@ export default function BibleAssetsView() { )} {/* Trim Segment Modal */} - + {isTrimModalOpen && ( + + )} {/* Private Access Gate Modal for Membership Requests */} {isPrivateProject && showPrivateAccessModal && ( diff --git a/views/new/recording/components/BibleRecordingView.tsx b/views/new/recording/components/BibleRecordingView.tsx index 184fd500c..7f2482a56 100644 --- a/views/new/recording/components/BibleRecordingView.tsx +++ b/views/new/recording/components/BibleRecordingView.tsx @@ -2298,14 +2298,12 @@ const BibleRecordingView = ({ handleCloseTrimModal, trimTargetAsset, trimWaveformData, - trimAudioUris, - trimAudioDurations, + trimAssetAudio, canTrimSelected, setWaveformData: setTrimWaveformData } = useTrimModal({ selectedAssetIds, - assets, - getAssetAudioUris + assets }); // ============================================================================ @@ -2827,14 +2825,15 @@ const BibleRecordingView = ({ )} - + {isTrimModalOpen && ( + + )} {/* Rename drawer */} void; onMerge: () => void; onDelete: () => void; + onTrim?: () => void; allowSelectAll?: boolean; allSelected?: boolean; onSelectAll?: () => void; @@ -35,6 +36,7 @@ export const RecordSelectionControls = React.memo( onCancel, onMerge, onDelete, + onTrim, allowSelectAll = false, allSelected = false, onSelectAll, @@ -43,6 +45,8 @@ export const RecordSelectionControls = React.memo( showMerge = true }: RecordSelectionControlsProps) { const { t } = useLocalization(); + const shouldShowTrim = selectedCount === 1 && !!onTrim; + const shouldShowMerge = selectedCount >= 2; return ( )} - {showMerge && ( + {shouldShowTrim ? ( + + ) : showMerge && shouldShowMerge ? ( - )} + ) : null} - - - ); - }, [ - isSelectionMode, - showAddVerseButton, - verseToAdd, - isVADRecording, - handleAddNextVerse - ]); - - const boundaryComponent = useMemo( - () => ( - - - - {/* Language-agnostic visual: mic + circle-plus = "add recording here" */} - - - - - - {addButtonComponent} - - ), - [addButtonComponent] - ); - - return ( - - {/* Full-screen VAD overlay - takes over entire screen */} - {showFullScreenOverlay && ( - { - // Cancel VAD mode - setIsVADActive(false); - }} - /> - )} - - {/* Header */} - - - - - {bookChapterLabelFull || bookChapterLabel} - - {/* - {t('doRecord')} - */} - - - {assets.length > 0 && ( - - )} - - {assets.length} {t('assets').toLowerCase()} - - - - - {/* {(isRecording || isVADRecording)? ( */} - {isVADActive ? ( - - {highlightedItemVerse - ? `${t('recording')}: ${formatVerseRange(highlightedItemVerse)}` - : t('recording')} - - ) : ( - - {highlightedItemVerse - ? `${t('recordTo')}: ${formatVerseRange(highlightedItemVerse)}` - : `${t('noLabelSelected')}`} - - )} - - {/* Scrollable list area - full height with padding for controls */} - - - - ref={wheelRef} - value={insertionIndex} - onChange={(newIndex) => { - const item = itemsForWheel[newIndex]; - const itemDesc = item - ? isPill(item) - ? `pill-${item.verse?.from ?? 'null'}` - : item.name - : 'end'; - console.log( - `๐ŸŽก Wheel onChange: ${insertionIndex} โ†’ ${newIndex} | ${itemDesc} ${item?.order_index}` - ); - setInsertionIndex(newIndex); - }} - rowHeight={ROW_HEIGHT} - className="h-full flex-1" - bottomInset={footerHeight} - boundaryComponent={boundaryComponent} - data={itemsForWheel} - renderItem={renderWheelItem} - /> - - - - {/* Bottom controls - absolutely positioned */} - - {isSelectionMode ? ( - - - - ) : ( - setShowVADSettings(true)} - onAutoCalibratePress={() => { - setAutoCalibrateOnOpen(true); - setShowVADSettings(true); - }} - currentEnergy={currentEnergy} - vadThreshold={vadThreshold} - energyShared={energyShared} - isRecordingShared={isRecordingShared} - displayMode={vadDisplayMode} - /> - )} - - - {isTrimModalOpen && ( - - )} - - {/* Rename drawer */} - { - setShowRenameDrawer(open); - if (!open) { - setRenameAssetId(null); - } - }} - onSave={handleSaveRename} - /> - - {/* VAD Settings Drawer */} - { - setShowVADSettings(open); - // Reset auto-calibrate flag when drawer closes - if (!open) { - setAutoCalibrateOnOpen(false); - } - }} - minSegmentLength={vadMinSegmentLength} - onMinSegmentLengthChange={setVadMinSegmentLength} - threshold={vadThreshold} - onThresholdChange={setVadThreshold} - silenceDuration={vadSilenceDuration} - onSilenceDurationChange={setVadSilenceDuration} - isVADActive={isVADActive} - displayMode={vadDisplayMode} - onDisplayModeChange={setVadDisplayMode} - autoCalibrateOnOpen={autoCalibrateOnOpen} - energyShared={energyShared} - /> - - {/* Recording Help Dialog - shown once on first visit */} - - - ); -}; - -export default BibleRecordingView; From d57f7ffd9f1acaeb9299455e4bf68216953870d6 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Thu, 19 Feb 2026 19:02:30 -0800 Subject: [PATCH 105/143] big improvent to end trim precision --- contexts/AudioContext.tsx | 59 ++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/contexts/AudioContext.tsx b/contexts/AudioContext.tsx index b4e91aeee..75ca81512 100644 --- a/contexts/AudioContext.tsx +++ b/contexts/AudioContext.tsx @@ -232,7 +232,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { if (!segment) return; try { - const sound = createAudioPlayer(segment.uri); + const sound = createAudioPlayer(segment.uri, { updateInterval: 50 }); await waitForPlayerLoaded(sound); const shouldSeek = segment.startMs != null && segment.startMs > 0; @@ -407,7 +407,7 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { sound = preloaded.sound; preloadedSegmentRef.current = null; } else { - sound = createAudioPlayer(segment.uri); + sound = createAudioPlayer(segment.uri, { updateInterval: 50 }); await waitForPlayerLoaded(sound); } @@ -532,31 +532,6 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { statusGuardUntilMsRef.current = (animationStartWallClockMsRef.current ?? now) + 1000; - - // Precise endpoint timer: status callbacks fire on an interval - // and can overshoot endMs by hundreds of ms. A setTimeout - // started from the actual playback start is far more accurate. - if (currentSeg?.endMs != null) { - const remainingMs = currentSeg.endMs - currentPositionMs; - if (remainingMs > 0) { - clearEndpointTimer(); - const capturedSession = playbackSessionRef.current; - endpointTimerRef.current = setTimeout(() => { - endpointTimerRef.current = null; - if (capturedSession !== playbackSessionRef.current) return; - if (isAdvancingSegmentRef.current) return; - isAdvancingSegmentRef.current = true; - clearEndpointTimer(); - clearStatusListener(); - sound.pause(); - sound.release(); - if (soundRef.current === sound) { - soundRef.current = null; - } - void playNextInSequence(); - }, remainingMs); - } - } } const guarded = now < statusGuardUntilMsRef.current; @@ -576,10 +551,11 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { } } - // Fallback endMs enforcement via status callback (timer above is primary). + // Safety-net: if the setTimeout timer hasn't fired yet but the + // native position has already reached/passed endMs, stop now. if ( currentSeg?.endMs != null && - currentPositionMs >= currentSeg.endMs && + currentPositionMs >= currentSeg.endMs - 10 && !isAdvancingSegmentRef.current ) { isAdvancingSegmentRef.current = true; @@ -613,6 +589,31 @@ export function AudioProvider({ children }: { children: React.ReactNode }) { ); sound.play(); + // Precise endpoint timer started immediately after play(), using the + // pre-calculated clip duration. This avoids waiting for a status + // callback (which can be stale/late) before scheduling the stop. + if (segment.endMs != null) { + const seekPos = segment.startMs ?? 0; + const clipDurationMs = segment.endMs - seekPos; + if (clipDurationMs > 0) { + clearEndpointTimer(); + const capturedSession = playbackSessionRef.current; + endpointTimerRef.current = setTimeout(() => { + endpointTimerRef.current = null; + if (capturedSession !== playbackSessionRef.current) return; + if (isAdvancingSegmentRef.current) return; + isAdvancingSegmentRef.current = true; + clearStatusListener(); + sound.pause(); + sound.release(); + if (soundRef.current === sound) { + soundRef.current = null; + } + void playNextInSequence(); + }, clipDurationMs); + } + } + // Preload exactly one segment ahead while current segment is playing. if (useSequenceLevelProgressRef.current) { const currentSession = playbackSessionRef.current; From 548ac872e8f130d80e769dd3d073560fac9806df Mon Sep 17 00:00:00 2001 From: CalJosKos <120157396+CalJosKos@users.noreply.github.com> Date: Thu, 19 Feb 2026 19:34:39 -0800 Subject: [PATCH 106/143] migration fix - Added name for region_alias (long-forgotten) - Removed incorrect exonym from migration (had same subject and target languoid suggesting exonym, name was country name rather than language) - Removed bug (likely from before this pr) that threw error when accessing info of unpublished quest --- db/drizzleSchemaColumns.ts | 2 + ...d_hindi_burmese_thai_mandarin_ui_ready.sql | 66 +++++++++++++------ views/new/BibleAssetsView.tsx | 8 ++- views/new/NextGenAssetsView.tsx | 8 ++- 4 files changed, 61 insertions(+), 23 deletions(-) diff --git a/db/drizzleSchemaColumns.ts b/db/drizzleSchemaColumns.ts index 894c1880e..c7ed21ceb 100644 --- a/db/drizzleSchemaColumns.ts +++ b/db/drizzleSchemaColumns.ts @@ -1354,6 +1354,7 @@ export function createRegionAliasTable< label_languoid_id: text() .notNull() .references(() => languoid.id), + name: text(), download_profiles: text({ mode: 'json' }).$type(), creator_id: text().references(() => profile.id), ...extraColumns @@ -1361,6 +1362,7 @@ export function createRegionAliasTable< (table) => [ index('region_alias_subject_idx').on(table.subject_region_id), index('region_alias_label_idx').on(table.label_languoid_id), + index('region_alias_name_idx').on(table.name), ...normalizeParams(extraConfig, table) ] ); diff --git a/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql b/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql index 0d95f8455..a2d7fdc08 100644 --- a/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql +++ b/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql @@ -75,25 +75,6 @@ WHERE EXISTS ( ) ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; --- Add Burmese exonymic alias (Myanmar) - only if the languoid exists -INSERT INTO public.languoid_alias ( - subject_languoid_id, - label_languoid_id, - name, - alias_type, - source_names -) -SELECT - 'fa8369a5-03a6-4d1e-ba44-152409a2f97c', - 'fa8369a5-03a6-4d1e-ba44-152409a2f97c', - 'Myanmar', - 'exonym'::public.alias_type, - ARRAY['lexvo'] -WHERE EXISTS ( - SELECT 1 FROM public.languoid WHERE id = 'fa8369a5-03a6-4d1e-ba44-152409a2f97c' -) -ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; - -- ============================================================================ -- Thai (เน„เธ—เธข) -- ISO 639-3: tha @@ -165,3 +146,50 @@ WHERE EXISTS ( SELECT 1 FROM public.languoid WHERE id = '0d75d06f-2692-4127-b810-67dd64fa6eee' ) ON CONFLICT (subject_languoid_id, label_languoid_id, alias_type, name) DO NOTHING; + +-- ============================================================================ +-- Add name column to region_alias +-- This was missing from the original table definition. +-- languoid_alias has a name column; region_alias should too. +-- ============================================================================ + +ALTER TABLE public.region_alias + ADD COLUMN IF NOT EXISTS name text; + +-- Update unique constraint to include name, allowing multiple named aliases +-- per region per language (e.g., "Myanmar" and "Burma" both in English) +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conrelid = 'public.region_alias'::regclass + AND conname = 'uq_region_alias' + ) THEN + EXECUTE 'ALTER TABLE public.region_alias DROP CONSTRAINT uq_region_alias'; + END IF; + EXECUTE 'ALTER TABLE public.region_alias + ADD CONSTRAINT uq_region_alias UNIQUE (subject_region_id, label_languoid_id, name)'; +END$$; + +CREATE INDEX IF NOT EXISTS idx_region_alias_name ON public.region_alias(name); + +-- ============================================================================ +-- Add "Burma" as a region alias for the Myanmar region +-- Myanmar already exists as a region; Burma is a common English alternative. +-- English languoid ID: bd6027e5-b122-43b9-ba0a-4f5d5a25f1dd +-- ============================================================================ + +INSERT INTO public.region_alias ( + id, + subject_region_id, + label_languoid_id, + name +) +SELECT + gen_random_uuid()::text, + r.id, + 'bd6027e5-b122-43b9-ba0a-4f5d5a25f1dd', + 'Burma' +FROM public.region r +WHERE r.name = 'Myanmar' +ON CONFLICT (subject_region_id, label_languoid_id, name) DO NOTHING; diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index f468ccdde..05475fdbd 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -3942,8 +3942,12 @@ export default function BibleAssetsView() { storageBytes: verificationState.estimatedStorageBytes }); setShowDetailsModal(true); - // Start verification to get storage estimate if quest is downloaded - if (isQuestDownloaded && !verificationState.isVerifying) { + // Start verification to get storage estimate if quest is downloaded and exists in cloud + if ( + isQuestDownloaded && + !verificationState.isVerifying && + selectedQuest?.source !== 'local' + ) { verificationState.startVerification(); } }} diff --git a/views/new/NextGenAssetsView.tsx b/views/new/NextGenAssetsView.tsx index 74585a767..179a15fa7 100644 --- a/views/new/NextGenAssetsView.tsx +++ b/views/new/NextGenAssetsView.tsx @@ -1570,8 +1570,12 @@ export default function NextGenAssetsView() { storageBytes: verificationState.estimatedStorageBytes }); setShowDetailsModal(true); - // Start verification to get storage estimate if quest is downloaded - if (isQuestDownloaded && !verificationState.isVerifying) { + // Start verification to get storage estimate if quest is downloaded and exists in cloud + if ( + isQuestDownloaded && + !verificationState.isVerifying && + selectedQuest?.source !== 'local' + ) { verificationState.startVerification(); } }} From 6aa212aa8519f71c641f2844d5176f2c98cd8595 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Fri, 20 Feb 2026 20:18:20 -0800 Subject: [PATCH 107/143] Handle saving trim in DB - Removed unused trim property from AssetMetadata interface. - Bumped schema version from 2.3 to 2.4 and added migration to include a nullable metadata column in asset_content_link for per-segment properties. - Updated relevant database migration files and adjusted views to handle new metadata field in content links. - Enhanced trim modal functionality to support metadata integration during audio trimming. --- database_services/assetService.ts | 4 -- db/constants.ts | 2 +- db/drizzleSchemaColumns.ts | 1 + db/migrations/2.3-to-2.4.ts | 54 +++++++++++++++++++ db/migrations/index.ts | 5 +- .../20260220120000_add_metadata_to_acl.sql | 29 ++++++++++ views/new/BibleAssetsView.tsx | 14 +++-- views/new/RecordingView.tsx | 7 +-- .../components/RecordingViewSimplified.tsx | 17 +++--- .../recording/components/TrimSegmentModal.tsx | 13 ++++- views/new/recording/hooks/useTrimModal.ts | 34 +++++++++++- 11 files changed, 157 insertions(+), 23 deletions(-) create mode 100644 db/migrations/2.3-to-2.4.ts create mode 100644 supabase/migrations/20260220120000_add_metadata_to_acl.sql diff --git a/database_services/assetService.ts b/database_services/assetService.ts index 2f57c9ac7..f4d53ef86 100644 --- a/database_services/assetService.ts +++ b/database_services/assetService.ts @@ -14,10 +14,6 @@ export interface AssetMetadata { from: number; to: number; }; - trim?: { - startMs: number; - endMs: number; - }; recordingSessionId?: string; } diff --git a/db/constants.ts b/db/constants.ts index 3e468ec8b..ddaba47c5 100644 --- a/db/constants.ts +++ b/db/constants.ts @@ -1,6 +1,6 @@ // Schema version tracking for migrations // This file has no dependencies to avoid circular imports -export const APP_SCHEMA_VERSION = '2.3'; +export const APP_SCHEMA_VERSION = '2.4'; export const reasonOptions = [ 'inappropriate_content', diff --git a/db/drizzleSchemaColumns.ts b/db/drizzleSchemaColumns.ts index 5a08c4de0..b8e6aa70e 100644 --- a/db/drizzleSchemaColumns.ts +++ b/db/drizzleSchemaColumns.ts @@ -617,6 +617,7 @@ export function createAssetContentLinkTable< source_language_id: text(), // FK to language dropped - migrating to languoid languoid_id: text(), // Reference to languoid table order_index: int().notNull().default(0), + metadata: text(), ...extraColumns }, (table) => { diff --git a/db/migrations/2.3-to-2.4.ts b/db/migrations/2.3-to-2.4.ts new file mode 100644 index 000000000..57e4fd342 --- /dev/null +++ b/db/migrations/2.3-to-2.4.ts @@ -0,0 +1,54 @@ +import type { Migration } from './index'; +import { getRawTableName, rawTableExists } from './utils'; + +/** + * Migration: 2.3 โ†’ 2.4 + * + * Purpose: Add metadata field to asset_content_link_local for per-segment + * properties (initially trim points). Since metadata is a nullable column with + * no default, existing rows just need the key set to null in the raw JSON so + * PowerSync includes it in view projections. + * + * Notes: + * - Column is defined in the Drizzle schema; PowerSync handles schema sync for synced tables. + * - Uses JSON-first approach: updates raw PowerSync JSON data directly. + * - Rows that already have a metadata key are left untouched. + */ +export const migration_2_3_to_2_4: Migration = { + fromVersion: '2.3', + toVersion: '2.4', + description: 'Add metadata to asset_content_link for per-segment trim', + + async migrate(db, onProgress) { + console.log( + '[Migration 2.3โ†’2.4] Starting metadata field addition for asset_content_link_local...' + ); + + const aclLocalRawExists = await rawTableExists( + db, + 'asset_content_link_local' + ); + + if (!aclLocalRawExists) { + console.log( + '[Migration 2.3โ†’2.4] No raw asset_content_link_local table found, skipping migration' + ); + return; + } + + if (onProgress) + onProgress(1, 1, 'Setting metadata to null for existing content links'); + + const aclLocalTable = getRawTableName('asset_content_link_local'); + await db.execute(` + UPDATE ${aclLocalTable} + SET data = json_set(data, '$.metadata', null) + WHERE json_extract(data, '$.metadata') IS NULL + `); + + console.log( + '[Migration 2.3โ†’2.4] โœ“ metadata field initialized on all local content links' + ); + console.log('[Migration 2.3โ†’2.4] โœ“ Migration complete'); + } +}; diff --git a/db/migrations/index.ts b/db/migrations/index.ts index e6b8de793..67955c2f0 100644 --- a/db/migrations/index.ts +++ b/db/migrations/index.ts @@ -23,6 +23,7 @@ import { migration_1_0_to_2_0 } from './1.0-to-2.0'; import { migration_2_0_to_2_1 } from './2.0-to-2.1'; import { migration_2_1_to_2_2 } from './2.1-to-2.2'; import { migration_2_2_to_2_3 } from './2.2-to-2.3'; +import { migration_2_3_to_2_4 } from './2.3-to-2.4'; import { updateMetadataVersion } from './utils'; // Type for database instance used in migrations @@ -84,7 +85,9 @@ export const migrations: Migration[] = [ // Add content_type column to asset table migration_2_1_to_2_2, // Add order_index to asset_content_link for segment ordering - migration_2_2_to_2_3 + migration_2_2_to_2_3, + // Add metadata to asset_content_link for per-segment trim + migration_2_3_to_2_4 // Add future migrations here: ]; diff --git a/supabase/migrations/20260220120000_add_metadata_to_acl.sql b/supabase/migrations/20260220120000_add_metadata_to_acl.sql new file mode 100644 index 000000000..88e8196f0 --- /dev/null +++ b/supabase/migrations/20260220120000_add_metadata_to_acl.sql @@ -0,0 +1,29 @@ +-- Migration: Add metadata column to asset_content_link +-- Version: 2.3 โ†’ 2.4 +-- Purpose: Store per-segment metadata (initially trim points) as JSON. +-- This supports per-content-link audio trimming rather than per-asset, +-- which is necessary for merged assets where each segment has independent +-- trim bounds. +-- Affected table: asset_content_link +-- Backwards compatible: yes (nullable column, old clients ignore it) + +-- Add nullable metadata column for per-segment JSON metadata +alter table public.asset_content_link + add column if not exists metadata text; + +comment on column public.asset_content_link.metadata is + 'JSON metadata for per-segment properties. Currently stores trim points as {"trim":{"startMs":number,"endMs":number}}. Extensible for future per-segment metadata.'; + +-- Bump schema_version to 2.4, keep min_required at 2.1 +create or replace function public.get_schema_info() +returns jsonb +language sql +security invoker +set search_path = public +as $$ + select jsonb_build_object( + 'schema_version', '2.4', + 'min_required_schema_version', '2.1', + 'notes', 'Clients must be at least version 2.1 to sync. Added metadata column to asset_content_link for per-segment trim points.' + ); +$$; diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index 2341def61..e8a3b0c6d 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -1193,11 +1193,11 @@ export default function BibleAssetsView() { // Find all content links for the source asset, ordered by order_index const srcContent = await system.db .select() - .from(asset_content_link) - .where(eq(asset_content_link.asset_id, src.id)) + .from(contentLocal) + .where(eq(contentLocal.asset_id, src.id)) .orderBy( - asc(asset_content_link.order_index), - asc(asset_content_link.created_at) + asc(contentLocal.order_index), + asc(contentLocal.created_at) ); // Get the next available order_index for the target asset (local table) @@ -1216,7 +1216,9 @@ export default function BibleAssetsView() { text: c.text || '', audio: c.audio, download_profiles: [currentUser.id], - order_index: nextOrder++ + order_index: nextOrder++, + metadata: + (c as { metadata?: string | null }).metadata ?? null }); } @@ -2809,6 +2811,7 @@ export default function BibleAssetsView() { isTrimModalOpen, handleOpenTrimModal, handleCloseTrimModal, + handleConfirmTrim, trimTargetAsset, trimWaveformData, trimAssetAudio, @@ -3591,6 +3594,7 @@ export default function BibleAssetsView() { waveformData={trimWaveformData} assetAudio={trimAssetAudio} onClose={handleCloseTrimModal} + onConfirm={handleConfirmTrim} /> )} diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index e68a383af..3454bb8c3 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -1993,12 +1993,13 @@ const RecordingView = () => { if (!c.audio) continue; await system.db.insert(contentLocal).values({ asset_id: first.id, - source_language_id: c.source_language_id, // Deprecated field, kept for backward compatibility - languoid_id: c.languoid_id ?? c.source_language_id ?? null, // Use languoid_id if available, fallback to source_language_id + source_language_id: c.source_language_id, + languoid_id: c.languoid_id ?? c.source_language_id ?? null, text: c.text || '', audio: c.audio, download_profiles: [currentUser.id], - order_index: nextOrder++ + order_index: nextOrder++, + metadata: (c as { metadata?: string | null }).metadata ?? null }); } diff --git a/views/new/recording/components/RecordingViewSimplified.tsx b/views/new/recording/components/RecordingViewSimplified.tsx index 20df441d1..67c0ffc83 100644 --- a/views/new/recording/components/RecordingViewSimplified.tsx +++ b/views/new/recording/components/RecordingViewSimplified.tsx @@ -1202,12 +1202,13 @@ const RecordingViewSimplified = ({ if (!c.audio) continue; await system.db.insert(contentLocal).values({ asset_id: first.id, - source_language_id: c.source_language_id, // Deprecated field, kept for backward compatibility - languoid_id: c.languoid_id ?? c.source_language_id ?? null, // Use languoid_id if available, fallback to source_language_id + source_language_id: c.source_language_id, + languoid_id: c.languoid_id ?? c.source_language_id ?? null, text: c.text || '', audio: c.audio, download_profiles: [currentUser.id], - order_index: nextOrder++ + order_index: nextOrder++, + metadata: (c as { metadata?: string | null }).metadata ?? null }); } @@ -1289,13 +1290,15 @@ const RecordingViewSimplified = ({ if (!c.audio) continue; await system.db.insert(contentLocal).values({ asset_id: target.id, - source_language_id: c.source_language_id, // Deprecated field, kept for backward compatibility + source_language_id: c.source_language_id, languoid_id: - c.languoid_id ?? c.source_language_id ?? null, // Use languoid_id if available, fallback to source_language_id + c.languoid_id ?? c.source_language_id ?? null, text: c.text || '', audio: c.audio, download_profiles: [currentUser.id], - order_index: nextOrder++ + order_index: nextOrder++, + metadata: + (c as { metadata?: string | null }).metadata ?? null }); } @@ -1397,6 +1400,7 @@ const RecordingViewSimplified = ({ isTrimModalOpen, handleOpenTrimModal, handleCloseTrimModal, + handleConfirmTrim, trimTargetAsset, trimWaveformData, trimAssetAudio, @@ -1803,6 +1807,7 @@ const RecordingViewSimplified = ({ waveformData={trimWaveformData} assetAudio={trimAssetAudio} onClose={handleCloseTrimModal} + onConfirm={handleConfirmTrim} /> )} diff --git a/views/new/recording/components/TrimSegmentModal.tsx b/views/new/recording/components/TrimSegmentModal.tsx index eb7881c94..ace381d1b 100644 --- a/views/new/recording/components/TrimSegmentModal.tsx +++ b/views/new/recording/components/TrimSegmentModal.tsx @@ -27,7 +27,7 @@ interface TrimSegmentModalProps { waveformData?: number[]; assetAudio?: AssetAudio | null; onClose: () => void; - onConfirm?: () => void; + onConfirm?: (trimmedAudio: AssetAudio) => void; } export function TrimSegmentModal({ @@ -778,7 +778,16 @@ export function TrimSegmentModal({ - - - ); - }, [ - isSelectionMode, - showAddVerseButton, - verseToAdd, - isVADRecording, - handleAddNextVerse - ]); - - const boundaryComponent = useMemo( - () => ( - - - - {/* Language-agnostic visual: mic + circle-plus = "add recording here" */} - - - - - - {addButtonComponent} - - ), - [addButtonComponent] - ); - - return ( - - {/* Full-screen VAD overlay - takes over entire screen */} - {showFullScreenOverlay && ( - { - // Cancel VAD mode - setIsVADActive(false); - }} - /> - )} - - {/* Header */} - - - - - {bookChapterLabelFull || bookChapterLabel} - - {/* - {t('doRecord')} - */} - - - {assets.length > 0 && ( - - )} - - {assets.length} {t('assets').toLowerCase()} - - - - - {/* {(isRecording || isVADRecording)? ( */} - {isVADActive ? ( - - {highlightedItemVerse - ? `${t('recording')}: ${formatVerseRange(highlightedItemVerse)}` - : t('recording')} - - ) : ( - - {highlightedItemVerse - ? `${t('recordTo')}: ${formatVerseRange(highlightedItemVerse)}` - : `${t('noLabelSelected')}`} - - )} - - {/* Scrollable list area - full height with padding for controls */} - - - - ref={wheelRef} - value={insertionIndex} - onChange={(newIndex) => { - const item = itemsForWheel[newIndex]; - const itemDesc = item - ? isPill(item) - ? `pill-${item.verse?.from ?? 'null'}` - : item.name - : 'end'; - console.log( - `๐ŸŽก Wheel onChange: ${insertionIndex} โ†’ ${newIndex} | ${itemDesc} ${item?.order_index}` - ); - setInsertionIndex(newIndex); - }} - rowHeight={ROW_HEIGHT} - className="h-full flex-1" - bottomInset={footerHeight} - boundaryComponent={boundaryComponent} - data={itemsForWheel} - renderItem={renderWheelItem} - /> - - - - {/* Bottom controls - absolutely positioned */} - - {isSelectionMode ? ( - - - - ) : ( - setShowVADSettings(true)} - onAutoCalibratePress={() => { - setAutoCalibrateOnOpen(true); - setShowVADSettings(true); - }} - currentEnergy={currentEnergy} - vadThreshold={vadThreshold} - energyShared={energyShared} - isRecordingShared={isRecordingShared} - displayMode={vadDisplayMode} - /> - )} - - - {/* Rename drawer */} - { - setShowRenameDrawer(open); - if (!open) { - setRenameAssetId(null); - } - }} - onSave={handleSaveRename} - /> - - {/* VAD Settings Drawer */} - { - setShowVADSettings(open); - // Reset auto-calibrate flag when drawer closes - if (!open) { - setAutoCalibrateOnOpen(false); - } - }} - minSegmentLength={vadMinSegmentLength} - onMinSegmentLengthChange={setVadMinSegmentLength} - threshold={vadThreshold} - onThresholdChange={setVadThreshold} - silenceDuration={vadSilenceDuration} - onSilenceDurationChange={setVadSilenceDuration} - isVADActive={isVADActive} - displayMode={vadDisplayMode} - onDisplayModeChange={setVadDisplayMode} - autoCalibrateOnOpen={autoCalibrateOnOpen} - energyShared={energyShared} - /> - - {/* Recording Help Dialog - shown once on first visit */} - - - ); -}; - -export default BibleRecordingView; From 8846ec7c24cccdf9ac864805a3ceaf7e9fe50d03 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Fri, 20 Feb 2026 23:45:48 -0800 Subject: [PATCH 109/143] added documention and unignored docs --- .gitignore | 3 ++- docs/asset-merging.md | 58 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 docs/asset-merging.md diff --git a/.gitignore b/.gitignore index 8d6575717..60ba044bc 100644 --- a/.gitignore +++ b/.gitignore @@ -57,5 +57,6 @@ testing/client-migrations/*.sh !testing/client-migrations/restart-device-app.sh # exclude analysis files *.md -# include readme only +# include readme and docs only +!docs/**/*.md !testing/client-migrations/README.md \ No newline at end of file diff --git a/docs/asset-merging.md b/docs/asset-merging.md new file mode 100644 index 000000000..c04c7854a --- /dev/null +++ b/docs/asset-merging.md @@ -0,0 +1,58 @@ +# Asset Merging + +This document explains the current merge architecture. + +## What Merge Means + +In this app, for now, merging is an **audio-segment consolidation** operation: + +- The first (selected) asset by list order is the **target**. +- Each additional selected asset is a **source**. +- Source `asset_content_link` rows (segments) are copied onto the target in order. +- Source assets are then deleted (destructive by design for this workflow). + +The merge workflow is intended for newly recorded, local content before publish. + +## Where Merge Logic Lives + +Merge database mutations are centralized in: + +- `database_services/assetMergeService.ts` + +Primary API: + +- `mergeLocalAssets({ orderedAssetIds, userId })` + +## Transaction and Safety Guarantees + +`mergeLocalAssets` runs merge writes in a **single database transaction**: + +1. Validate all selected assets are merge-eligible local assets. +2. Copy source segments to target in stable order. +3. Delete source assets and related local records. +4. Normalize target segment ordering. + +Because these steps run atomically, merge avoids partial DB state when an error occurs mid-operation. + +## Audio File Preservation + +Merge always preserves audio files. + +- Merge deletes source asset records, but does not delete underlying audio attachments. +- This is intentional: merged segments still reference the same audio identifiers. + +## What Views Still Handle + +Views call the merge service and keep UI concerns local: + +- selection reset (`cancelSelection`) +- query invalidation (`invalidateQueries`) +- view-specific cache/session refresh + +This keeps DB mutation logic centralized while preserving existing screen behavior. + +## Non-goals (Current System) + +- Merge is intentionally destructive for source assets in local workflow. +- History reconstruction is not part of this design. + From 54bacb5de182705f703b7fc8dd673a411f9fa6d2 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 21 Feb 2026 00:40:21 -0800 Subject: [PATCH 110/143] Implemented unmerging --- database_services/assetMergeService.ts | 147 +++++++++++++++++- database_services/assetService.ts | 98 ++++++++++++ docs/asset-merging.md | 71 ++++++--- docs/trimming.md | 93 +++++++++++ views/new/BibleAssetsView.tsx | 62 +++++++- views/new/RecordingView.tsx | 96 +++++++++++- .../components/RecordSelectionControls.tsx | 20 ++- .../recording/services/recordingService.ts | 105 +++---------- 8 files changed, 583 insertions(+), 109 deletions(-) create mode 100644 docs/trimming.md diff --git a/database_services/assetMergeService.ts b/database_services/assetMergeService.ts index da0581e65..6d44affe2 100644 --- a/database_services/assetMergeService.ts +++ b/database_services/assetMergeService.ts @@ -1,10 +1,11 @@ +import { createLocalAssetInTx } from '@/database_services/assetService'; import { deleteLocalAssetRecordsInTx, getLocalAssetCascadeIds } from '@/database_services/audioSegmentService'; import { system } from '@/db/powersync/system'; import { resolveTable } from '@/utils/dbUtils'; -import { asc, eq, inArray, sql } from 'drizzle-orm'; +import { and, asc, eq, inArray, ne, sql } from 'drizzle-orm'; export interface MergeLocalAssetsParams { orderedAssetIds: string[]; @@ -142,3 +143,147 @@ export async function mergeLocalAssets( movedSegmentCount }; } + +// ============================================================================ +// UNMERGE +// ============================================================================ + +export interface UnmergeLocalAssetParams { + assetId: string; + userId: string; +} + +export interface UnmergedAssetInfo { + id: string; + name: string; + orderIndex: number; +} + +export interface UnmergeLocalAssetResult { + originalAssetId: string; + newAssets: UnmergedAssetInfo[]; +} + +/** + * Unmerge a local asset that has multiple segments. + * Keeps the first segment on the original asset and creates a new asset + * for each subsequent segment. New assets are named "{originalName} (2)", "(3)", etc. + * and inserted immediately after the original in list order. + */ +export async function unmergeLocalAsset( + params: UnmergeLocalAssetParams +): Promise { + const { assetId, userId } = params; + + const assetLocal = resolveTable('asset', { localOverride: true }); + const assetSynced = resolveTable('asset', { localOverride: false }); + const contentLocal = resolveTable('asset_content_link', { + localOverride: true + }); + const linkLocal = resolveTable('quest_asset_link', { localOverride: true }); + + // Validate: asset must exist locally + const [localAsset] = await system.db + .select() + .from(assetLocal) + .where(eq(assetLocal.id, assetId)) + .limit(1); + + if (!localAsset) { + throw new Error('Asset not found in local table'); + } + + // Validate: asset must not be synced + const syncedCheck = await system.db + .select({ id: assetSynced.id }) + .from(assetSynced) + .where(eq(assetSynced.id, assetId)) + .limit(1); + + if (syncedCheck.length > 0) { + throw new Error('Cannot unmerge a synced asset'); + } + + // Read segments + const segments = await system.db + .select() + .from(contentLocal) + .where(eq(contentLocal.asset_id, assetId)) + .orderBy(asc(contentLocal.order_index), asc(contentLocal.created_at)); + + if (segments.length < 2) { + throw new Error('Asset has only one segment โ€” nothing to unmerge'); + } + + // Find the quest this asset belongs to + const [questLink] = await system.db + .select({ quest_id: linkLocal.quest_id }) + .from(linkLocal) + .where(eq(linkLocal.asset_id, assetId)) + .limit(1); + + if (!questLink) { + throw new Error('Asset is not linked to any quest'); + } + + const questId = questLink.quest_id; + const originalName = localAsset.name ?? 'Asset'; + const originalOrderIndex = + typeof localAsset.order_index === 'number' ? localAsset.order_index : 0; + const projectId = localAsset.project_id ?? ''; + const languoidId = + localAsset.source_language_id ?? segments[0]?.languoid_id ?? ''; + + const [keepSegment, ...splitSegments] = segments; + const newAssets: UnmergedAssetInfo[] = []; + + await system.db.transaction(async (tx) => { + // Remove all segments except the first from the original asset + await tx + .delete(contentLocal) + .where( + and( + eq(contentLocal.asset_id, assetId), + ne(contentLocal.id, keepSegment!.id) + ) + ); + + // Normalize the kept segment's order_index to 1 + await tx + .update(contentLocal) + .set({ order_index: 1 }) + .where(eq(contentLocal.id, keepSegment!.id)); + + // Create a new asset for each split-off segment. + // Each call shifts existing assets at/after the target position, so + // consecutive inserts at originalOrderIndex+1, +2, ... each make room. + for (let i = 0; i < splitSegments.length; i++) { + const seg = splitSegments[i]!; + const suffix = i + 2; // (2), (3), ... + const newName = `${originalName} (${suffix})`; + const newOrderIndex = originalOrderIndex + suffix - 1; + + const newId = await createLocalAssetInTx(tx, { + name: newName, + orderIndex: newOrderIndex, + questId, + projectId, + userId, + languoidId, + audio: seg.audio ?? [], + text: seg.text ?? newName, + contentMetadata: seg.metadata ?? null, + assetMetadata: localAsset.metadata ?? null, + shiftExisting: true + }); + + newAssets.push({ id: newId, name: newName, orderIndex: newOrderIndex }); + } + }); + + console.log( + `โœ… Unmerge completed: "${originalName}" split into 1 + ${newAssets.length} assets` + ); + + return { originalAssetId: assetId, newAssets }; +} diff --git a/database_services/assetService.ts b/database_services/assetService.ts index 4b44ac35b..827d5e9e0 100644 --- a/database_services/assetService.ts +++ b/database_services/assetService.ts @@ -5,6 +5,9 @@ import { system } from '@/db/powersync/system'; import { resolveTable } from '@/utils/dbUtils'; import { and, asc, eq, gte, inArray, lte, sql } from 'drizzle-orm'; +import uuid from 'react-native-uuid'; + +type LocalDbTx = Parameters[0]>[0]; /** * Asset metadata structure for verse ranges @@ -413,3 +416,98 @@ export async function getNextOrderIndex( const maxOrder = result[0]?.maxOrder; return (maxOrder ?? 0) + 1; } + +// ============================================================================ +// SHARED ASSET CREATION HELPER +// ============================================================================ + +export interface CreateLocalAssetParams { + name: string; + orderIndex: number; + questId: string; + projectId: string; + userId: string; + languoidId: string; + audio: string[]; + text: string; + contentMetadata?: string | null; + assetMetadata?: string | null; + shiftExisting?: boolean; +} + +/** + * Create a local asset with its quest link and content link inside an existing + * transaction. Optionally shifts assets at/after the target order_index to make + * room (used by both recording and unmerge flows). + */ +export async function createLocalAssetInTx( + tx: LocalDbTx, + params: CreateLocalAssetParams +): Promise { + const assetLocal = resolveTable('asset', { localOverride: true }); + const linkLocal = resolveTable('quest_asset_link', { localOverride: true }); + const contentLocal = resolveTable('asset_content_link', { + localOverride: true + }); + + const newAssetId = String(uuid.v4()); + + if (params.shiftExisting) { + const assetsToShift = await tx + .select({ id: assetLocal.id, order_index: assetLocal.order_index }) + .from(assetLocal) + .innerJoin(linkLocal, eq(assetLocal.id, linkLocal.asset_id)) + .where( + and( + eq(linkLocal.quest_id, params.questId), + gte(assetLocal.order_index, params.orderIndex) + ) + ); + + for (const asset of assetsToShift) { + if (typeof asset.order_index === 'number') { + await tx + .update(assetLocal) + .set({ order_index: asset.order_index + 1 }) + .where(eq(assetLocal.id, asset.id)); + } + } + } + + const [newAsset] = await tx + .insert(assetLocal) + .values({ + id: newAssetId, + name: params.name, + order_index: params.orderIndex, + source_language_id: params.languoidId, + project_id: params.projectId, + creator_id: params.userId, + download_profiles: [params.userId], + metadata: params.assetMetadata ?? null + }) + .returning(); + + if (!newAsset) { + throw new Error('Failed to insert asset'); + } + + await tx.insert(linkLocal).values({ + id: String(uuid.v4()), + quest_id: params.questId, + asset_id: newAssetId, + download_profiles: [params.userId] + }); + + await tx.insert(contentLocal).values({ + asset_id: newAssetId, + source_language_id: params.languoidId, + languoid_id: params.languoidId, + text: params.text, + audio: params.audio, + download_profiles: [params.userId], + metadata: params.contentMetadata ?? null + }); + + return newAssetId; +} diff --git a/docs/asset-merging.md b/docs/asset-merging.md index c04c7854a..64294bca5 100644 --- a/docs/asset-merging.md +++ b/docs/asset-merging.md @@ -1,10 +1,10 @@ -# Asset Merging +# Asset Merge & Unmerge -This document explains the current merge architecture. +This document explains the merge and unmerge architecture. ## What Merge Means -In this app, for now, merging is an **audio-segment consolidation** operation: +Merging is an **audio-segment consolidation** operation: - The first (selected) asset by list order is the **target**. - Each additional selected asset is a **source**. @@ -13,46 +13,75 @@ In this app, for now, merging is an **audio-segment consolidation** operation: The merge workflow is intended for newly recorded, local content before publish. -## Where Merge Logic Lives +## What Unmerge Means -Merge database mutations are centralized in: +Unmerging **splits a multi-segment asset** back into individual assets: + +- The first segment stays on the original asset. +- Each subsequent segment becomes a brand-new asset. +- New assets are named `{originalName} (2)`, `{originalName} (3)`, etc. +- New assets are inserted immediately after the original in list order. +- All segment metadata (trim points, audio references) is preserved. + +Unmerge is only available for local assets with 2+ segments. + +## Where Logic Lives + +All merge and unmerge database mutations are in: - `database_services/assetMergeService.ts` -Primary API: +Primary APIs: + +- `mergeLocalAssets({ orderedAssetIds, userId })` โ€” combine N assets into one +- `unmergeLocalAsset({ assetId, userId })` โ€” split one asset into N + +## Shared Asset Creation Helper -- `mergeLocalAssets({ orderedAssetIds, userId })` +Both `saveRecording` (recording flow) and `unmergeLocalAsset` delegate to: + +- `database_services/assetService.ts` โ†’ `createLocalAssetInTx(tx, params)` + +This helper creates an asset row, quest link, and content link inside an existing +transaction. It optionally shifts existing assets to make room at the target +`order_index`. ## Transaction and Safety Guarantees -`mergeLocalAssets` runs merge writes in a **single database transaction**: +Both `mergeLocalAssets` and `unmergeLocalAsset` run all writes in a **single +database transaction**: +**Merge steps:** 1. Validate all selected assets are merge-eligible local assets. 2. Copy source segments to target in stable order. 3. Delete source assets and related local records. 4. Normalize target segment ordering. -Because these steps run atomically, merge avoids partial DB state when an error occurs mid-operation. +**Unmerge steps:** +1. Validate asset is local, not synced, and has 2+ segments. +2. Delete extra content links from the original asset (keep first). +3. Create a new asset for each split-off segment via `createLocalAssetInTx`. +4. Shift existing assets to make room for the new ones. -## Audio File Preservation +Atomicity ensures no partial state on failure. -Merge always preserves audio files. +## Audio File Preservation -- Merge deletes source asset records, but does not delete underlying audio attachments. -- This is intentional: merged segments still reference the same audio identifiers. +Both merge and unmerge preserve audio files. Only database records are +created/deleted; the underlying audio attachments are never removed. -## What Views Still Handle +## What Views Handle -Views call the merge service and keep UI concerns local: +Views (`BibleAssetsView`, `RecordingView`) call the service and keep UI concerns +local: - selection reset (`cancelSelection`) - query invalidation (`invalidateQueries`) -- view-specific cache/session refresh - -This keeps DB mutation logic centralized while preserving existing screen behavior. +- view-specific cache/session refresh (RecordingView clears segment count and + duration caches, adds new items to session list) ## Non-goals (Current System) -- Merge is intentionally destructive for source assets in local workflow. -- History reconstruction is not part of this design. - +- Merge is intentionally destructive for source assets. +- Unmerge does not reconstruct original pre-merge assets; it creates new ones. +- No merge/unmerge history or provenance tracking. diff --git a/docs/trimming.md b/docs/trimming.md new file mode 100644 index 000000000..8710abb97 --- /dev/null +++ b/docs/trimming.md @@ -0,0 +1,93 @@ +# Audio Trimming + +Non-destructive trim points let users shorten an asset's audio without deleting anything. The original files stay intact; only start/end markers are stored. + +## How it works for the user + +1. Select an asset and open the trim modal. +2. Drag the left handle to set where playback starts; drag the right handle to set where it ends. +3. Press OK to save. Cancel discards changes. +4. Reopening the modal shows the full audio again with handles at the saved positions โ€” the user can always extend them back out. + +Everywhere else in the app (playback, waveform thumbnails, export) the trimmed-away portions are invisible. + +## Trimming + merging interactions + +### Trimming a single asset + +Straightforward. One audio file, two handles, full waveform shown. + +### Merging already-trimmed assets + +When assets A and B are merged, each keeps its own trim points. Playback chains the segments and respects each segment's `startMs`/`endMs`. The merged waveform in lists shows only the effective (trimmed) portions concatenated together. + +### Trimming a merged asset + +A merged asset has multiple segments (one per original content link). In the trim modal: + +- **Interior segment trims are locked and hidden.** The user can't edit them and doesn't see the trimmed-away portions โ€” those segments appear as solid blocks. +- **Only the first segment's start and last segment's end are adjustable.** These are the "exterior" edges of the merged clip. +- Clip divider lines show where segments meet. + +This prevents the user from accidentally modifying interior boundaries while still allowing them to tighten the head and tail of the combined clip. + +## Where trim is stored + +Each `asset_content_link` row has a nullable `metadata TEXT` column containing JSON: + +```json +{ "trim": { "startMs": 500, "endMs": 3200 } } +``` + +- `startMs` and `endMs` are milliseconds relative to the segment's full file duration. +- When `trim` is absent or null, the full file plays. +- The column can hold other metadata alongside trim (the save logic merges, not overwrites). + +Only local (unsynced) content links can be updated. Synced rows are immutable. + +## Code overview + +### `services/assetAudio.ts` + +The single file that owns resolution, playback, waveform, trim persistence, and export. + + +| Function | Role | +| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `resolveAssetAudio(assetId)` | Queries content links, resolves URIs, loads durations, reads trim from `metadata`. Returns an `AssetAudio` object. | +| `getAssetWaveform(assetId, options)` | Builds a combined waveform from all segments. Options control which trims are applied (see below). | +| `saveTrim(assetAudio)` | Writes each segment's `trim` back to the `metadata` column on local content links. | +| `useAssetAudio()` | React hook exposing `play`, `stop`, `resolve`, `getWaveform`, `saveTrim`, and playback state. | + + +#### Waveform modes + +When `getAssetWaveform` generates a waveform. + + +| Option | Behaviour | Used by | +| --------------------------- | ------------------------------------------------------------------------------------ | ----------------------------------- | +| *(default)* | All trims applied. Trimmed portions hidden. | Asset lists, thumbnails. | +| `ignoreTrim: true` | No trims applied. Full file shown. | Trim modal (single-segment assets). | +| `ignoreExteriorTrims: true` | Interior trims applied; first segment's start and last segment's end left untrimmed. | Trim modal (merged assets). | + + +### `views/new/recording/components/TrimSegmentModal.tsx` + +The modal UI. Key concepts: + +- **Visible ranges** โ€” each segment's shown region (`fileStartMs` to `fileEndMs`), derived from the waveform mode. Single-segment: full file. Merged: exterior edges exposed, interior trims baked in. +- **Handle initialization** โ€” on open, handles are positioned at existing trim fractions within the visible space, not reset to 0/1. +- `**buildTrimmedAssetAudio()*`* โ€” maps handle fractions through visible ranges back to file-relative `startMs`/`endMs` per segment. Used for both live preview playback and the final confirm. +- **OK button** โ€” builds the trimmed `AssetAudio` and passes it to `onConfirm`. + +### `views/new/recording/hooks/useTrimModal.ts` + +Shared hook consumed by `BibleAssetsView` and recording views. Handles: + +- Resolving the `AssetAudio` and loading the waveform (choosing the right mode based on segment count). +- `handleConfirmTrim` โ€” receives the trimmed `AssetAudio` from the modal, calls `saveTrim()`, and closes the modal. + +### `asset_content_link.metadata` column + +Added by migration `20260220120000_add_metadata_to_acl.sql`. Nullable text, JSON-encoded. Parsed by `parseTrimMetadata()` in `assetAudio.ts`. \ No newline at end of file diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index b23d8c69d..c242056ba 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -90,7 +90,10 @@ import { batchUpdateAssetMetadata, renameAsset } from '@/database_services/assetService'; -import { mergeLocalAssets } from '@/database_services/assetMergeService'; +import { + mergeLocalAssets, + unmergeLocalAsset +} from '@/database_services/assetMergeService'; import { audioSegmentService } from '@/database_services/audioSegmentService'; import { createQuestRecordingSession } from '@/database_services/questService'; import { AppConfig } from '@/db/supabase/AppConfig'; @@ -1208,6 +1211,61 @@ export default function BibleAssetsView() { refetch ]); + // Handle unmerge of a single selected asset + const handleUnmergeSelected = React.useCallback(() => { + const selectedAsset = assets.find( + (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' + ); + if (!selectedAsset || !currentUser) return; + + RNAlert.alert( + 'Unmerge Asset', + `Split "${selectedAsset.name}" into separate assets? The first audio segment stays on this asset; each additional segment becomes a new asset.`, + [ + { text: t('cancel'), style: 'cancel' }, + { + text: 'Unmerge', + isPreferred: true, + onPress: () => { + void (async () => { + try { + const { newAssets } = await unmergeLocalAsset({ + assetId: selectedAsset.id, + userId: currentUser.id + }); + + cancelSelection(); + setSelectedForRecording(null); + void queryClient.invalidateQueries({ queryKey: ['assets'] }); + void refetch(); + + console.log( + `โœ… Unmerge completed: "${selectedAsset.name}" โ†’ 1 + ${newAssets.length} assets` + ); + } catch (e) { + console.error('Failed to unmerge asset', e); + RNAlert.alert( + t('error'), + e instanceof Error + ? e.message + : 'Failed to unmerge asset. Please try again.' + ); + } + })(); + } + } + ] + ); + }, [ + assets, + selectedAssetIds, + currentUser, + cancelSelection, + queryClient, + t, + refetch + ]); + // ============================================================================ // RENAME ASSET // ============================================================================ @@ -3921,6 +3979,8 @@ export default function BibleAssetsView() { allowAssignVerse={true} onAssignVerse={() => setShowVerseAssignerDrawer(true)} showMerge={enableMerge} + showUnmerge={selectedAssetIds.size === 1} + onUnmerge={handleUnmergeSelected} /> ) : ( diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index 1b0be35d6..3fe7fc9ef 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -11,7 +11,10 @@ import { normalizeOrderIndexForVerses, renameAsset } from '@/database_services/assetService'; -import { mergeLocalAssets } from '@/database_services/assetMergeService'; +import { + mergeLocalAssets, + unmergeLocalAsset +} from '@/database_services/assetMergeService'; import { audioSegmentService } from '@/database_services/audioSegmentService'; import { asset_content_link, project_language_link } from '@/db/drizzleSchema'; import { system } from '@/db/powersync/system'; @@ -2505,6 +2508,90 @@ const RecordingView = () => { ); }, [assets, selectedAssetIds, cancelSelection, queryClient, currentQuestId]); + // Handle unmerge of a single selected asset + const handleUnmergeSelected = React.useCallback(() => { + const selectedAsset = assets.find( + (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' + ); + if (!selectedAsset || !currentUser) return; + + RNAlert.alert( + 'Unmerge Asset', + `Split "${selectedAsset.name}" into separate assets? The first audio segment stays on this asset; each additional segment becomes a new asset.`, + [ + { text: 'Cancel', style: 'cancel' }, + { + text: 'Unmerge', + isPreferred: true, + onPress: () => { + void (async () => { + try { + const { originalAssetId, newAssets } = await unmergeLocalAsset({ + assetId: selectedAsset.id, + userId: currentUser.id + }); + + // Clear caches for the modified original asset + loadedAssetIdsRef.current.delete(originalAssetId); + setAssetSegmentCounts((prev) => { + const next = new Map(prev); + next.delete(originalAssetId); + return next; + }); + setAssetDurations((prev) => { + const next = new Map(prev); + next.delete(originalAssetId); + return next; + }); + + // Add the new assets to the session list + for (const newAsset of newAssets) { + addSessionAsset({ + id: newAsset.id, + name: newAsset.name, + order_index: newAsset.orderIndex + }); + loadedAssetIdsRef.current.add(newAsset.id); + setAssetSegmentCounts((prev) => { + const next = new Map(prev); + next.set(newAsset.id, 1); + return next; + }); + } + + cancelSelection(); + await queryClient.invalidateQueries({ + queryKey: ['assets', 'by-quest', currentQuestId], + exact: false + }); + + debugLog( + `โœ… Unmerge completed: "${selectedAsset.name}" โ†’ 1 + ${newAssets.length} assets` + ); + } catch (e) { + console.error('Failed to unmerge asset', e); + RNAlert.alert( + 'Error', + e instanceof Error + ? e.message + : 'Failed to unmerge asset. Please try again.' + ); + } + })(); + } + } + ] + ); + }, [ + assets, + selectedAssetIds, + currentUser, + addSessionAsset, + cancelSelection, + queryClient, + currentQuestId + ]); + // ============================================================================ // SELECT ALL / DESELECT ALL // ============================================================================ @@ -3161,6 +3248,13 @@ const RecordingView = () => { allSelected={allSelected} onSelectAll={handleSelectAll} showMerge={enableMerge} + showUnmerge={ + selectedAssetIds.size === 1 && + (assetSegmentCounts.get( + Array.from(selectedAssetIds)[0] ?? '' + ) ?? 1) > 1 + } + onUnmerge={handleUnmergeSelected} /> ) : ( diff --git a/views/new/recording/components/RecordSelectionControls.tsx b/views/new/recording/components/RecordSelectionControls.tsx index 1a20fb103..e050e2ffc 100644 --- a/views/new/recording/components/RecordSelectionControls.tsx +++ b/views/new/recording/components/RecordSelectionControls.tsx @@ -17,6 +17,7 @@ import { ListChecks, ListX, Merge, + Scissors, Trash2, X } from 'lucide-react-native'; @@ -34,6 +35,8 @@ interface RecordSelectionControlsProps { allowAssignVerse?: boolean; onAssignVerse?: () => void; showMerge?: boolean; + showUnmerge?: boolean; + onUnmerge?: () => void; } export const RecordSelectionControls = React.memo( @@ -47,7 +50,9 @@ export const RecordSelectionControls = React.memo( onSelectAll, allowAssignVerse = false, onAssignVerse, - showMerge = true + showMerge = true, + showUnmerge = false, + onUnmerge }: RecordSelectionControlsProps) { const { t } = useLocalization(); return ( @@ -85,6 +90,19 @@ export const RecordSelectionControls = React.memo( )} + {showUnmerge && onUnmerge && ( + + )} - )} + ) : null} {showUnmerge && onUnmerge && ( - )} - {allowSelectAll && onSelectAll && ( - - )} - {shouldShowTrim ? ( - - ) : showMerge && shouldShowMerge ? ( - - ) : null} - {showUnmerge && onUnmerge && ( - - )} - - + )} + + {selectedCount} {t('selected')} + + + {/* Bottom row: action buttons */} + + {allowAssignVerse && onAssignVerse && ( + + )} + {shouldShowTrim && ( + + )} + {shouldShowMerge && ( + + )} + {showUnmerge && onUnmerge && ( + + )} + + + ); } diff --git a/views/new/recording/components/VerseSegmentModal.tsx b/views/new/recording/components/VerseSegmentModal.tsx index e5feb38bd..de1308013 100644 --- a/views/new/recording/components/VerseSegmentModal.tsx +++ b/views/new/recording/components/VerseSegmentModal.tsx @@ -24,7 +24,7 @@ import { asset_content_link } from '@/db/drizzleSchema'; import { system } from '@/db/powersync/system'; import { getThemeColor } from '@/utils/styleUtils'; import { asc, eq } from 'drizzle-orm'; -import { Pause, Play, ScissorsIcon, Trash2 } from 'lucide-react-native'; +import { Pause, Play, Split, Trash2 } from 'lucide-react-native'; import React from 'react'; import { ActivityIndicator, View } from 'react-native'; import { ScrollView } from 'react-native-gesture-handler'; @@ -210,7 +210,7 @@ export function VerseSegmentModal({ {isMerged && onUnmerge && ( )} From 048da02d2d44fcc9aa9ef044863d42a1df7fa1a0 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 21 Feb 2026 18:42:45 -0800 Subject: [PATCH 118/143] refactored/consolidated selection controls and selection actions --- views/new/BibleAssetsView.tsx | 261 ++------------ views/new/RecordingView.tsx | 326 ++++------------- .../components/RecordSelectionControls.tsx | 47 +-- .../recording/hooks/useSelectionActions.ts | 333 ++++++++++++++++++ 4 files changed, 441 insertions(+), 526 deletions(-) create mode 100644 views/new/recording/hooks/useSelectionActions.ts diff --git a/views/new/BibleAssetsView.tsx b/views/new/BibleAssetsView.tsx index 786d150cb..09a5227f3 100644 --- a/views/new/BibleAssetsView.tsx +++ b/views/new/BibleAssetsView.tsx @@ -14,11 +14,7 @@ import { Text } from '@/components/ui/text'; import { useAuth } from '@/contexts/AuthContext'; import { LayerType, useStatusContext } from '@/contexts/StatusContext'; import type { asset } from '@/db/drizzleSchema'; -import { - asset_content_link, - project, - quest as questTable -} from '@/db/drizzleSchema'; +import { project, quest as questTable } from '@/db/drizzleSchema'; import { system } from '@/db/powersync/system'; import { useDebouncedState } from '@/hooks/use-debounced-state'; import { @@ -90,10 +86,6 @@ import { VerseAssigner } from '@/components/VerseAssigner'; import { VerseRangeSelector } from '@/components/VerseRangeSelector'; import { VerseSeparator } from '@/components/VerseSeparator'; import { BIBLE_BOOKS } from '@/constants/bibleStructure'; -import { - mergeLocalAssets, - unmergeLocalAsset -} from '@/database_services/assetMergeService'; import type { AssetUpdatePayload } from '@/database_services/assetService'; import { batchUpdateAssetMetadata, @@ -103,7 +95,6 @@ import { audioSegmentService } from '@/database_services/audioSegmentService'; import { createQuestRecordingSession } from '@/database_services/questService'; import { useAssetsByQuest, useLocalAssetsByQuest } from '@/hooks/db/useAssets'; import { useBlockedAssetsCount } from '@/hooks/useBlockedCount'; -import { useMergeUnmergeCleanup } from '@/hooks/useMergeUnmergeCleanup'; import { useQuestOffloadVerification } from '@/hooks/useQuestOffloadVerification'; import { useHasUserReported } from '@/hooks/useReports'; import { resolveTable } from '@/utils/dbUtils'; @@ -123,8 +114,8 @@ import { AssetCardItem } from './AssetCardItem'; import { RecordSelectionControls } from './recording/components/RecordSelectionControls'; import { RenameAssetDrawer } from './recording/components/RenameAssetDrawer'; import { TrimSegmentModal } from './recording/components/TrimSegmentModal'; +import { useSelectionActions } from './recording/hooks/useSelectionActions'; import { useSelectionMode } from './recording/hooks/useSelectionMode'; -import { useTrimModal } from './recording/hooks/useTrimModal'; // import RecordingViewSimplified from './recording/components/RecordingViewSimplified'; type Asset = typeof asset.$inferSelect; @@ -480,28 +471,6 @@ export default function BibleAssetsView() { cancelSelection, selectMultiple } = useSelectionMode(); - const { afterMerge, afterUnmerge } = useMergeUnmergeCleanup(cancelSelection); - const [selectedIsMerged, setSelectedIsMerged] = React.useState(false); - - React.useEffect(() => { - if (selectedAssetIds.size !== 1) { - setSelectedIsMerged(false); - return; - } - const assetId = Array.from(selectedAssetIds)[0]!; - let cancelled = false; - system.db.query.asset_content_link - .findMany({ - columns: { id: true }, - where: eq(asset_content_link.asset_id, assetId) - }) - .then((links) => { - if (!cancelled) setSelectedIsMerged(links.length > 1); - }); - return () => { - cancelled = true; - }; - }, [selectedAssetIds]); const [selectionControlsHeight, setSelectionControlsHeight] = React.useState(0); @@ -840,7 +809,6 @@ export default function BibleAssetsView() { const currentStatus = useStatusContext(); currentStatus.layerStatus(LayerType.QUEST, currentQuestId || ''); const showInvisibleContent = useLocalStore((s) => s.showHiddenContent); - const enableMerge = useLocalStore((s) => s.enableMerge); // Call both hooks unconditionally to comply with React Hooks rules const publishedAssets = useAssetsByQuest( @@ -1139,173 +1107,6 @@ export default function BibleAssetsView() { } }, [assets, currentQuestId, queryClient, t, refetch]); - const allSelected = React.useMemo(() => { - if (!isSelectionMode || assets.length === 0) return false; - const selectableAssets = assets.filter((a) => a.source !== 'cloud'); - if (selectableAssets.length === 0) return false; - return selectableAssets.every((a) => selectedAssetIds.has(a.id)); - }, [isSelectionMode, assets, selectedAssetIds]); - - const handleSelectAll = React.useCallback(() => { - if (allSelected) { - selectMultiple([]); - } else { - const selectableIds = assets - .filter((a) => a.source !== 'cloud') - .map((a) => a.id); - selectMultiple(selectableIds); - } - }, [allSelected, assets, selectMultiple]); - - const handleBatchDeleteSelected = React.useCallback(() => { - // Filter selected assets that are local (not cloud-only) - const selectedAssets = assets.filter( - (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' - ); - - if (selectedAssets.length < 1) return; - - RNAlert.alert( - 'Delete Assets', - `Are you sure you want to delete ${selectedAssets.length} asset${selectedAssets.length > 1 ? 's' : ''}? This action cannot be undone.`, - [ - { - text: t('cancel'), - style: 'cancel' - }, - { - text: 'Delete', - style: 'destructive', - isPreferred: true, - onPress: () => { - void (async () => { - try { - for (const asset of selectedAssets) { - await audioSegmentService.deleteAudioSegment(asset.id); - } - - cancelSelection(); - setSelectedForRecording(null); - void queryClient.invalidateQueries({ queryKey: ['assets'] }); - void refetch(); - - console.log( - `โœ… Batch delete completed: ${selectedAssets.length} assets` - ); - } catch (e) { - console.error('Failed to batch delete assets', e); - RNAlert.alert( - t('error'), - 'Failed to delete assets. Please try again.' - ); - } - })(); - } - } - ] - ); - }, [assets, selectedAssetIds, cancelSelection, queryClient, t, refetch]); - - // Handle batch merge of selected assets - const handleBatchMergeSelected = React.useCallback(() => { - // Filter selected assets that are local (not cloud-only) - const selectedAssets = assets.filter( - (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' - ); - - if (selectedAssets.length < 2) return; - - RNAlert.alert( - 'Merge Assets', - `Are you sure you want to merge ${selectedAssets.length} assets? The audio segments will be combined into the first selected asset, and the others will be deleted.`, - [ - { - text: t('cancel'), - style: 'cancel' - }, - { - text: 'Merge', - style: 'destructive', - isPreferred: true, - onPress: () => { - void (async () => { - try { - if (!currentUser) return; - - const { targetAssetId } = await mergeLocalAssets({ - orderedAssetIds: selectedAssets.map((a) => a.id), - userId: currentUser.id - }); - - setSelectedForRecording(null); - afterMerge(targetAssetId); - void refetch(); - - console.log( - `โœ… Batch merge completed: ${selectedAssets.length} assets merged into ${targetAssetId.slice(0, 8)}` - ); - } catch (e) { - console.error('Failed to batch merge assets', e); - RNAlert.alert( - t('error'), - 'Failed to merge assets. Please try again.' - ); - } - })(); - } - } - ] - ); - }, [assets, selectedAssetIds, currentUser, afterMerge, t, refetch]); - - // Handle unmerge of a single selected asset - const handleUnmergeSelected = React.useCallback(() => { - const selectedAsset = assets.find( - (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' - ); - if (!selectedAsset || !currentUser) return; - - RNAlert.alert( - 'Unmerge Asset', - `Split "${selectedAsset.name}" into separate assets? The first audio segment stays on this asset; each additional segment becomes a new asset.`, - [ - { text: t('cancel'), style: 'cancel' }, - { - text: 'Unmerge', - isPreferred: true, - onPress: () => { - void (async () => { - try { - const { newAssets } = await unmergeLocalAsset({ - assetId: selectedAsset.id, - userId: currentUser.id - }); - - setSelectedForRecording(null); - afterUnmerge( - selectedAsset.id, - newAssets.map((a) => a.id) - ); - void refetch(); - - console.log( - `โœ… Unmerge completed: "${selectedAsset.name}" โ†’ 1 + ${newAssets.length} assets` - ); - } catch (e) { - console.error('Failed to unmerge asset', e); - RNAlert.alert( - t('error'), - e instanceof Error - ? e.message - : 'Failed to unmerge asset. Please try again.' - ); - } - })(); - } - } - ] - ); - }, [assets, selectedAssetIds, currentUser, afterUnmerge, t, refetch]); // ============================================================================ // RENAME ASSET @@ -2842,19 +2643,25 @@ export default function BibleAssetsView() { // Update ref so renderItem can use it handlePlayAssetRef.current = handlePlayAsset; - // Trim modal (shared hook โ€“ loads waveform from file on demand) - const { - isTrimModalOpen, - handleOpenTrimModal, - handleCloseTrimModal, - handleConfirmTrim, - trimTargetAsset, - trimWaveformData, - trimAssetAudio, - canTrimSelected - } = useTrimModal({ + // Selection actions (shared hook โ€“ merge, delete, unmerge, trim, select all) + const { controlsProps, trimModal } = useSelectionActions({ selectedAssetIds, - assets + assets, + isSelectionMode, + selectMultiple, + cancelSelection, + onAfterMerge: () => { + setSelectedForRecording(null); + void refetch(); + }, + onAfterDelete: () => { + setSelectedForRecording(null); + void refetch(); + }, + onAfterUnmerge: () => { + setSelectedForRecording(null); + void refetch(); + } }); // Handle publish button press with useMutation @@ -3474,19 +3281,9 @@ export default function BibleAssetsView() { } > setShowVerseAssignerDrawer(true)} - showMerge={enableMerge} - showUnmerge={selectedAssetIds.size === 1 && selectedIsMerged} - onUnmerge={handleUnmergeSelected} /> ) : ( @@ -3633,14 +3430,14 @@ export default function BibleAssetsView() { )} {/* Trim Segment Modal */} - {isTrimModalOpen && ( + {trimModal.isOpen && ( )} diff --git a/views/new/RecordingView.tsx b/views/new/RecordingView.tsx index 2f1730ca9..cc4d0539e 100644 --- a/views/new/RecordingView.tsx +++ b/views/new/RecordingView.tsx @@ -7,10 +7,7 @@ import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; import { useAudio } from '@/contexts/AudioContext'; import { useAuth } from '@/contexts/AuthContext'; -import { - mergeLocalAssets, - unmergeLocalAsset -} from '@/database_services/assetMergeService'; +import { mergeLocalAssets } from '@/database_services/assetMergeService'; import { normalizeOrderIndexForVerses, renameAsset @@ -60,8 +57,8 @@ import { RecordingControls } from './recording/components/RecordingControls'; import { RenameAssetDrawer } from './recording/components/RenameAssetDrawer'; import { TrimSegmentModal } from './recording/components/TrimSegmentModal'; import { VADSettingsDrawer } from './recording/components/VADSettingsDrawer'; +import { useSelectionActions } from './recording/hooks/useSelectionActions'; import { useSelectionMode } from './recording/hooks/useSelectionMode'; -import { useTrimModal } from './recording/hooks/useTrimModal'; import { useVADRecording } from './recording/hooks/useVADRecording'; import { saveRecording } from './recording/services/recordingService'; import { useHybridData } from './useHybridData'; @@ -335,7 +332,6 @@ const RecordingView = () => { ); const vadDisplayMode = useLocalStore((state) => state.vadDisplayMode); const setVadDisplayMode = useLocalStore((state) => state.setVadDisplayMode); - const enableMerge = useLocalStore((state) => state.enableMerge); const [showVADSettings, setShowVADSettings] = React.useState(false); const [autoCalibrateOnOpen, setAutoCalibrateOnOpen] = React.useState(false); @@ -477,7 +473,7 @@ const RecordingView = () => { cancelSelection, selectMultiple } = useSelectionMode(); - const { afterMerge, afterUnmerge } = useMergeUnmergeCleanup(cancelSelection); + const { afterMerge } = useMergeUnmergeCleanup(cancelSelection); // Rename drawer state const [showRenameDrawer, setShowRenameDrawer] = React.useState(false); @@ -691,19 +687,56 @@ const RecordingView = () => { return result; }, [rawAssets, assetSegmentCounts, assetDurations]); - // Trim modal (shared hook โ€“ loads waveform from file on demand) - const { - isTrimModalOpen, - handleOpenTrimModal, - handleCloseTrimModal, - handleConfirmTrim, - trimTargetAsset, - trimWaveformData, - trimAssetAudio, - canTrimSelected - } = useTrimModal({ + // Selection actions (shared hook โ€“ merge, delete, unmerge, trim, select all) + const { controlsProps, trimModal } = useSelectionActions({ selectedAssetIds, - assets + assets, + isSelectionMode, + selectMultiple, + cancelSelection, + onAfterMerge: (targetAssetId) => { + const selected = assets.filter( + (a) => selectedAssetIds.has(a.id) && a.id !== targetAssetId + ); + const deletedIds = new Set(selected.map((a) => a.id)); + setSessionItems((prev) => prev.filter((a) => !deletedIds.has(a.id))); + loadedAssetIdsRef.current.delete(targetAssetId); + setAssetSegmentCounts((prev) => { + const next = new Map(prev); + next.delete(targetAssetId); + return next; + }); + setAssetDurations((prev) => { + const next = new Map(prev); + next.delete(targetAssetId); + return next; + }); + }, + onAfterDelete: (deletedIds) => { + const deletedSet = new Set(deletedIds); + setSessionItems((prev) => prev.filter((a) => !deletedSet.has(a.id))); + }, + onAfterUnmerge: (originalId, newIds) => { + loadedAssetIdsRef.current.delete(originalId); + setAssetSegmentCounts((prev) => { + const next = new Map(prev); + next.delete(originalId); + return next; + }); + setAssetDurations((prev) => { + const next = new Map(prev); + next.delete(originalId); + return next; + }); + for (const newId of newIds) { + loadedAssetIdsRef.current.add(newId); + setAssetSegmentCounts((prev) => { + const next = new Map(prev); + next.set(newId, 1); + return next; + }); + } + } }); // Check if we're at the end of the list (for add verse button behavior) @@ -2026,228 +2059,6 @@ const RecordingView = () => { [assets, currentUser, afterMerge] ); - const handleBatchMergeSelected = React.useCallback(() => { - const selectedOrdered = assets.filter( - (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' - ); - if (selectedOrdered.length < 2) return; - - RNAlert.alert( - 'Merge Assets', - `Are you sure you want to merge ${selectedOrdered.length} assets? The audio segments will be combined into the first selected asset, and the others will be deleted.`, - [ - { - text: 'Cancel', - style: 'cancel' - }, - { - text: 'Merge', - style: 'destructive', - onPress: () => { - void (async () => { - try { - if (!currentUser) return; - - const orderedIds = selectedOrdered.map((a) => a.id); - const { targetAssetId, deletedSourceAssetIds } = - await mergeLocalAssets({ - orderedAssetIds: orderedIds, - userId: currentUser.id - }); - - // Remove merged assets from session list (all except target get deleted) - const deletedIds = new Set(deletedSourceAssetIds); - setSessionItems((prev) => - prev.filter((a) => !deletedIds.has(a.id)) - ); - - // Force re-load of segment count for the merged target asset - debugLog( - `๐Ÿ”„ Forcing segment count reload for merged asset: ${targetAssetId}` - ); - loadedAssetIdsRef.current.delete(targetAssetId); - setAssetSegmentCounts((prev) => { - const next = new Map(prev); - next.delete(targetAssetId); - return next; - }); - setAssetDurations((prev) => { - const next = new Map(prev); - next.delete(targetAssetId); - return next; - }); - - afterMerge(targetAssetId); - - debugLog('โœ… Batch merge completed'); - } catch (e) { - console.error('Failed to batch merge local assets', e); - RNAlert.alert( - 'Error', - 'Failed to merge assets. Please try again.' - ); - } - })(); - } - } - ] - ); - }, [assets, selectedAssetIds, currentUser, afterMerge]); - - const handleBatchDeleteSelected = React.useCallback(() => { - const selectedOrdered = assets.filter( - (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' - ); - if (selectedOrdered.length < 1) return; - - RNAlert.alert( - 'Delete Assets', - `Are you sure you want to delete ${selectedOrdered.length} asset${selectedOrdered.length > 1 ? 's' : ''}? This action cannot be undone.`, - [ - { - text: 'Cancel', - style: 'cancel' - }, - { - text: 'Delete', - style: 'destructive', - onPress: () => { - void (async () => { - try { - for (const asset of selectedOrdered) { - await audioSegmentService.deleteAudioSegment(asset.id); - } - - // Remove deleted assets from session list - const deletedIds = new Set(selectedOrdered.map((a) => a.id)); - setSessionItems((prev) => - prev.filter((a) => !deletedIds.has(a.id)) - ); - - cancelSelection(); - await queryClient.invalidateQueries({ - queryKey: ['assets', 'by-quest', currentQuestId], - exact: false - }); - - debugLog( - `โœ… Batch delete completed: ${selectedOrdered.length} assets` - ); - } catch (e) { - console.error('Failed to batch delete local assets', e); - RNAlert.alert( - 'Error', - 'Failed to delete assets. Please try again.' - ); - } - })(); - } - } - ] - ); - }, [assets, selectedAssetIds, cancelSelection, queryClient, currentQuestId]); - - // Handle unmerge of a single selected asset - const handleUnmergeSelected = React.useCallback(() => { - const selectedAsset = assets.find( - (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' - ); - if (!selectedAsset || !currentUser) return; - - RNAlert.alert( - 'Unmerge Asset', - `Split "${selectedAsset.name}" into separate assets? The first audio segment stays on this asset; each additional segment becomes a new asset.`, - [ - { text: 'Cancel', style: 'cancel' }, - { - text: 'Unmerge', - isPreferred: true, - onPress: () => { - void (async () => { - try { - const { originalAssetId, newAssets } = await unmergeLocalAsset({ - assetId: selectedAsset.id, - userId: currentUser.id - }); - - // Clear caches for the modified original asset - loadedAssetIdsRef.current.delete(originalAssetId); - setAssetSegmentCounts((prev) => { - const next = new Map(prev); - next.delete(originalAssetId); - return next; - }); - setAssetDurations((prev) => { - const next = new Map(prev); - next.delete(originalAssetId); - return next; - }); - - // Add the new assets to the session list - for (const newAsset of newAssets) { - addSessionAsset({ - id: newAsset.id, - name: newAsset.name, - order_index: newAsset.orderIndex - }); - loadedAssetIdsRef.current.add(newAsset.id); - setAssetSegmentCounts((prev) => { - const next = new Map(prev); - next.set(newAsset.id, 1); - return next; - }); - } - - afterUnmerge( - originalAssetId, - newAssets.map((a) => a.id) - ); - - debugLog( - `โœ… Unmerge completed: "${selectedAsset.name}" โ†’ 1 + ${newAssets.length} assets` - ); - } catch (e) { - console.error('Failed to unmerge asset', e); - RNAlert.alert( - 'Error', - e instanceof Error - ? e.message - : 'Failed to unmerge asset. Please try again.' - ); - } - })(); - } - } - ] - ); - }, [assets, selectedAssetIds, currentUser, addSessionAsset, afterUnmerge]); - - // ============================================================================ - // SELECT ALL / DESELECT ALL - // ============================================================================ - - // Calculate if all local assets are selected - const allSelected = React.useMemo(() => { - if (!isSelectionMode || assets.length === 0) return false; - const selectableAssets = assets.filter((a) => a.source !== 'cloud'); - if (selectableAssets.length === 0) return false; - return selectableAssets.every((a) => selectedAssetIds.has(a.id)); - }, [isSelectionMode, assets, selectedAssetIds]); - - // Handle select all / deselect all - const handleSelectAll = React.useCallback(() => { - if (allSelected) { - // Deselect all - selectMultiple([]); - } else { - // Select all local assets (exclude cloud assets) - const selectableIds = assets - .filter((a) => a.source !== 'cloud') - .map((a) => a.id); - selectMultiple(selectableIds); - } - }, [allSelected, assets, selectMultiple]); - // ============================================================================ // RENAME ASSET // ============================================================================ @@ -2860,24 +2671,7 @@ const RecordingView = () => { style={{ paddingBottom: insets.bottom }} onLayout={(e) => setFooterHeight(e.nativeEvent.layout.height)} > - 1 - } - onUnmerge={handleUnmergeSelected} - /> + ) : ( { {/* Trim Segment Modal */} - {isTrimModalOpen && ( + {trimModal.isOpen && ( )} diff --git a/views/new/recording/components/RecordSelectionControls.tsx b/views/new/recording/components/RecordSelectionControls.tsx index 1a6bf578b..c0389ab85 100644 --- a/views/new/recording/components/RecordSelectionControls.tsx +++ b/views/new/recording/components/RecordSelectionControls.tsx @@ -4,12 +4,16 @@ * Two-row layout: * - Top row: select all toggle, "N selected" label, cancel button * - Bottom row: assign verse, trim, merge, unmerge, delete + * + * Receives `controlsProps` from the useSelectionActions hook (spread by the + * parent) so views share one source of truth for derived state and handlers. */ import { Button } from '@/components/ui/button'; import { Icon } from '@/components/ui/icon'; import { Text } from '@/components/ui/text'; import { useLocalization } from '@/hooks/useLocalization'; +import type { SelectionControlsProps } from '@/views/new/recording/hooks/useSelectionActions'; import { Bookmark, ListChecks, @@ -24,43 +28,32 @@ import React from 'react'; import type { LayoutChangeEvent } from 'react-native'; import { View } from 'react-native'; -interface RecordSelectionControlsProps { - selectedCount: number; - onCancel: () => void; - onMerge: () => void; - onDelete: () => void; - onTrim?: () => void; - allowSelectAll?: boolean; - allSelected?: boolean; - onSelectAll?: () => void; - allowAssignVerse?: boolean; +interface RecordSelectionControlsProps extends SelectionControlsProps { + enableAssignVerse?: boolean; onAssignVerse?: () => void; - showMerge?: boolean; - showUnmerge?: boolean; - onUnmerge?: () => void; onLayout?: (height: number) => void; } export const RecordSelectionControls = React.memo( function RecordSelectionControls({ selectedCount, + allSelected, + enableMerge, + showUnmerge, + canTrim, onCancel, onMerge, onDelete, + onUnmerge, onTrim, - allowSelectAll = false, - allSelected = false, onSelectAll, - allowAssignVerse = false, + enableAssignVerse = false, onAssignVerse, - showMerge = true, - showUnmerge = false, - onUnmerge, onLayout }: RecordSelectionControlsProps) { const { t } = useLocalization(); - const shouldShowTrim = selectedCount === 1 && !!onTrim; - const shouldShowMerge = showMerge && selectedCount >= 2; + const shouldShowTrim = canTrim; + const shouldShowMerge = enableMerge && selectedCount >= 2; const handleLayout = React.useCallback( (e: LayoutChangeEvent) => onLayout?.(e.nativeEvent.layout.height), @@ -74,11 +67,9 @@ export const RecordSelectionControls = React.memo( > {/* Top row: select all, count, cancel */} - {allowSelectAll && onSelectAll && ( - - )} + - {allowAssignVerse && onAssignVerse && ( + {enableAssignVerse && onAssignVerse && ( @@ -129,7 +120,7 @@ export const RecordSelectionControls = React.memo( )} - {showUnmerge && onUnmerge && ( + {showUnmerge && ( )} diff --git a/views/new/recording/hooks/useSelectionActions.ts b/views/new/recording/hooks/useSelectionActions.ts index c8768e5ad..940360a9c 100644 --- a/views/new/recording/hooks/useSelectionActions.ts +++ b/views/new/recording/hooks/useSelectionActions.ts @@ -161,7 +161,9 @@ export function useSelectionActions({ RNAlert.alert( t('mergeAssets') || 'Merge Assets', - `Are you sure you want to merge ${selected.length} assets? The audio segments will be combined into the first selected asset, and the others will be deleted.`, + t('mergeAssetsConfirmation', { + count: selected.length + }), [ { text: t('cancel'), style: 'cancel' }, { @@ -181,7 +183,7 @@ export function useSelectionActions({ console.error('Failed to merge assets', e); RNAlert.alert( t('error'), - 'Failed to merge assets. Please try again.' + t('failedToMergeAssets') ); } })(); @@ -201,7 +203,9 @@ export function useSelectionActions({ RNAlert.alert( t('deleteAssets') || 'Delete Assets', - `Are you sure you want to delete ${selected.length} asset${selected.length > 1 ? 's' : ''}? This action cannot be undone.`, + t('deleteAssetsConfirmation', { + count: selected.length + }), [ { text: t('cancel'), style: 'cancel' }, { @@ -221,7 +225,7 @@ export function useSelectionActions({ console.error('Failed to delete assets', e); RNAlert.alert( t('error'), - 'Failed to delete assets. Please try again.' + t('failedToDeleteAssets') ); } })(); @@ -241,7 +245,9 @@ export function useSelectionActions({ RNAlert.alert( t('unmergeAsset') || 'Unmerge Asset', - `Split "${selectedAsset.name}" into separate assets? The first audio segment stays on this asset; each additional segment becomes a new asset.`, + t('unmergeAssetConfirmation', { + name: selectedAsset.name ?? t('asset') + }), [ { text: t('cancel'), style: 'cancel' }, { @@ -269,7 +275,7 @@ export function useSelectionActions({ t('error'), e instanceof Error ? e.message - : 'Failed to unmerge asset. Please try again.' + : t('failedToUnmergeAsset') ); } })(); From a99378444d25253c56f3d278abe4a6c9e53b654b Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Sat, 21 Feb 2026 19:51:13 -0800 Subject: [PATCH 120/143] improved drag gesture handling on edges of waveform --- .../recording/components/TrimSegmentModal.tsx | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/views/new/recording/components/TrimSegmentModal.tsx b/views/new/recording/components/TrimSegmentModal.tsx index 3015cabe8..598c62bd1 100644 --- a/views/new/recording/components/TrimSegmentModal.tsx +++ b/views/new/recording/components/TrimSegmentModal.tsx @@ -46,6 +46,10 @@ export function TrimSegmentModal({ const barCount = 128; const waveformHeight = 64; const minSelectionWidthPx = 32; + const edgeHandleTouchWidth = 56; + const edgeHandleVerticalOverflow = 12; + const waveformPanEdgeGuardPx = 20; + const halfEdgeHandleTouchWidth = edgeHandleTouchWidth / 2; const [waveformContainerWidth, setWaveformContainerWidth] = React.useState(0); const [selectionStart, setSelectionStart] = React.useState(0.1); @@ -660,7 +664,13 @@ export function TrimSegmentModal({ setWaveformContainerWidth(event.nativeEvent.layout.width); }} > - + {!hasWaveform ? ( From e89326cab695b82134af960e75ad6a73a9095cbf Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 23 Feb 2026 23:20:51 +0000 Subject: [PATCH 121/143] rename localization migration to latest timestamp Co-authored-by: Keean --- ...> 20260223232044_add_hindi_burmese_thai_mandarin_ui_ready.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename supabase/migrations/{20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql => 20260223232044_add_hindi_burmese_thai_mandarin_ui_ready.sql} (100%) diff --git a/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql b/supabase/migrations/20260223232044_add_hindi_burmese_thai_mandarin_ui_ready.sql similarity index 100% rename from supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql rename to supabase/migrations/20260223232044_add_hindi_burmese_thai_mandarin_ui_ready.sql From 7306bb648f8867649babe8f56ef5c5cea57182e3 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 23 Feb 2026 17:28:34 -0600 Subject: [PATCH 122/143] fix migration --- .../20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql b/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql index a2d7fdc08..ea947f793 100644 --- a/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql +++ b/supabase/migrations/20260219001225_add_hindi_burmese_thai_mandarin_ui_ready.sql @@ -186,7 +186,7 @@ INSERT INTO public.region_alias ( name ) SELECT - gen_random_uuid()::text, + gen_random_uuid(), r.id, 'bd6027e5-b122-43b9-ba0a-4f5d5a25f1dd', 'Burma' From 75d8519cd2fb8f012c786747569593001bff31d2 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 23 Feb 2026 17:55:35 -0600 Subject: [PATCH 123/143] fix translation/transcription cards --- components/TranslationCard.tsx | 9 +++++++-- views/new/NextGenTranslationModalAlt.tsx | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/components/TranslationCard.tsx b/components/TranslationCard.tsx index 238722452..783e0a0ac 100644 --- a/components/TranslationCard.tsx +++ b/components/TranslationCard.tsx @@ -10,8 +10,8 @@ import { SHOW_DEV_ELEMENTS } from '@/utils/featureFlags'; import { cn } from '@/utils/styleUtils'; import { ThumbsDownIcon, ThumbsUpIcon } from 'lucide-react-native'; import { View } from 'react-native'; -import { Button } from './ui/button'; import AudioPlayer from './AudioPlayer'; +import { Button } from './ui/button'; interface TranslationCardProps { asset: WithSource; @@ -47,7 +47,12 @@ export const TranslationCard = ({ }; return ( - From 100b0a5023d49843d54bea990b54e85300805a22 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 23 Feb 2026 18:19:04 -0600 Subject: [PATCH 125/143] attempt fix for audio recording state machine --- components/AudioRecorder.tsx | 19 +++++++++++-------- views/new/NextGenAssetDetailView.tsx | 14 ++++++++------ 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/components/AudioRecorder.tsx b/components/AudioRecorder.tsx index 8f55bd01c..52a304b19 100644 --- a/components/AudioRecorder.tsx +++ b/components/AudioRecorder.tsx @@ -129,7 +129,8 @@ const AudioRecorder: React.FC = ({ }, []); const stopRecording = useCallback(async () => { - if (!recorder.isRecording) return; + // Allow stopping from both active-recording and paused states + if (!recorder.isRecording && !isRecordingPaused) return; try { await recorder.stop(); @@ -150,7 +151,7 @@ const AudioRecorder: React.FC = ({ } catch (error) { console.error('Failed to stop recording:', error); } - }, [recorder, recordingUri, onRecordingComplete]); + }, [recorder, recordingUri, onRecordingComplete, isRecordingPaused]); // Keep ref up to date for status listener stopRecordingRef.current = stopRecording; @@ -173,13 +174,9 @@ const AudioRecorder: React.FC = ({ setPermissionGranted(granted); if (!granted) return; } - resetRecording?.(); - await setAudioModeAsync({ - allowsRecording: true, - playsInSilentMode: true - }); - // Resume recording if it was paused + // Resume recording if it was paused โ€” skip audio mode changes + // to avoid disrupting the in-progress recording session on Android if (isRecordingPaused) { recorder.record(); setIsRecordingActive(true); @@ -187,6 +184,12 @@ const AudioRecorder: React.FC = ({ return; } + resetRecording?.(); + await setAudioModeAsync({ + allowsRecording: true, + playsInSilentMode: true + }); + console.log('recording'); // Prepare and start a new recording with the selected quality diff --git a/views/new/NextGenAssetDetailView.tsx b/views/new/NextGenAssetDetailView.tsx index ad5556905..8a30cc8db 100644 --- a/views/new/NextGenAssetDetailView.tsx +++ b/views/new/NextGenAssetDetailView.tsx @@ -329,12 +329,14 @@ export default function NextGenAssetDetailView() { const translationLanguageId = targetLanguoidLink[0]?.languoid_id || ''; - const { hasAccess: canTranslate, membership: translateMembership } = - useUserPermissions( - currentProjectId || '', - 'translate', - Boolean(projectData?.private) - ); + const { + hasAccess: canTranslateFromPermissions, + membership: translateMembership + } = useUserPermissions( + currentProjectId || '', + 'translate', + Boolean(projectData?.private) + ); // Determine which asset to display const activeAsset = offlineAsset?.[0] as From c31604a3101073e32eb3a3f159b2049bc74dc7b4 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 23 Feb 2026 18:19:59 -0600 Subject: [PATCH 126/143] attempt fix for cannot create translation/transcription --- views/new/NextGenAssetDetailView.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/views/new/NextGenAssetDetailView.tsx b/views/new/NextGenAssetDetailView.tsx index 8a30cc8db..dd2236621 100644 --- a/views/new/NextGenAssetDetailView.tsx +++ b/views/new/NextGenAssetDetailView.tsx @@ -346,6 +346,12 @@ export default function NextGenAssetDetailView() { }) | undefined; + // For local (unpublished) content, the current user is always the creator. + // useUserPermissions may initially return false for private projects because its + // internal query for creator_id hasn't resolved yet (race condition on first mount). + const isLocalContent = activeAsset?.source === 'local'; + const canTranslate = canTranslateFromPermissions || isLocalContent; + // Track previous asset ID to detect when asset changes const prevAssetIdRef = React.useRef(null); From 6bc3fd55b98095b3ad6ced0981882768ffcdd763 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 23 Feb 2026 18:56:37 -0600 Subject: [PATCH 127/143] try large machine for ios simulator runs --- .eas/workflows/run-preview-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index 15f3bf863..e132ac40f 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -112,7 +112,7 @@ jobs: type: maestro environment: preview image: latest - runs_on: macos-medium + runs_on: macos-large params: record_screen: true device_identifier: 'iPhone 16e' From b154b651960aacc1106fde47612311db946a6887 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Mon, 23 Feb 2026 19:22:06 -0600 Subject: [PATCH 128/143] update production ios simulator to large machine for consistency --- .eas/workflows/run-production-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eas/workflows/run-production-tests.yml b/.eas/workflows/run-production-tests.yml index 7183b443a..668d2c314 100644 --- a/.eas/workflows/run-production-tests.yml +++ b/.eas/workflows/run-production-tests.yml @@ -111,7 +111,7 @@ jobs: type: maestro environment: production image: latest - runs_on: macos-medium + runs_on: macos-large params: record_screen: true build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} From 8b3779ef4e001f48d96586bc5cebd240256b8031 Mon Sep 17 00:00:00 2001 From: Moss Doerksen Date: Fri, 27 Feb 2026 11:53:15 -0800 Subject: [PATCH 129/143] typecheck --- database_services/assetService.ts | 14 +++++----- hooks/db/useAssets.ts | 2 +- package-lock.json | 26 +++++++++++++++++ .../components/RecordSelectionControls.tsx | 28 +++++++++++-------- .../recording/services/recordingService.ts | 2 +- 5 files changed, 51 insertions(+), 21 deletions(-) diff --git a/database_services/assetService.ts b/database_services/assetService.ts index 8b664abf7..a7384af1a 100644 --- a/database_services/assetService.ts +++ b/database_services/assetService.ts @@ -189,10 +189,9 @@ export async function updateAssetMetadata( } // Safe to update - it's local only - const metadataStr = metadata ? JSON.stringify(metadata) : null; await system.db .update(assetLocalTable) - .set({ metadata: metadataStr }) + .set({ metadata: metadata }) .where(eq(assetLocalTable.id, assetId)); console.log(`โœ… Asset ${assetId.slice(0, 8)} metadata updated`); @@ -279,13 +278,14 @@ export async function batchUpdateAssetMetadata( // Update each local asset for (const update of localUpdates) { - const setPayload: { metadata?: string | null; order_index?: number } = {}; + const setPayload: { + metadata?: AssetMetadata | null; + order_index?: number; + } = {}; // Only include metadata if explicitly provided if (update.metadata !== undefined) { - setPayload.metadata = update.metadata - ? JSON.stringify(update.metadata) - : null; + setPayload.metadata = update.metadata ?? null; } // Only include order_index if explicitly provided @@ -468,7 +468,7 @@ export interface CreateLocalAssetParams { text: string; contentMetadata?: OpMetadata | null; trimMetadata?: string | null; - assetMetadata?: string | null; + assetMetadata?: AssetMetadata | null; shiftExisting?: boolean; } diff --git a/hooks/db/useAssets.ts b/hooks/db/useAssets.ts index d19a8cb1a..7eec492be 100644 --- a/hooks/db/useAssets.ts +++ b/hooks/db/useAssets.ts @@ -46,7 +46,7 @@ export type QuestAssetLink = InferSelectModel; export type AssetContent = InferSelectModel; export type Vote = InferSelectModel; -type AssetRowWithTagIds = AssetQuestLink & { +type AssetRowWithTagIds = Omit & { tag_ids?: unknown; metadata?: unknown; }; diff --git a/package-lock.json b/package-lock.json index 2c6863f33..688ec2ff6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26312,6 +26312,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26328,6 +26329,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26344,6 +26346,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26360,6 +26363,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26376,6 +26380,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26392,6 +26397,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26408,6 +26414,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26424,6 +26431,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26440,6 +26448,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26456,6 +26465,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26472,6 +26482,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26488,6 +26499,7 @@ "cpu": [ "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26504,6 +26516,7 @@ "cpu": [ "mips64el" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26520,6 +26533,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26536,6 +26550,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26552,6 +26567,7 @@ "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26568,6 +26584,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26584,6 +26601,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26600,6 +26618,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26616,6 +26635,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26632,6 +26652,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26648,6 +26669,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26664,6 +26686,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26680,6 +26703,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26696,6 +26720,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -26712,6 +26737,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ diff --git a/views/new/recording/components/RecordSelectionControls.tsx b/views/new/recording/components/RecordSelectionControls.tsx index a62503644..c9f50f2ad 100644 --- a/views/new/recording/components/RecordSelectionControls.tsx +++ b/views/new/recording/components/RecordSelectionControls.tsx @@ -28,7 +28,7 @@ import React from 'react'; import type { LayoutChangeEvent } from 'react-native'; import { View } from 'react-native'; -interface RecordSelectionControlsProps extends SelectionControlsProps { +interface RecordSelectionControlsProps extends Partial { enableAssignVerse?: boolean; onAssignVerse?: () => void; onLayout?: (height: number) => void; @@ -36,11 +36,11 @@ interface RecordSelectionControlsProps extends SelectionControlsProps { export const RecordSelectionControls = React.memo( function RecordSelectionControls({ - selectedCount, - allSelected, - enableMerge, - showUnmerge, - canTrim, + selectedCount = 0, + allSelected = false, + enableMerge = false, + showUnmerge = false, + canTrim = false, onCancel, onMerge, onDelete, @@ -67,7 +67,11 @@ export const RecordSelectionControls = React.memo( > {/* Top row: select all, count, cancel */} - - - {t('doRecord')} - - - {t('assets')} ({assets.length}) - - - {assets.length > 0 && ( - <> - - - )} - - - {/* Scrollable list area - full height with padding for controls */} - - {assets.length === 0 && ( - - - {t('noAssetsYetStartRecording')} - - - )} - - {/* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition */} - {USE_INSERTION_WHEEL ? ( - // ArrayInsertionWheel mode - always show wheel, even when empty - - {wheelChildren} - - ) : ( - // LegendList mode (legacy) - assetsForLegendList.length > 0 && ( - - ) - )} - - - {/* Bottom controls - absolutely positioned */} - - {isSelectionMode ? ( - - - - ) : ( - setShowVADSettings(true)} - onAutoCalibratePress={() => { - setAutoCalibrateOnOpen(true); - setShowVADSettings(true); - }} - currentEnergy={currentEnergy} - vadThreshold={vadThreshold} - energyShared={energyShared} - isRecordingShared={isRecordingShared} - isDiscardedShared={isDiscardedShared} - displayMode={vadDisplayMode} - /> - )} - - - {/* Rename drawer */} - { - setShowRenameDrawer(open); - if (!open) { - setRenameAssetId(null); - } - }} - onSave={handleSaveRename} - /> - - {/* VAD Settings Drawer */} - { - setShowVADSettings(open); - // Reset auto-calibrate flag when drawer closes - if (!open) { - setAutoCalibrateOnOpen(false); - } - }} - threshold={vadThreshold} - onThresholdChange={setVadThreshold} - silenceDuration={vadSilenceDuration} - onSilenceDurationChange={setVadSilenceDuration} - minSegmentLength={vadMinSegmentLength} - onMinSegmentLengthChange={setVadMinSegmentLength} - isVADActive={isVADActive} - displayMode={vadDisplayMode} - onDisplayModeChange={setVadDisplayMode} - autoCalibrateOnOpen={autoCalibrateOnOpen} - energyShared={energyShared} - /> - - {/* Recording Help Dialog - shown once on first visit */} - - - ); -}; - -export default RecordingViewSimplified; From 3c69fff997d8958a690336fedd295fea72667ee9 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Tue, 3 Mar 2026 16:16:57 -0600 Subject: [PATCH 137/143] remove unused files --- components/ArrayInsertionWheel.tsx | 267 -- components/ArrayInsertionWheelContainer.tsx | 100 - .../components/BibleRecordingView.tsx | 2940 ----------------- 3 files changed, 3307 deletions(-) delete mode 100644 components/ArrayInsertionWheel.tsx delete mode 100644 components/ArrayInsertionWheelContainer.tsx delete mode 100644 views/new/recording/components/BibleRecordingView.tsx diff --git a/components/ArrayInsertionWheel.tsx b/components/ArrayInsertionWheel.tsx deleted file mode 100644 index 9680fd038..000000000 --- a/components/ArrayInsertionWheel.tsx +++ /dev/null @@ -1,267 +0,0 @@ -import type { PickerItem } from '@quidone/react-native-wheel-picker'; -import WheelPicker from '@quidone/react-native-wheel-picker'; -import { ArrowDownNarrowWide, Mic } from 'lucide-react-native'; -import React from 'react'; -import { View } from 'react-native'; -import ArrayInsertionWheelContainer from './ArrayInsertionWheelContainer'; -import { Icon } from './ui/icon'; - -export interface ArrayInsertionWheelHandle { - scrollToInsertionIndex: (index: number, animated?: boolean) => void; - getInsertionIndex: () => number; - scrollItemToTop: (index: number, animated?: boolean) => void; -} - -interface ArrayInsertionWheelPropsBase { - value: number; // 0..N insertion boundary - onChange?: (index: number) => void; - rowHeight: number; - className?: string; - topInset?: number; // unused in native wheel, kept for API parity - bottomInset?: number; // unused in native wheel, kept for API parity - boundaryComponent?: React.ReactNode; -} - -// API 1: Eager rendering with children (backward compatible) -interface ArrayInsertionWheelPropsEager extends ArrayInsertionWheelPropsBase { - children: React.ReactNode[]; - data?: never; - renderItem?: never; -} - -// API 2: Lazy rendering with data + renderItem (optimized) -interface ArrayInsertionWheelPropsLazy extends ArrayInsertionWheelPropsBase { - children?: never; - data: T[]; - renderItem: (item: T, index: number) => React.ReactElement; -} - -type ArrayInsertionWheelProps = - | ArrayInsertionWheelPropsEager - | ArrayInsertionWheelPropsLazy; - -function ArrayInsertionWheelInternal( - props: ArrayInsertionWheelProps, - ref: React.Ref -) { - const { - value, - onChange, - rowHeight, - className, - topInset = 0, - bottomInset = 0, - boundaryComponent - } = props; - - // Determine which API is being used - const isLazyMode = 'data' in props && props.data !== undefined; - - // Calculate item count based on mode - let itemCount: number; - if (isLazyMode) { - itemCount = props.data.length + 1; - } else { - // Eager mode - children is guaranteed by type - itemCount = props.children.length + 1; - } - - const clampedValue = Math.max(0, Math.min(itemCount - 1, value)); - - // Stabilize clampedValue to prevent unnecessary WheelPicker updates - const stableClampedValue = React.useMemo(() => { - return clampedValue; - }, [clampedValue]); - - // Debug logging to trace clamping - React.useEffect(() => { - if (clampedValue !== value) { - console.log( - 'โš ๏ธ CLAMPING OCCURRED: input value=', - value, - 'โ†’ clamped=', - clampedValue, - '| valid range: 0-' + (itemCount - 1) - ); - } - }, [value, clampedValue, itemCount]); - - const pickerData = React.useMemo[]>( - () => Array.from({ length: itemCount }, (_, i) => ({ value: i })), - [itemCount] - ); - - // Dynamically match visible rows to the actual available height so the - // selection overlay stays centered and the user can reach the very end - const [visibleCount, setVisibleCount] = React.useState(5); - const [wheelHeight, setWheelHeight] = React.useState(rowHeight * 5); - const [containerPad, setContainerPad] = React.useState({ top: 0, bottom: 0 }); - const onContainerLayout = React.useCallback( - (e: { nativeEvent: { layout: { height: number } } }) => { - const totalHeight = e.nativeEvent.layout.height; - const available = Math.max(0, totalHeight - topInset - bottomInset); - let count = Math.max(3, Math.floor(available / rowHeight)); - // Multiply by 2 to make the wheel taller (use more of the available space) - count = Math.floor(count * 2); - // Keep it odd for a centered selection line - if (count % 2 === 0) count = Math.max(3, count - 1); - // Ensure the wheel doesn't exceed available space - const maxCount = Math.floor(available / rowHeight); - if (maxCount % 2 === 0) count = Math.min(count, maxCount - 1); - else count = Math.min(count, maxCount); - - setVisibleCount(count); - const newWheelHeight = count * rowHeight; - setWheelHeight(newWheelHeight); - const leftover = Math.max(0, available - newWheelHeight); - const half = leftover / 2; - setContainerPad({ top: topInset + half, bottom: bottomInset + half }); - }, - [rowHeight, topInset, bottomInset] - ); - - React.useImperativeHandle( - ref, - () => ({ - scrollToInsertionIndex: (index: number) => { - // Parent controls value; just notify desired change - onChange?.(Math.max(0, Math.min(itemCount - 1, index))); - }, - getInsertionIndex: () => stableClampedValue, - scrollItemToTop: (index: number) => { - onChange?.(Math.max(0, Math.min(itemCount - 1, index + 1))); - } - }), - [stableClampedValue, itemCount, onChange] - ); - - const renderItemInternal = React.useCallback( - ({ item }: { item: PickerItem }): React.ReactElement => { - const i = item.value; - - // Calculate data length based on mode - let dataLength: number; - if (isLazyMode) { - dataLength = props.data.length; - } else { - dataLength = props.children.length; - } - - // Render actual items (not the final boundary) - if (i < dataLength) { - if (isLazyMode) { - // Lazy mode: call renderItem with data item - const dataItem = props.data[i]; - if (!dataItem) { - // Defensive: should never happen, but TypeScript needs this - return ; - } - return ( - - {props.renderItem(dataItem, i)} - - ); - } else { - // Eager mode: use pre-created children - const child = props.children[i]; - return ( - - {child} - - ); - } - } - - // Final boundary (i === dataLength) - // When empty (0 items), this is position 0 - the only insertion point - // When non-empty, this is position N - insert after all items - if (boundaryComponent) { - return <>{boundaryComponent}; - } - - return ( - - - {/* Language-agnostic visual: mic + circle-plus = "add recording here" */} - - - - - - - ); - }, - [isLazyMode, props, rowHeight, boundaryComponent] - ); - - return ( - - onChange?.(item.value)} - // Constrain height to an exact multiple of rowHeight so overlay aligns - style={{ height: wheelHeight }} - renderItem={renderItemInternal} - renderItemContainer={({ key, ...props }) => ( - - )} - renderOverlay={() => ( - - )} - /> - - ); -} - -const ArrayInsertionWheel = React.forwardRef(ArrayInsertionWheelInternal) as < - T = unknown ->( - props: ArrayInsertionWheelProps & { - ref?: React.Ref; - } -) => React.ReactElement; - -export default ArrayInsertionWheel; diff --git a/components/ArrayInsertionWheelContainer.tsx b/components/ArrayInsertionWheelContainer.tsx deleted file mode 100644 index aab585ec1..000000000 --- a/components/ArrayInsertionWheelContainer.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import React, { memo, useMemo } from 'react'; -import { Animated, TouchableWithoutFeedback } from 'react-native'; -// import {useScrollContentOffset} from '../contexts/ScrollContentOffsetContext'; -// import {usePickerItemHeight} from '../contexts/PickerItemHeightContext'; -// import type {ListMethods, RenderItem} from '../types'; -import type { - PickerItem, - RenderItemContainerProps -} from '@quidone/react-native-wheel-picker'; -import { - usePickerItemHeight, - useScrollContentOffset -} from '@quidone/react-native-wheel-picker'; -// type PickerItemContainerProps = { -// listRef: RefObject; -// item: any; -// index: number; -// faces: ReadonlyArray; -// renderItem: RenderItem; -// itemTextStyle: StyleProp | undefined; -// enableScrollByTapOnItem: boolean | undefined; -// readOnly: boolean | undefined; -// }; -const PickerItemContainer = >({ - listRef, - index, - item, - faces, - renderItem, - itemTextStyle, - enableScrollByTapOnItem = false, - readOnly = false -}: RenderItemContainerProps) => { - const offset = useScrollContentOffset(); - const height = usePickerItemHeight(); - const { opacity, rotateX, translateY } = useMemo(() => { - const inputRange = faces.map((f) => height * (index + f.index)); - return { - opacity: offset.interpolate({ - inputRange: inputRange, - outputRange: faces.map((x) => x.opacity), - extrapolate: 'clamp' - }), - rotateX: offset.interpolate({ - inputRange: inputRange, - outputRange: faces.map((x) => `${-x.deg}deg`), - extrapolate: 'clamp' - }), - translateY: offset.interpolate({ - inputRange: inputRange, - outputRange: faces.map((x) => x.offsetY), - extrapolate: 'clamp' - }) - }; - }, [faces, height, index, offset]); - const renderAnimatedView = () => { - return ( - - {renderItem({ - item, - index, - itemTextStyle - })} - - ); - }; - if (!enableScrollByTapOnItem || readOnly) { - return renderAnimatedView(); - } - const scrollToItem = () => - listRef.current?.scrollToIndex({ - index, - animated: true - }); - return ( - - {renderAnimatedView()} - - ); -}; -export default memo(PickerItemContainer); diff --git a/views/new/recording/components/BibleRecordingView.tsx b/views/new/recording/components/BibleRecordingView.tsx deleted file mode 100644 index b17e9dbd4..000000000 --- a/views/new/recording/components/BibleRecordingView.tsx +++ /dev/null @@ -1,2940 +0,0 @@ -import type { ArrayInsertionWheelHandle } from '@/components/ArrayInsertionWheel'; -import ArrayInsertionWheel from '@/components/ArrayInsertionWheel'; -import { RecordingHelpDialog } from '@/components/RecordingHelpDialog'; -import { VersePill } from '@/components/VersePill'; -import { Button } from '@/components/ui/button'; -import { Icon } from '@/components/ui/icon'; -import { Text } from '@/components/ui/text'; -import { useAudio } from '@/contexts/AudioContext'; -import { useAuth } from '@/contexts/AuthContext'; -import { - getNextOrderIndex as getNextAclOrderIndex, - renameAsset -} from '@/database_services/assetService'; -import { audioSegmentService } from '@/database_services/audioSegmentService'; -import { - FiaStepDrawer, - INITIAL_FIA_DRAWER_STATE -} from '@/components/FiaStepDrawer'; -import type { FiaDrawerState } from '@/components/FiaStepDrawer'; -import { - asset_content_link, - project_language_link, - quest as questTable -} from '@/db/drizzleSchema'; -import type { FiaMetadata } from '@/db/drizzleSchemaColumns'; -import { system } from '@/db/powersync/system'; -import { useProjectById } from '@/hooks/db/useProjects'; -import { useCurrentNavigation } from '@/hooks/useAppNavigation'; -import { useLocalization } from '@/hooks/useLocalization'; -import { useLocalStore } from '@/store/localStore'; -import { resolveTable } from '@/utils/dbUtils'; -import { - fileExists, - getLocalAttachmentUriWithOPFS, - saveAudioLocally -} from '@/utils/fileUtils'; -import RNAlert from '@blazejkustra/react-native-alert'; -import { toCompilableQuery } from '@powersync/drizzle-driver'; -import AsyncStorage from '@react-native-async-storage/async-storage'; -import { useQueryClient } from '@tanstack/react-query'; -import { and, asc, eq } from 'drizzle-orm'; -import { createAudioPlayer, type AudioPlayer } from 'expo-audio'; -import { - ArrowDownNarrowWide, - ArrowLeft, - BookOpenIcon, - ChevronLeft, - ListVideo, - Mic, - PauseIcon, - Plus -} from 'lucide-react-native'; -import React, { useMemo } from 'react'; -import { InteractionManager, Pressable, View } from 'react-native'; -import { useSafeAreaInsets } from 'react-native-safe-area-context'; -import { useHybridData } from '../../useHybridData'; -import { useSelectionMode } from '../hooks/useSelectionMode'; -import { useVADRecording } from '../hooks/useVADRecording'; -import { saveRecording } from '../services/recordingService'; -import { AssetCard } from './AssetCard'; -import { FullScreenVADOverlay } from './FullScreenVADOverlay'; -import { RecordingControls } from './RecordingControls'; -import { RenameAssetDrawer } from './RenameAssetDrawer'; -import { SelectionControls } from './SelectionControls'; -import { VADSettingsDrawer } from './VADSettingsDrawer'; - -function extractFiaMetadata(metadata: unknown): FiaMetadata | null { - try { - const parsed = - typeof metadata === 'string' ? JSON.parse(metadata) : metadata; - if ( - parsed && - typeof parsed === 'object' && - 'fia' in parsed && - parsed.fia && - typeof parsed.fia === 'object' - ) { - return parsed.fia as FiaMetadata; - } - } catch { - // Ignore parse errors - } - return null; -} - -const DEBUG_MODE = false; -function debugLog(...args: unknown[]) { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (DEBUG_MODE) { - console.log(...args); - } -} - -interface UIAsset { - type: 'asset'; - id: string; - name: string; - created_at: string; - order_index: number; - source: 'local' | 'synced' | 'cloud'; - segmentCount: number; - duration?: number; // Total duration in milliseconds - verse?: { from: number; to: number } | null; // Verse metadata (can be a range like 1-3) -} - -interface VersePillItem { - type: 'pill'; - id: string; // Unique ID for the pill (e.g., 'pill-verse-5') - order_index: number; - verse: { from: number; to: number } | null; // Verse metadata -} - -// Union type for items in the list (assets or verse pills) -type ListItem = UIAsset | VersePillItem; - -// Type guard to check if item is an asset -const isAsset = (item: ListItem): item is UIAsset => item.type === 'asset'; - -// Type guard to check if item is a pill -const isPill = (item: ListItem): item is VersePillItem => item.type === 'pill'; - -// Default order_index for unassigned verses: (999 * 1000 + 1) * 1000 = 999001000 -// Sequence starts at 1, not 0 (e.g., verse 7 โ†’ 7001000, 7002000...) -// The extra *1000 leaves space for future insertions between assets -const DEFAULT_ORDER_INDEX = 999001000; - -// Verse metadata type -interface VerseRange { - from: number; - to: number; -} - -// Asset metadata type (prefixed with _ to allow unused) -interface _AssetMetadata { - verse?: VerseRange; -} - -interface BibleRecordingViewProps { - // Callback when user navigates back - receives array of verse numbers that were recorded - // Used by parent to normalize order_index for those verses - onBack: (recordedVerses?: number[]) => void; - // Pass existing assets as initial data to avoid redundant query - initialAssets?: unknown[]; - // Label for the recording session (e.g., verse reference like "5" or "5-7") - label?: string; - // Initial order_index for new recordings (default: 999001 for unassigned) - initialOrderIndex?: number; - // Verse metadata from the selected asset - verse?: VerseRange; - // Book chapter label for separators (short name, e.g., "Gen 1" or "Mat 3") - bookChapterLabel?: string; - // Book chapter label for header (full name from quest.name, e.g., "Genesis 1" or "Matthew 3") - bookChapterLabelFull?: string; - // Next verse number to record (for automatic progression) - nextVerse?: number | null; - // Limit verse number (for stopping automatic progression) - limitVerse?: number | null; -} - -const BibleRecordingView = ({ - onBack, - initialAssets: _initialAssets, // Not used - session mode starts with empty list - label: _label = '', // TODO: Display label in header - initialOrderIndex: _initialOrderIndex = DEFAULT_ORDER_INDEX, // TODO: Use for order_index calculation - verse: _verse, // TODO: Use for verse tracking and metadata - bookChapterLabel = 'Verse', // Book chapter label for separators (short name, e.g., "Gen 1") - bookChapterLabelFull, // Book chapter label for header (full name from quest, e.g., "Genesis 1") - nextVerse = null, // Next verse number to record (for automatic progression) - limitVerse = null // Limit verse number (for stopping automatic progression) -}: BibleRecordingViewProps) => { - // Log props on mount - React.useEffect(() => { - console.log( - `๐Ÿ“ฅ BibleRecordingView props | initialOrderIndex: ${_initialOrderIndex} | label: "${_label}" | verse: ${_verse ? `${_verse.from}-${_verse.to}` : 'null'} | nextVerse: ${nextVerse} | limitVerse: ${limitVerse}` - ); - }, [_initialOrderIndex, _label, _verse, nextVerse, limitVerse]); - - const queryClient = useQueryClient(); - const { t } = useLocalization(); - const navigation = useCurrentNavigation(); - const { currentQuestId, currentProjectId } = navigation; - const { currentUser } = useAuth(); - const { project: currentProject } = useProjectById(currentProjectId); - const audioContext = useAudio(); - const insets = useSafeAreaInsets(); - - // Get target languoid_id from project_language_link - const { data: targetLanguoidLink = [] } = useHybridData<{ - languoid_id: string | null; - }>({ - dataType: 'project-target-languoid-id', - queryKeyParams: [currentProjectId || ''], - offlineQuery: toCompilableQuery( - system.db - .select({ languoid_id: project_language_link.languoid_id }) - .from(project_language_link) - .where( - and( - eq(project_language_link.project_id, currentProjectId!), - eq(project_language_link.language_type, 'target') - ) - ) - .limit(1) - ), - cloudQueryFn: async () => { - if (!currentProjectId) return []; - const { data, error } = await system.supabaseConnector.client - .from('project_language_link') - .select('languoid_id') - .eq('project_id', currentProjectId) - .eq('language_type', 'target') - .not('languoid_id', 'is', null) - .limit(1) - .overrideTypes<{ languoid_id: string | null }[]>(); - if (error) throw error; - return data; - }, - enableCloudQuery: !!currentProjectId, - enableOfflineQuery: !!currentProjectId - }); - - const targetLanguoidId = targetLanguoidLink[0]?.languoid_id; - - // Fetch quest metadata for FIA drawer support - type Quest = typeof questTable.$inferSelect; - const { data: questData } = useHybridData({ - dataType: 'current-quest', - queryKeyParams: [currentQuestId || ''], - offlineQuery: toCompilableQuery( - system.db - .select() - .from(questTable) - .where(eq(questTable.id, currentQuestId!)) - .limit(1) - ), - cloudQueryFn: async () => { - if (!currentQuestId) return []; - const { data, error } = await system.supabaseConnector.client - .from('quest') - .select('*') - .eq('id', currentQuestId) - .overrideTypes(); - if (error) throw error; - return data; - }, - enableCloudQuery: !!currentQuestId, - enableOfflineQuery: !!currentQuestId, - getItemId: (item) => item.id - }); - - const selectedQuest = questData?.[0]; - const enableFia = useLocalStore((state) => state.enableFia); - const fiaMetaExtracted = React.useMemo(() => { - if (!selectedQuest?.metadata) return null; - return extractFiaMetadata(selectedQuest.metadata); - }, [selectedQuest?.metadata]); - - const fiaPericopeId = enableFia - ? (fiaMetaExtracted?.pericopeId ?? null) - : null; - const [showFiaTextDrawer, setShowFiaTextDrawer] = React.useState(false); - const fiaDrawerStateRef = React.useRef({ - ...INITIAL_FIA_DRAWER_STATE - }); - - // Recording state - const [isRecording, setIsRecording] = React.useState(false); - const [isVADActive, setIsVADActive] = React.useState(false); - - // VAD settings - persisted in local store for consistent UX - // These settings are automatically saved to AsyncStorage and restored on app restart - // Default: threshold=0.03 (normal sensitivity), silenceDuration=1000ms (1 second pause) - const vadThreshold = useLocalStore((state) => state.vadThreshold); - const setVadThreshold = useLocalStore((state) => state.setVadThreshold); - const vadSilenceDuration = useLocalStore((state) => state.vadSilenceDuration); - const setVadSilenceDuration = useLocalStore( - (state) => state.setVadSilenceDuration - ); - - const vadMinSegmentLength = useLocalStore( - (state) => state.vadMinSegmentLength - ); - - const setVadMinSegmentLength = useLocalStore( - (state) => state.setVadMinSegmentLength - ); - const vadDisplayMode = useLocalStore((state) => state.vadDisplayMode); - const setVadDisplayMode = useLocalStore((state) => state.setVadDisplayMode); - const enableMerge = useLocalStore((state) => state.enableMerge); - const [showVADSettings, setShowVADSettings] = React.useState(false); - const [autoCalibrateOnOpen, setAutoCalibrateOnOpen] = React.useState(false); - - // Track current recording order index and verse - const currentRecordingOrderRef = React.useRef(0); - const currentRecordingVerseRef = React.useRef<{ - from: number; - to: number; - } | null>(null); - const vadCounterRef = React.useRef(null); - const dbWriteQueueRef = React.useRef>(Promise.resolve()); - - // Track pending asset names to prevent duplicates when recording multiple assets quickly - const pendingAssetNamesRef = React.useRef>(new Set()); - - // Sequential name counter - persisted per quest in AsyncStorage - // Key format: `bible_recording_counter_${questId}` - // This counter is independent of order_index and VAD mode - const nameCounterRef = React.useRef(1); - const nameCounterLoadedRef = React.useRef(false); - - // Track which verses were recorded during this session - // Used to normalize order_index when returning to BibleAssetsView - const recordedVersesRef = React.useRef>(new Set()); - - // Track if the user is allowed to add a new verse - const allowAddVerseRef = React.useRef(true); - - // Load name counter from AsyncStorage on mount - React.useEffect(() => { - if (!currentQuestId || nameCounterLoadedRef.current) return; - - const loadCounter = async () => { - try { - const key = `bible_recording_counter_${currentQuestId}`; - const saved = await AsyncStorage.getItem(key); - if (saved) { - const value = parseInt(saved, 10); - if (!isNaN(value) && value > 0) { - nameCounterRef.current = value; - console.log( - `๐Ÿ“Š Loaded name counter: ${value} for quest ${currentQuestId.slice(0, 8)}` - ); - } - } - nameCounterLoadedRef.current = true; - } catch (error) { - console.error('Failed to load name counter:', error); - nameCounterLoadedRef.current = true; - } - }; - - void loadCounter(); - }, [currentQuestId]); - - // Helper to save counter to AsyncStorage - const saveNameCounter = React.useCallback( - async (value: number) => { - if (!currentQuestId) return; - try { - const key = `bible_recording_counter_${currentQuestId}`; - await AsyncStorage.setItem(key, String(value)); - console.log( - `๐Ÿ’พ Saved name counter: ${value} for quest ${currentQuestId.slice(0, 8)}` - ); - } catch (error) { - console.error('Failed to save name counter:', error); - } - }, - [currentQuestId] - ); - - // Track which asset is currently playing during play-all - const [currentlyPlayingAssetId, setCurrentlyPlayingAssetId] = React.useState< - string | null - >(null); - // Track if PlayAll is running (for button icon state) - const [isPlayAllRunning, setIsPlayAllRunning] = React.useState(false); - // Ref to track if handlePlayAll is running (for cancellation) - const isPlayAllRunningRef = React.useRef(false); - // Ref to track current playing sound for immediate cancellation - const currentPlayAllSoundRef = React.useRef(null); - - // Track setTimeout IDs for cleanup - const timeoutIdsRef = React.useRef>>( - new Set() - ); - - // Track AbortController for batch loading cleanup - const batchLoadingControllerRef = React.useRef(null); - - // Ref to hold latest audioContext for cleanup (avoids stale closure) - const audioContextCurrentRef = React.useRef(audioContext); - React.useEffect(() => { - audioContextCurrentRef.current = audioContext; - }, [audioContext]); - - // Insertion wheel state - const [insertionIndex, setInsertionIndex] = React.useState(0); - const wheelRef = React.useRef(null); - - // Track footer height for proper scrolling - const [footerHeight, setFooterHeight] = React.useState(0); - const ROW_HEIGHT = 80; - - // Dynamic verse tracking for automatic progression - // Starts as null - only set when user clicks "Add verse" button - // This allows the initial verse (_verse) to be displayed first - const [currentDynamicVerse, setCurrentDynamicVerse] = React.useState< - number | null - >(null); - - // Persist initial props in refs - these should NOT change during the recording session - // even when invalidateQueries causes re-renders. We capture them once on mount. - // Using useState with initializer function ensures this only runs once - const [persistedProps] = React.useState(() => ({ - nextVerse, - limitVerse, - verse: _verse - })); - const persistedNextVerseRef = React.useRef(persistedProps.nextVerse); - const persistedLimitVerseRef = React.useRef(persistedProps.limitVerse); - const persistedVerseRef = React.useRef(persistedProps.verse); - - // Debounced insertion index to prevent button flickering when scrolling fast - const [debouncedIsAtEnd, setDebouncedIsAtEnd] = React.useState(false); - - // Selection mode for batch operations (merge, delete) - const { - isSelectionMode, - selectedAssetIds, - enterSelection, - toggleSelect, - cancelSelection, - selectMultiple - } = useSelectionMode(); - - // Rename drawer state - const [showRenameDrawer, setShowRenameDrawer] = React.useState(false); - const [renameAssetId, setRenameAssetId] = React.useState(null); - const [renameAssetName, setRenameAssetName] = React.useState(''); - - // Track segment counts for each asset (loaded lazily) - const [assetSegmentCounts, setAssetSegmentCounts] = React.useState< - Map - >(new Map()); - - // Track durations for each asset (loaded lazily) - const [assetDurations, setAssetDurations] = React.useState< - Map - >(new Map()); - - // SESSION-ONLY ITEMS: Assets and verse pills created during this recording session - // When user exits and returns, the list starts with just the initial verse pill - // Assets are still saved to database, but we don't load existing ones - const [sessionItems, setSessionItems] = React.useState(() => { - // Initialize with the initial verse pill - if (!_verse) return []; - const initialVerse = _verse; - const initialPill: VersePillItem = { - type: 'pill', - id: `pill-initial-${_initialOrderIndex}`, - order_index: _initialOrderIndex, - verse: initialVerse - }; - console.log( - `๐Ÿท๏ธ Initial pill created | order_index: ${_initialOrderIndex} | verse: ${initialVerse.from}-${initialVerse.to}` - ); - return [initialPill]; - }); - - // Track the "append" order_index (used when recording at the end of the list) - // Initialized from props or DEFAULT_ORDER_INDEX, increments by 1 for each recording at end - const appendOrderIndexRef = React.useRef(_initialOrderIndex + 1); - - // Helper to add a new asset to the session list - // Replicates the shift logic from recordingService.ts to keep UI in sync with DB - const addSessionAsset = React.useCallback( - (newAsset: { - id: string; - name: string; - order_index: number; - verse?: { from: number; to: number } | null; - }) => { - const targetOrderIndex = newAsset.order_index; - - setSessionItems((prev) => { - // 1. Shift existing items (both assets and pills) with order_index >= targetOrderIndex - // This mirrors the logic in recordingService.ts - const shifted = prev.map((item) => { - if (item.order_index >= targetOrderIndex) { - const itemName = isAsset(item) - ? item.name - : `pill-${item.verse?.from ?? 'null'}`; - console.log( - `๐Ÿ“Š UI Shift: "${itemName}" ${item.order_index} โ†’ ${item.order_index + 1}` - ); - return { ...item, order_index: item.order_index + 1 }; - } - return item; - }); - - // 2. Create new asset with the target order_index and verse - const uiAsset: UIAsset = { - type: 'asset', - id: newAsset.id, - name: newAsset.name, - created_at: new Date().toISOString(), - order_index: targetOrderIndex, - source: 'local', - segmentCount: 1, - duration: undefined, - verse: newAsset.verse ?? null - }; - - if (!newAsset.verse) { - allowAddVerseRef.current = false; - } - - console.log( - `โž• Adding "${newAsset.name}" with order_index: ${targetOrderIndex} | verse: ${newAsset.verse ? `${newAsset.verse.from}-${newAsset.verse.to}` : 'null'}` - ); - - // 3. Add new asset and sort by order_index - const newList = [...shifted, uiAsset]; - return newList.sort((a, b) => { - if (a.order_index === b.order_index) { - // Pills come before assets at the same order_index - if (isPill(a) && isAsset(b)) return -1; - if (isAsset(a) && isPill(b)) return 1; - // Both are same type - sort by created_at for assets, keep order for pills - if (isAsset(a) && isAsset(b)) { - return a.created_at.localeCompare(b.created_at); - } - return 0; - } - return a.order_index > b.order_index ? 1 : -1; - }); - }); - }, - [] - ); - - // Helper to add a new verse pill to the session list - const addVersePill = React.useCallback( - (verse: number, orderIndex: number) => { - const newPill: VersePillItem = { - type: 'pill', - id: `pill-verse-${verse}-${Date.now()}`, - order_index: orderIndex, - verse: { from: verse, to: verse } - }; - - console.log( - `๐Ÿท๏ธ Adding pill for verse ${verse} with order_index: ${orderIndex}` - ); - - setSessionItems((prev) => { - const newList = [...prev, newPill]; - return newList.sort((a, b) => { - if (a.order_index === b.order_index) { - // Pills come before assets at the same order_index - if (isPill(a) && isAsset(b)) return -1; - if (isAsset(a) && isPill(b)) return 1; - if (isAsset(a) && isAsset(b)) { - return a.created_at.localeCompare(b.created_at); - } - return 0; - } - return a.order_index > b.order_index ? 1 : -1; - }); - }); - }, - [] - ); - - // Use session items - filter to get only assets for backward compatibility - const rawAssets = React.useMemo( - () => sessionItems.filter(isAsset), - [sessionItems] - ); - - // All items (assets + pills) for the wheel - const allItems = sessionItems; - - // Normalize assets - // ARCHITECTURE: - // - Asset: A single recording or merged group of recordings - // - Segment: One content_link row (merged assets have multiple segments) - // - Audio file: Individual audio file (each segment has audio[] array) - // - // METADATA (loaded lazily in background): - // - segmentCount: Number of content_link rows for this asset - // - duration: Sum of all audio files' durations across all segments - const assets = React.useMemo((): UIAsset[] => { - const result = rawAssets - .filter((a) => { - const obj = a as { - id?: string; - name?: string; - created_at?: string; - source?: string; - } | null; - return obj?.id && obj.name && obj.created_at && obj.source; - }) - .map((a, index) => { - const obj = a as { - id: string; - name: string; - created_at: string; - order_index?: number | null; - source: 'local' | 'synced' | 'cloud'; - verse?: { from: number; to: number } | null; - }; - // Get segment count and duration from lazy-loaded maps - // Default to 1 segment if not loaded yet, undefined for duration (shows loading state) - const segmentCount = assetSegmentCounts.get(obj.id) ?? 1; - const duration = assetDurations.get(obj.id); // undefined if not loaded yet - - // DEBUG: Log assets with multiple segments - if (segmentCount > 1) { - debugLog( - `๐Ÿ“Š Asset "${obj.name}" (${obj.id.slice(0, 8)}) has ${segmentCount} segments` - ); - } - - return { - type: 'asset' as const, - id: obj.id, - name: obj.name, - created_at: obj.created_at, - order_index: - typeof obj.order_index === 'number' ? obj.order_index : index, - source: obj.source, - segmentCount, - duration, - verse: obj.verse ?? null - }; - }); - - // DEBUG: Summary of segment counts - const multiSegmentAssets = result.filter((a) => a.segmentCount > 1); - if (multiSegmentAssets.length > 0) { - debugLog( - `๐Ÿ“Š Total assets with multiple segments: ${multiSegmentAssets.length}` - ); - } - - return result; - }, [rawAssets, assetSegmentCounts, assetDurations]); - - // Check if we're at the end of the list (for add verse button behavior) - const isAtEndOfList = React.useMemo( - () => allItems.length === 0 || insertionIndex >= allItems.length, - [allItems.length, insertionIndex] - ); - - // Get the item at the current insertion position (center of wheel) - // This can be either an asset or a verse pill - const highlightedItem = React.useMemo(() => { - if (allItems.length === 0) return null; - // insertionIndex can be 0 to allItems.length (inclusive) - // When at the end (insertionIndex >= allItems.length), we still want to show the last item - const idx = Math.min(insertionIndex, allItems.length - 1); - return allItems[idx] ?? null; - }, [allItems, insertionIndex]); - - // Get the highlighted item as an asset (null if it's a pill) - // Prefixed with _ as it may not be used directly but kept for potential future use - const _highlightedAsset = React.useMemo(() => { - if (!highlightedItem || isPill(highlightedItem)) return null; - return highlightedItem; - }, [highlightedItem]); - - // Get verse metadata from highlighted item (works for both assets and pills) - // This can be a range like { from: 1, to: 3 } - const highlightedItemVerse = React.useMemo(() => { - if (!highlightedItem) return null; - return highlightedItem.verse ?? null; - }, [highlightedItem]); - - // Legacy alias for backward compatibility - const highlightedAssetVerse = highlightedItemVerse; - - // Helper to format verse range as text - const formatVerseRange = React.useCallback( - (verse: { from: number; to: number } | null | undefined) => { - if (!verse?.from) return null; - const verseText = - verse.from === verse.to ? `${verse.from}` : `${verse.from}-${verse.to}`; - return `${bookChapterLabel}:${verseText}`; - }, - [bookChapterLabel] - ); - - // Build verse pill text based on context: - // - Always show the verse of the asset in the center of the wheel (highlightedAsset) - // - EXCEPT when user clicked "Add verse" button - then show the new verse - // - If no assets exist, show the initial verse from props or "No Label Assigned" - const versePillText = React.useMemo(() => { - // If user clicked "Add verse" button, show the new dynamic verse - if (currentDynamicVerse !== null) { - return ( - formatVerseRange({ - from: currentDynamicVerse, - to: currentDynamicVerse - }) ?? 'No Label Assigned' - ); - } - - // If there are assets, show the verse of the asset in the center - if (highlightedAssetVerse) { - return formatVerseRange(highlightedAssetVerse) ?? 'No Label Assigned'; - } - - // No assets yet - show the initial verse from props - if (persistedVerseRef.current) { - return formatVerseRange(persistedVerseRef.current) ?? 'No Label Assigned'; - } - - return 'No Label Assigned'; - }, [highlightedAssetVerse, formatVerseRange, currentDynamicVerse]); - - // Debounce logic for showing add verse button - // Uses isAtEndOfList calculated above - React.useEffect(() => { - const timeout = setTimeout(() => { - setDebouncedIsAtEnd(isAtEndOfList); - }, 300); // 300ms debounce - - return () => clearTimeout(timeout); - }, [isAtEndOfList]); - - // Calculate the next verse to add (what the button will show) - // Uses persisted refs to avoid issues with query invalidation re-renders - // If user already clicked Add, show currentDynamicVerse + 1 (if within limit) - // If user hasn't clicked yet, show persisted nextVerse - const verseToAdd = React.useMemo(() => { - const limit = persistedLimitVerseRef.current; - - if (currentDynamicVerse !== null) { - // User already clicked Add - next verse is current + 1 - const next = currentDynamicVerse + 1; - // Check if next is within limit - if (limit !== null && next > limit) { - return null; // No more verses to add - } - return next; - } - // User hasn't clicked Add yet - use persisted nextVerse - return persistedNextVerseRef.current; - }, [currentDynamicVerse]); - - // Show add verse button if: - // 1. At the end of the list (debounced) - // 2. There's a verse available to add (verseToAdd not null) - const showAddVerseButton = React.useMemo( - () => debouncedIsAtEnd && verseToAdd !== null, - [debouncedIsAtEnd, verseToAdd] - ); - - // Log for debugging button visibility and verse pill - React.useEffect(() => { - const highlightedVerseStr = highlightedAssetVerse - ? `${highlightedAssetVerse.from}-${highlightedAssetVerse.to}` - : 'null'; - console.log( - `๐Ÿ”˜ State | insertionIdx: ${insertionIndex} | assetsLen: ${assets.length} | isAtEnd: ${isAtEndOfList} | debouncedIsAtEnd: ${debouncedIsAtEnd} | highlightedVerse: ${highlightedVerseStr} | verseToAdd: ${verseToAdd} | currentDynamic: ${currentDynamicVerse} | pillText: ${versePillText}` - ); - }, [ - insertionIndex, - assets.length, - isAtEndOfList, - debouncedIsAtEnd, - highlightedAssetVerse, - verseToAdd, - currentDynamicVerse, - showAddVerseButton, - versePillText - ]); - - // Handle adding next verse metadata - // When clicked, adds a pill at the end of the list - // The button will then show the next verse (verseToAdd + 1) - const handleAddNextVerse = React.useCallback(() => { - if (verseToAdd === null) return; - - console.log(`โž• Adding verse ${verseToAdd} as pill to list`); - - // Calculate order_index for the first asset of this verse - // Formula: (verse * 1000 + 1) * 1000 - // This positions it at the beginning of the verse range - const newOrderIndex = (verseToAdd * 1000 + 1) * 1000; - - // Update appendOrderIndexRef to point to after this new pill - appendOrderIndexRef.current = newOrderIndex + 1; - - console.log( - `๐Ÿ“Š Adding pill for verse ${verseToAdd} | order_index: ${newOrderIndex} | next append: ${appendOrderIndexRef.current}` - ); - - // Mark that a pill was added (so auto-scroll moves to end) - wasPillAddedRef.current = true; - - // Add the verse pill to the list - addVersePill(verseToAdd, newOrderIndex); - - // Set currentDynamicVerse to this verse (for button calculation) - setCurrentDynamicVerse(verseToAdd); - - // Move insertion index to the end (where the pill was added) - // This is done in the next useEffect that monitors allItems.length change - - // If VAD is active, update recording context to use the new pill - if (isVADActive) { - const newVerse = { from: verseToAdd, to: verseToAdd }; - currentRecordingVerseRef.current = newVerse; - vadCounterRef.current = newOrderIndex + 1; - console.log( - `๐ŸŽฏ VAD: Updated to verse ${verseToAdd} | order_index: ${newOrderIndex + 1}` - ); - } - }, [verseToAdd, isVADActive, addVersePill]); - - // Stable item list that only updates when content actually changes - // We intentionally use assetContentKey instead of allItems to prevent re-renders - // when items array reference changes but content is identical - const itemsForWheel = React.useMemo(() => allItems, [allItems]); - - // Clamp insertion index when item count changes - React.useEffect(() => { - const maxIndex = allItems.length; // Can insert at 0..N (after last item) - if (insertionIndex > maxIndex) { - setInsertionIndex(maxIndex); - } - }, [allItems.length, insertionIndex]); - - // Track item count to detect new insertions - const previousItemCountRef = React.useRef(allItems.length); - - // Track if the last recording was in the middle (not at end) - // Used to determine if we should move insertionIndex to the new item - const wasRecordingInMiddleRef = React.useRef(false); - - // Track if a pill was just added (to distinguish from asset recording) - const wasPillAddedRef = React.useRef(false); - - // Auto-scroll behavior differs between list and wheel - React.useEffect(() => { - const currentCount = allItems.length; - const previousCount = previousItemCountRef.current; - - // Only scroll if a new item was added (count increased) - if (currentCount > previousCount && currentCount > 0) { - console.log( - `๐Ÿ“œ Item added | prevCount: ${previousCount} โ†’ ${currentCount} | insertionIndex: ${insertionIndex} | wasInMiddle: ${wasRecordingInMiddleRef.current} | wasPillAdded: ${wasPillAddedRef.current}` - ); - - console.log( - '[recording in the middle]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', - wasRecordingInMiddleRef.current - ); - - const wasInMiddle = wasRecordingInMiddleRef.current; - const wasPillAdded = wasPillAddedRef.current; - - // Reset the flags - wasRecordingInMiddleRef.current = false; - wasPillAddedRef.current = false; - - if (wasPillAdded) { - // A pill was added - move to the end - console.log( - `๐Ÿ“ Pill added - moving to end: ${insertionIndex} โ†’ ${currentCount}` - ); - setInsertionIndex(currentCount); - - // Scroll to the end - const timeoutId = setTimeout(() => { - try { - wheelRef.current?.scrollToInsertionIndex(currentCount, true); - } catch (error) { - console.error('Failed to scroll after pill added:', error); - } - timeoutIdsRef.current.delete(timeoutId); - }, 100); - timeoutIdsRef.current.add(timeoutId); - } else if (wasInMiddle) { - // Recorded in the middle - move to the new asset - const newIndex = insertionIndex + 1; - console.log( - `๐Ÿ“ Moving to new asset (recorded in middle): ${insertionIndex} โ†’ ${newIndex}` - ); - setInsertionIndex(newIndex); - - // Scroll to the new item - const timeoutId = setTimeout(() => { - try { - wheelRef.current?.scrollToInsertionIndex(newIndex, true); - } catch (error) { - console.error('Failed to scroll:', error); - } - timeoutIdsRef.current.delete(timeoutId); - }, 100); - timeoutIdsRef.current.add(timeoutId); - } else { - // Asset appended at the end - move to stay at end - console.log( - `๐Ÿ“ Moving to end (appended): ${insertionIndex} โ†’ ${currentCount}` - ); - setInsertionIndex(currentCount); - - // Scroll to the end - const timeoutId = setTimeout(() => { - try { - wheelRef.current?.scrollToInsertionIndex(currentCount, true); - } catch (error) { - console.error('Failed to scroll:', error); - } - timeoutIdsRef.current.delete(timeoutId); - }, 100); - timeoutIdsRef.current.add(timeoutId); - } - } - - previousItemCountRef.current = currentCount; - }, [allItems.length, insertionIndex]); - - // ============================================================================ - // AUDIO PLAYBACK - // ============================================================================ - - // Fetch audio URIs for an asset - // Includes fallback logic for local-only files when server records are removed - const getAssetAudioUris = React.useCallback( - async (assetId: string): Promise => { - try { - // Get content links from both synced and local tables - const assetContentLinkSynced = resolveTable('asset_content_link', { - localOverride: false - }); - const contentLinksSynced = await system.db - .select() - .from(assetContentLinkSynced) - .where(eq(assetContentLinkSynced.asset_id, assetId)); - - const assetContentLinkLocal = resolveTable('asset_content_link', { - localOverride: true - }); - const contentLinksLocal = await system.db - .select() - .from(assetContentLinkLocal) - .where(eq(assetContentLinkLocal.asset_id, assetId)); - - // Prefer synced links, but merge with local for fallback - const allContentLinks = [...contentLinksSynced, ...contentLinksLocal]; - - // Deduplicate by ID (prefer synced over local) - const seenIds = new Set(); - const uniqueLinks = allContentLinks.filter((link) => { - if (seenIds.has(link.id)) { - return false; - } - seenIds.add(link.id); - return true; - }); - - debugLog( - `๐Ÿ“€ Found ${uniqueLinks.length} content link(s) for asset ${assetId.slice(0, 8)} (${contentLinksSynced.length} synced, ${contentLinksLocal.length} local)` - ); - - if (uniqueLinks.length === 0) { - debugLog('No content links found for asset:', assetId); - return []; - } - - // Get audio values from content links (can be URIs or attachment IDs) - const audioValues = uniqueLinks - .flatMap((link) => { - const audioArray = link.audio ?? []; - debugLog( - ` ๐Ÿ“Ž Content link has ${audioArray.length} audio file(s):`, - audioArray - ); - return audioArray; - }) - .filter((value): value is string => !!value); - - debugLog(`๐Ÿ“Š Total audio files for asset: ${audioValues.length}`); - - if (audioValues.length === 0) { - debugLog('No audio values found in content links'); - return []; - } - - // Process each audio value - can be either a local URI or an attachment ID - const uris: string[] = []; - for (const audioValue of audioValues) { - // Check if this is already a local URI (starts with 'local/' or 'file://') - if (audioValue.startsWith('local/')) { - // It's a direct local URI from saveAudioLocally() - const constructedUri = - await getLocalAttachmentUriWithOPFS(audioValue); - // Check if file exists at constructed path - if (await fileExists(constructedUri)) { - uris.push(constructedUri); - debugLog( - 'โœ… Using direct local URI:', - constructedUri.slice(0, 80) - ); - } else { - // File doesn't exist at expected path - try to find it in attachment queue - debugLog( - `โš ๏ธ Local URI ${audioValue} not found at ${constructedUri}, searching attachment queue...` - ); - - if (system.permAttachmentQueue) { - // Extract filename from local path (e.g., "local/uuid.wav" -> "uuid.wav") - const filename = audioValue.replace(/^local\//, ''); - // Extract UUID part (without extension) for more flexible matching - const uuidPart = filename.split('.')[0]; - - // Search attachment queue by filename or UUID - let attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR filename LIKE ? OR id = ? OR id LIKE ? LIMIT 1`, - [filename, `%${uuidPart}%`, filename, `%${uuidPart}%`] - ); - - // If not found, try searching all attachments for this asset's content links - if (!attachment && uniqueLinks.length > 0) { - const allAttachmentIds = uniqueLinks - .flatMap((link) => link.audio ?? []) - .filter( - (av): av is string => - typeof av === 'string' && - !av.startsWith('local/') && - !av.startsWith('file://') - ); - if (allAttachmentIds.length > 0) { - const placeholders = allAttachmentIds - .map(() => '?') - .join(','); - attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id IN (${placeholders}) LIMIT 1`, - allAttachmentIds - ); - } - } - - if (attachment?.local_uri) { - const foundUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - // Verify the found file actually exists - if (await fileExists(foundUri)) { - uris.push(foundUri); - debugLog( - `โœ… Found attachment in queue for local URI ${audioValue.slice(0, 20)}` - ); - } else { - debugLog( - `โš ๏ธ Attachment found in queue but file doesn't exist: ${foundUri}` - ); - } - } else { - // Try fallback to local table for alternative audio values - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - debugLog(`โœ… Found fallback file URI`); - break; - } - } - } - } - } - } - } - } else if (audioValue.startsWith('file://')) { - // Already a full file URI - verify it exists - if (await fileExists(audioValue)) { - uris.push(audioValue); - debugLog('โœ… Using full file URI:', audioValue.slice(0, 80)); - } else { - debugLog(`โš ๏ธ File URI does not exist: ${audioValue}`); - // Try to find in attachment queue by extracting filename from path - if (system.permAttachmentQueue) { - const filename = audioValue.split('/').pop(); - if (filename) { - const attachment = await system.powersync.getOptional<{ - id: string; - filename: string | null; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE filename = ? OR id = ? LIMIT 1`, - [filename, filename] - ); - - if (attachment?.local_uri) { - const foundUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - if (await fileExists(foundUri)) { - uris.push(foundUri); - debugLog(`โœ… Found attachment in queue for file URI`); - } - } - } - } - } - } else { - // It's an attachment ID - look it up in the attachment queue - if (!system.permAttachmentQueue) { - // No attachment queue - try fallback to local table - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('local/')) { - const fallbackUri = - await getLocalAttachmentUriWithOPFS(fallbackAudioValue); - if (await fileExists(fallbackUri)) { - uris.push(fallbackUri); - break; - } - } else if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - break; - } - } - } - } - continue; - } - - const attachment = await system.powersync.getOptional<{ - id: string; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, - [audioValue] - ); - - if (attachment?.local_uri) { - const localUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - if (await fileExists(localUri)) { - uris.push(localUri); - debugLog('โœ… Found attachment URI:', localUri.slice(0, 60)); - } - } else { - // Attachment ID not found in queue - try fallback to local table - debugLog( - `โš ๏ธ Attachment ID ${audioValue.slice(0, 8)} not found in queue, checking local table fallback...` - ); - - const fallbackLink = contentLinksLocal.find( - (link) => link.asset_id === assetId - ); - if (fallbackLink?.audio) { - for (const fallbackAudioValue of fallbackLink.audio) { - if (fallbackAudioValue.startsWith('local/')) { - const fallbackUri = - await getLocalAttachmentUriWithOPFS(fallbackAudioValue); - if (await fileExists(fallbackUri)) { - uris.push(fallbackUri); - debugLog( - `โœ… Found fallback local URI for attachment ${audioValue.slice(0, 8)}` - ); - break; - } - } else if (fallbackAudioValue.startsWith('file://')) { - if (await fileExists(fallbackAudioValue)) { - uris.push(fallbackAudioValue); - debugLog( - `โœ… Found fallback file URI for attachment ${audioValue.slice(0, 8)}` - ); - break; - } - } - } - } else { - debugLog(`โš ๏ธ Audio ${audioValue} not downloaded yet`); - } - } - } - } - - return uris; - } catch (error) { - console.error('Failed to fetch audio URIs:', error); - return []; - } - }, - [] - ); - - // Handle asset playback - const handlePlayAsset = React.useCallback( - async (assetId: string) => { - try { - const isThisAssetPlaying = - audioContext.isPlaying && audioContext.currentAudioId === assetId; - - if (isThisAssetPlaying) { - debugLog('โธ๏ธ Stopping asset:', assetId.slice(0, 8)); - await audioContext.stopCurrentSound(); - } else { - debugLog('โ–ถ๏ธ Playing asset:', assetId.slice(0, 8)); - const uris = await getAssetAudioUris(assetId); - - if (uris.length === 0) { - console.error('โŒ No audio URIs found for asset:', assetId); - return; - } - - if (uris.length === 1 && uris[0]) { - debugLog('โ–ถ๏ธ Playing single segment'); - await audioContext.playSound(uris[0], assetId); - } else if (uris.length > 1) { - debugLog(`โ–ถ๏ธ Playing ${uris.length} segments in sequence`); - await audioContext.playSoundSequence(uris, assetId); - } - } - } catch (error) { - console.error('โŒ Failed to play audio:', error); - } - }, - [audioContext, getAssetAudioUris] - ); - - // Handle play all assets - optimized version with direct control - const handlePlayAll = React.useCallback(async () => { - try { - // Check if already playing - toggle to stop - if (isPlayAllRunningRef.current) { - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - try { - currentPlayAllSoundRef.current.pause(); - currentPlayAllSoundRef.current.release(); - currentPlayAllSoundRef.current = null; - } catch (error) { - console.error('Error stopping sound:', error); - } - } - - setCurrentlyPlayingAssetId(null); - debugLog('โธ๏ธ Stopped play all'); - return; - } - - if (itemsForWheel.length === 0) { - console.warn('โš ๏ธ No items to play'); - return; - } - - // Mark as running - isPlayAllRunningRef.current = true; - setIsPlayAllRunning(true); - - debugLog(`๐ŸŽต Starting play all from wheel position ${insertionIndex}`); - - let assetsPlayed = 0; - - // Iterate directly through itemsForWheel starting from insertionIndex - for ( - let wheelIndex = insertionIndex; - wheelIndex < itemsForWheel.length; - wheelIndex++ - ) { - // Check if cancelled - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!isPlayAllRunningRef.current) { - debugLog('โธ๏ธ Play all cancelled'); - setCurrentlyPlayingAssetId(null); - return; - } - - const item = itemsForWheel[wheelIndex]; - - // Skip if no item or if it's a pill - if (!item || isPill(item)) { - debugLog(`โญ๏ธ Position ${wheelIndex}: skipping pill`); - continue; - } - - // It's an asset - play it - const asset = item; - - // Get URIs for this asset - const uris = await getAssetAudioUris(asset.id); - if (uris.length === 0) { - debugLog( - `โš ๏ธ Position ${wheelIndex}: no URIs for asset ${asset.name}` - ); - continue; - } - - // HIGHLIGHT THIS ASSET - setCurrentlyPlayingAssetId(asset.id); - - // Scroll to this position in the wheel (wheelIndex is the direct position) - if (wheelRef.current) { - wheelRef.current.scrollItemToTop(wheelIndex - 1, true); - } - - assetsPlayed++; - debugLog( - `โ–ถ๏ธ Position ${wheelIndex}: Playing asset ${asset.name} (${uris.length} segments)` - ); - - // Play all URIs for this asset sequentially - for (const uri of uris) { - // Check if cancelled - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!isPlayAllRunningRef.current) { - setCurrentlyPlayingAssetId(null); - return; - } - - // Play this URI and wait for it to finish - await new Promise((resolve) => { - try { - const player = createAudioPlayer(uri); - currentPlayAllSoundRef.current = player; - player.play(); - - player.addListener('playbackStatusUpdate', (status) => { - if (!status.didJustFinish) return; - currentPlayAllSoundRef.current = null; - player.release(); - resolve(); - }); - } catch (error) { - console.error('Failed to play audio:', error); - currentPlayAllSoundRef.current = null; - resolve(); - } - }); - } - } - - if (assetsPlayed === 0) { - console.warn('โš ๏ธ No assets found to play from current position'); - } - - // Done playing all - debugLog('โœ… Finished playing all assets'); - setCurrentlyPlayingAssetId(null); - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - currentPlayAllSoundRef.current = null; - } catch (error) { - console.error('โŒ Failed to play all assets:', error); - setCurrentlyPlayingAssetId(null); - isPlayAllRunningRef.current = false; - setIsPlayAllRunning(false); - currentPlayAllSoundRef.current = null; - } - }, [getAssetAudioUris, insertionIndex, itemsForWheel]); - - // ============================================================================ - // RECORDING HANDLERS - // ============================================================================ - - /** - * CENTRALIZED INSERTION CONTEXT - * This function calculates where and how to insert new recordings - * based on the current wheel position and list state. - * - * Returns: - * - orderIndex: The order_index to use for the new recording - * - verse: The verse metadata to use for the new recording - * - isAtEnd: Whether we're inserting at the end of the list - */ - const getInsertionContext = React.useCallback( - (currentIndex: number = insertionIndex) => { - const isAtEnd = allItems.length === 0 || currentIndex >= allItems.length; - console.log( - '๐Ÿ” getInsertionContext | currentIndex:', - currentIndex, - '| allItems.length:', - allItems.length, - '| isAtEnd:', - isAtEnd - ); - - if (isAtEnd) { - // At end: calculate order_index based on last item, not appendOrderIndexRef - // appendOrderIndexRef is only used as a cache and gets updated after recording - const lastItem = allItems[allItems.length - 1]; - const orderIndex = lastItem - ? lastItem.order_index + 1 - : appendOrderIndexRef.current; // Fallback for empty list - const verse = lastItem?.verse ?? persistedVerseRef.current ?? null; - - console.log( - '๐Ÿ” At END | lastItem order_index:', - lastItem?.order_index, - '| calculated orderIndex:', - orderIndex, - '| appendOrderIndexRef:', - appendOrderIndexRef.current - ); - - return { orderIndex, verse, isAtEnd: true }; - } else { - // In middle: use selected item's context - const selectedItem = allItems[currentIndex]; - const orderIndex = selectedItem - ? selectedItem.order_index + 1 - : currentIndex + 1; - const verse = selectedItem?.verse ?? null; - - return { orderIndex, verse, isAtEnd: false }; - } - }, - [allItems, insertionIndex] - ); - - // Store insertion index in ref to prevent stale closure issues - const insertionIndexRef = React.useRef(insertionIndex); - React.useEffect(() => { - insertionIndexRef.current = insertionIndex; - }, [insertionIndex]); - - // Track if we're currently in the middle of the list (for VAD continuous recording) - // When VAD starts, we capture the position and use same order_index for all segments - // until VAD stops or user moves the wheel - const vadInsertionIndexRef = React.useRef(null); - // Track if VAD was started at the end of the list (append mode) - // This is captured once when VAD activates and doesn't change during the session - const vadIsAtEndRef = React.useRef(false); - - // Initialize VAD counter and verse when VAD mode activates - React.useEffect(() => { - if (isVADActive && vadCounterRef.current === null) { - // Capture current position when VAD starts - vadInsertionIndexRef.current = insertionIndexRef.current; - - // Get insertion context based on current position - const { - orderIndex, - verse, - isAtEnd: contextIsAtEnd - } = getInsertionContext(insertionIndexRef.current); - - vadCounterRef.current = orderIndex; - currentRecordingVerseRef.current = verse; - - const selectedItem = contextIsAtEnd - ? allItems[allItems.length - 1] - : allItems[insertionIndexRef.current]; - const itemName = selectedItem - ? isPill(selectedItem) - ? `pill-${selectedItem.verse?.from ?? 'null'}` - : selectedItem.name - : 'none'; - - debugLog( - `๐ŸŽฏ VAD initialized ${contextIsAtEnd ? 'at END' : 'in MIDDLE'} | index: ${insertionIndexRef.current} | item: "${itemName}" | order_index: ${orderIndex} | verse: ${verse ? `${verse.from}-${verse.to}` : 'null'}` - ); - } else if (!isVADActive) { - vadCounterRef.current = null; - vadInsertionIndexRef.current = null; - console.log( - '[INSERTION INDEX REF 000X VAD]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', - vadInsertionIndexRef.current, - insertionIndexRef.current - ); - vadIsAtEndRef.current = false; - } - }, [ - isVADActive, - allItems, - currentDynamicVerse, - assets.length, - getInsertionContext - ]); - - // Manual recording handlers - const handleRecordingStart = React.useCallback(() => { - if (isRecording) return; - - const currentInsertionIndex = insertionIndexRef.current; - - console.log( - `๐ŸŽฌ Recording START | insertionIndex: ${currentInsertionIndex} | allItems.length: ${allItems.length}` - ); - - // Get insertion context (order_index and verse) based on current position - const { orderIndex, verse, isAtEnd } = getInsertionContext( - currentInsertionIndex - ); - - // Store values for use during recording - currentRecordingOrderRef.current = orderIndex; - currentRecordingVerseRef.current = verse; - - // Track if we're recording in the middle (for auto-scroll behavior) - wasRecordingInMiddleRef.current = !isAtEnd; - - // Update appendOrderIndexRef to point to next position after this recording - // This serves as a fallback for empty lists or initial state - if (isAtEnd) { - appendOrderIndexRef.current = orderIndex + 1; - console.log( - '๐Ÿ“Š Updated appendOrderIndexRef:', - appendOrderIndexRef.current, - '(for next recording at end)' - ); - } - - // If starting recording without verse, disable adding new verses - if (!verse) { - allowAddVerseRef.current = false; - } - - setIsRecording(true); - - const selectedItem = isAtEnd - ? allItems[allItems.length - 1] - : allItems[currentInsertionIndex]; - const itemName = selectedItem - ? isPill(selectedItem) - ? `pill-${selectedItem.verse?.from ?? 'null'}` - : selectedItem.name - : 'none'; - - console.log( - `๐ŸŽฏ Recording ${isAtEnd ? 'at END' : 'in MIDDLE'} | index: ${currentInsertionIndex} | item: "${itemName}" | order_index: ${orderIndex} | verse: ${verse ? `${verse.from}-${verse.to}` : 'null'}` - ); - }, [isRecording, allItems, getInsertionContext]); - - const handleRecordingStop = React.useCallback(() => { - debugLog('๐Ÿ›‘ Manual recording stop'); - setIsRecording(false); - }, []); - - const handleRecordingDiscarded = React.useCallback(() => { - debugLog('๐Ÿ—‘๏ธ Recording discarded'); - setIsRecording(false); - }, []); - - const handleRecordingComplete = React.useCallback( - async (uri: string, _duration: number, _waveformData: number[]) => { - // Recalculate order_index based on current list state - // This ensures each consecutive recording gets a unique incremented order_index - const currentContext = getInsertionContext(insertionIndexRef.current); - const targetOrder = currentContext.orderIndex; - const verseToUse = currentContext.verse; - - // Update refs for next recording in same session - currentRecordingOrderRef.current = targetOrder; - currentRecordingVerseRef.current = verseToUse; - - try { - debugLog('๐Ÿ’พ Saving recording | order_index:', targetOrder); - - // Validate required data - if ( - !currentProjectId || - !currentQuestId || - !currentProject || - !currentUser - ) { - console.error('โŒ Missing required data'); - return; - } - - // Generate name using persistent counter (independent of order_index and VAD mode) - // Counter is persisted per quest in AsyncStorage and increments continuously - const nextNumber = nameCounterRef.current; - nameCounterRef.current++; // Increment immediately to reserve this number - const assetName = String(nextNumber).padStart(3, '0'); - pendingAssetNamesRef.current.add(assetName); - console.log( - `๐Ÿท๏ธ Reserved name: ${assetName} | counter: ${nextNumber} โ†’ ${nameCounterRef.current} | order_index: ${targetOrder}` - ); - - // Native module flushes the file before sending onSegmentComplete event. - // File should be ready, but iOS Simulator may need a moment (handled by retry logic in saveAudioLocally). - - // Save audio file locally (with retry logic for timing issues) - const saveResult = await (async () => { - try { - const savedUri = await saveAudioLocally(uri); - return { success: true as const, uri: savedUri }; - } catch (error) { - // Release the reserved name on error - pendingAssetNamesRef.current.delete(assetName); - console.error('โŒ Failed to save audio file locally:', error); - return { success: false as const, error }; - } - })(); - - if (!saveResult.success) { - // Re-throw to be caught by outer catch block - throw saveResult.error; - } - - const localUri = saveResult.uri; - - // Queue DB write (serialized to prevent race conditions) - dbWriteQueueRef.current = dbWriteQueueRef.current - .then(async () => { - if (!targetLanguoidId) { - throw new Error('Target languoid not found for project'); - } - // Use the verse that was captured when recording started - // This ensures we use the correct verse for middle-of-list recordings - const verseToUse = currentRecordingVerseRef.current; - - const newAssetId = await saveRecording({ - questId: currentQuestId, - projectId: currentProjectId, - targetLanguoidId: targetLanguoidId, - userId: currentUser.id, - orderIndex: targetOrder, - audioUri: localUri, - assetName: assetName, // Pass the reserved name - metadata: verseToUse ? { verse: verseToUse } : null // Pass verse metadata if provided - }); - - // Log the saved asset details - console.log( - `๐Ÿ“ผ Asset saved | name: "${assetName}" | order_index: ${targetOrder} | verse: ${verseToUse ? `${verseToUse.from}-${verseToUse.to}` : 'null'}` - ); - - // Add to session assets list (UI only - not loaded from DB) - addSessionAsset({ - id: newAssetId, - name: assetName, - order_index: targetOrder, - verse: verseToUse - }); - - // Track which verse was recorded (for order_index normalization on return) - // If no verse is assigned, use 999 (UNASSIGNED_VERSE_BASE) - const verseToTrack = verseToUse?.from ?? 999; - recordedVersesRef.current.add(verseToTrack); - debugLog( - `๐Ÿ“‹ Tracked verse ${verseToTrack} for normalization (total: ${recordedVersesRef.current.size})` - ); - - // Save the updated name counter to AsyncStorage - await saveNameCounter(nameCounterRef.current); - - // Release the reserved name after successful save - pendingAssetNamesRef.current.delete(assetName); - debugLog( - `โœ… Released name: ${assetName} (pending: ${pendingAssetNamesRef.current.size})` - ); - }) - .catch((err) => { - console.error('โŒ DB write failed:', err); - // Release the reserved name on error - pendingAssetNamesRef.current.delete(assetName); - throw err; - }); - - await dbWriteQueueRef.current; - - // Invalidate queries to sync order_index after insertions in the middle - // This is needed because recordingService shifts order_index values - await queryClient.invalidateQueries({ - queryKey: ['assets', 'by-quest', currentQuestId], - exact: false - }); - - debugLog('๐Ÿ Recording saved'); - setIsRecording(false); - } catch (error) { - console.error('โŒ Failed to save recording:', error); - setIsRecording(false); - } - }, - [ - currentProjectId, - currentQuestId, - currentProject, - currentUser, - queryClient, - targetLanguoidId, - addSessionAsset, - saveNameCounter, - getInsertionContext - ] - ); - - // VAD segment handlers - const handleVADSegmentStart = React.useCallback(() => { - if (vadCounterRef.current === null) { - console.error('โŒ VAD counter not initialized!'); - return; - } - - const targetOrder = vadCounterRef.current; - // Use the captured isAtEnd state from when VAD was activated - // This prevents issues where assets.length changes during recording - const isAtEnd = vadIsAtEndRef.current; - - // Track if we're recording in the middle (for auto-scroll behavior) - wasRecordingInMiddleRef.current = !isAtEnd; - - debugLog( - `๐ŸŽฌ VAD: Segment starting | order_index: ${targetOrder} | isAtEnd: ${isAtEnd}` - ); - - currentRecordingOrderRef.current = targetOrder; - - // Increment VAD counter for next segment ONLY if appending at end - // If inserting in middle, all recordings get the same order_index - if (isAtEnd) { - vadCounterRef.current = targetOrder + 1; - appendOrderIndexRef.current = vadCounterRef.current; // Keep append ref in sync - } - }, []); - - const handleVADSegmentComplete = React.useCallback( - (uri: string) => { - if (!uri || uri === '') { - debugLog('๐Ÿ—‘๏ธ VAD: Segment discarded'); - return; - } - - debugLog('๐Ÿ“ผ VAD: Segment complete'); - void handleRecordingComplete(uri, 0, []); - }, - [handleRecordingComplete] - ); - - // Hook up native VAD recording - const { - currentEnergy, - isRecording: isVADRecording, - energyShared, - isRecordingShared - } = useVADRecording({ - threshold: vadThreshold, - silenceDuration: vadSilenceDuration, - isVADActive: isVADActive, - onSegmentStart: handleVADSegmentStart, - onSegmentComplete: handleVADSegmentComplete, - isManualRecording: isRecording - }); - - // Invalidate queries when VAD mode ends - React.useEffect(() => { - if (!isVADActive) { - void queryClient.invalidateQueries({ - queryKey: ['assets', 'by-quest', currentQuestId], - exact: false - }); - } - }, [isVADActive, currentQuestId, queryClient]); - - // ============================================================================ - // LAZY LOAD SEGMENT COUNTS - // ============================================================================ - - // Stable reference to raw assets for segment count loading - // Only extract what we need to avoid circular dependencies - const assetMetadata = React.useMemo( - () => - rawAssets - .map((a) => { - const obj = a as { id?: string } | null; - return obj?.id; - }) - .filter((id): id is string => !!id), - [rawAssets] - ); - - const assetIds = React.useMemo( - () => assetMetadata.join(','), - [assetMetadata] - ); - - // Track which asset IDs we've loaded counts for to prevent re-loading - const loadedAssetIdsRef = React.useRef(new Set()); - - // Clear loaded IDs when asset list changes significantly (e.g., after merge/delete) - // This ensures segment counts are re-loaded for modified assets - const previousAssetIdsRef = React.useRef(assetIds); - React.useEffect(() => { - if (previousAssetIdsRef.current !== assetIds) { - // Asset list changed - clear cache for assets that no longer exist - const currentAssetIdSet = new Set(assetMetadata); - const toRemove = Array.from(loadedAssetIdsRef.current).filter( - (id) => !currentAssetIdSet.has(id) - ); - - if (toRemove.length > 0) { - debugLog( - `๐Ÿงน Clearing ${toRemove.length} stale asset segment cache entries` - ); - toRemove.forEach((id) => loadedAssetIdsRef.current.delete(id)); - - // Also clear from state maps - setAssetSegmentCounts((prev) => { - const next = new Map(prev); - toRemove.forEach((id) => next.delete(id)); - return next; - }); - setAssetDurations((prev) => { - const next = new Map(prev); - toRemove.forEach((id) => next.delete(id)); - return next; - }); - } - - previousAssetIdsRef.current = assetIds; - } - }, [assetIds, assetMetadata]); - - // OPTIMIZED: Load segment counts and durations in batches after UI is idle - // This prevents blocking the UI thread during initial render and animations - React.useEffect(() => { - // Check both ref AND state to determine if we need to load - // This ensures we reload when re-entering the view (state is cleared on unmount) - const assetsToLoad = assetMetadata.filter((id) => { - // Load if not in ref (never attempted) OR missing from state (needs reload) - const notInRef = !loadedAssetIdsRef.current.has(id); - const missingFromState = - !assetSegmentCounts.has(id) || !assetDurations.has(id); - return notInRef || missingFromState; - }); - - if (assetsToLoad.length === 0) { - // Nothing new to load - don't even start the async work - return; - } - - // Defer until animations complete - const interactionHandle = InteractionManager.runAfterInteractions(() => { - const controller = new AbortController(); - batchLoadingControllerRef.current = controller; - - // Process assets in batches to prevent blocking - const processBatch = async (startIdx: number) => { - if (controller.signal.aborted) return; - - const BATCH_SIZE = 5; // Process 5 assets at a time - const batch = assetsToLoad.slice(startIdx, startIdx + BATCH_SIZE); - - if (batch.length === 0) { - // All done! - debugLog('โœ… Finished loading all asset metadata'); - return; - } - - debugLog( - `๐Ÿ“Š Loading batch ${Math.floor(startIdx / BATCH_SIZE) + 1}: ${batch.length} assets (${startIdx + 1}-${startIdx + batch.length} of ${assetsToLoad.length})` - ); - - try { - const newCounts = new Map(); - const newDurations = new Map(); - - for (const assetId of batch) { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (controller.signal.aborted) break; - - try { - // Query asset_content_link to get audio segments - // ARCHITECTURE EXPLANATION: - // - Each asset can have multiple segments (merged assets) - // - Each segment is one row in asset_content_link - // - Each segment can have one or more audio files in its audio[] array - // - // COUNTS: - // - Segment count = number of content_link rows - // - Audio file count = total audio files across all segments - // - Duration = sum of all audio files' durations - const contentLinks = - await system.db.query.asset_content_link.findMany({ - columns: { - id: true, - audio: true - }, - where: eq(asset_content_link.asset_id, assetId), - orderBy: [ - asc(asset_content_link.order_index), - asc(asset_content_link.created_at) - ] - }); - - // DEBUG: Log raw query result - debugLog( - `๐Ÿ”Ž Query result for asset ${assetId.slice(0, 8)}:`, - contentLinks.length, - 'rows found' - ); - if (contentLinks.length > 0) { - debugLog( - ` First row ID: ${contentLinks[0]?.id.slice(0, 8)}, audio count: ${contentLinks[0]?.audio?.length ?? 0}` - ); - if (contentLinks.length > 1) { - debugLog( - ` Second row ID: ${contentLinks[1]?.id.slice(0, 8)}, audio count: ${contentLinks[1]?.audio?.length ?? 0}` - ); - } - } else { - console.warn( - `โš ๏ธ NO content_link rows found for asset ${assetId.slice(0, 8)}!` - ); - } - - // SEGMENT COUNT: Number of content_link rows (each row = one segment) - const segmentCount = contentLinks.length || 1; - newCounts.set(assetId, segmentCount); - - // DEBUG: Log segment count for this asset - debugLog( - `๐Ÿ” Asset ${assetId.slice(0, 8)} segment count: ${segmentCount} ${segmentCount > 1 ? 'โœ… MULTI-SEGMENT' : '(single)'}` - ); - - // AUDIO FILES: Extract all audio file references from all segments - // This flattens the audio arrays from all content_link rows - const audioValues = contentLinks - .flatMap((link) => link.audio ?? []) - .filter((value): value is string => !!value); - - // DEBUG: Log audio values found - debugLog( - `๐ŸŽต Asset ${assetId.slice(0, 8)} has ${audioValues.length} audio file(s) across ${segmentCount} segment(s) - loading durations...` - ); - - // DURATION: Load and sum all audio file durations - let totalDuration = 0; - - for (const audioValue of audioValues) { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (controller.signal.aborted) break; - - try { - // Get the full URI for this audio - let audioUri: string | null = null; - if (audioValue.startsWith('local/')) { - audioUri = await getLocalAttachmentUriWithOPFS(audioValue); - } else if (audioValue.startsWith('file://')) { - audioUri = audioValue; - } else if (system.permAttachmentQueue) { - // It's an attachment ID - const attachment = await system.powersync.getOptional<{ - id: string; - local_uri: string | null; - }>( - `SELECT * FROM ${system.permAttachmentQueue.table} WHERE id = ?`, - [audioValue] - ); - if (attachment?.local_uri) { - audioUri = system.permAttachmentQueue.getLocalUri( - attachment.local_uri - ); - } - } - - if (audioUri) { - // Load audio file to get duration - const player = createAudioPlayer(audioUri); - await new Promise((resolve) => { - if (player.isLoaded) { - resolve(); - return; - } - const check = setInterval(() => { - if (player.isLoaded) { - clearInterval(check); - resolve(); - } - }, 10); - setTimeout(() => { - clearInterval(check); - resolve(); - }, 5000); - }); - - if (player.isLoaded && player.duration > 0) { - totalDuration += player.duration * 1000; - } - player.release(); - } - } catch (err) { - // Skip this segment if we can't load it - console.warn(`Failed to load duration for segment:`, err); - } - } - - if (totalDuration > 0) { - newDurations.set(assetId, totalDuration); - debugLog( - `โฑ๏ธ Asset ${assetId.slice(0, 8)} total duration: ${Math.round(totalDuration / 1000)}s` - ); - } else { - // Set duration to 0 to mark as loaded (prevents infinite retries) - // AssetCard will only show duration if it's > 0, so 0 won't be displayed - newDurations.set(assetId, 0); - debugLog( - `โš ๏ธ Asset ${assetId.slice(0, 8)} has no duration (${audioValues.length} audio files found) - marked as loaded` - ); - } - - loadedAssetIdsRef.current.add(assetId); - } catch (err) { - // If query fails for any asset, default to 1 segment and 0 duration - // This marks it as loaded (prevents infinite retries) - console.warn(`Failed to load data for asset ${assetId}:`, err); - newCounts.set(assetId, 1); - newDurations.set(assetId, 0); - loadedAssetIdsRef.current.add(assetId); - } - } - - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (controller.signal.aborted) { - return; - } else { - if (newCounts.size > 0) { - // Merge with existing counts - setAssetSegmentCounts((prev) => { - const merged = new Map(prev); - for (const [id, count] of newCounts) { - merged.set(id, count); - } - return merged; - }); - debugLog( - `โœ… Batch loaded segment counts for ${newCounts.size} asset${newCounts.size > 1 ? 's' : ''}` - ); - } - - if (newDurations.size > 0) { - // Merge with existing durations - setAssetDurations((prev) => { - const merged = new Map(prev); - for (const [id, duration] of newDurations) { - merged.set(id, duration); - } - return merged; - }); - debugLog( - `โœ… Batch loaded durations for ${newDurations.size} asset${newDurations.size > 1 ? 's' : ''}` - ); - } - - // Schedule next batch with a frame delay to keep UI responsive - const timeoutId = setTimeout(() => { - timeoutIdsRef.current.delete(timeoutId); - void processBatch(startIdx + BATCH_SIZE); - }, 16); // One frame delay (60fps) - timeoutIdsRef.current.add(timeoutId); - } - } catch (error) { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (controller.signal.aborted) { - return; - } else { - console.error('Failed to load asset metadata batch:', error); - // Continue with next batch even if this one failed - setTimeout(() => { - void processBatch(startIdx + BATCH_SIZE); - }, 16); - } - } - }; - - // Start processing from first batch - void processBatch(0); - - return () => { - controller.abort(); - }; - }); - - return () => { - interactionHandle.cancel(); - // Abort controller if it exists - if (batchLoadingControllerRef.current) { - batchLoadingControllerRef.current.abort(); - batchLoadingControllerRef.current = null; - } - // Clear any pending timeouts - const timeoutIds = timeoutIdsRef.current; - timeoutIds.forEach((id) => clearTimeout(id)); - timeoutIds.clear(); - }; - // Only depend on assetIds and assetMetadata - NOT on the state Maps - // The Maps are checked inside the effect with .has(), so we don't need them as dependencies - // Including them causes the effect to re-run every time durations are updated, which - // triggers unnecessary re-checks even though loadedAssetIdsRef prevents actual re-loading - }, [assetIds, assetMetadata]); - - // ============================================================================ - // ASSET OPERATIONS (Delete, Merge) - // ============================================================================ - - const handleDeleteLocalAsset = React.useCallback( - async (assetId: string) => { - try { - await audioSegmentService.deleteAudioSegment(assetId); - - // Remove from session assets list - setSessionItems((prev) => prev.filter((a) => a.id !== assetId)); - - await queryClient.invalidateQueries({ - queryKey: ['assets', 'by-quest', currentQuestId], - exact: false - }); - } catch (e) { - console.error('Failed to delete local asset', e); - } - }, - [queryClient, currentQuestId] - ); - - const handleMergeDownLocal = React.useCallback( - async (index: number) => { - try { - const first = assets[index]; - const second = assets[index + 1]; - if (!first || !second || !currentUser) return; - if (first.source === 'cloud' || second.source === 'cloud') return; - - const contentLocal = resolveTable('asset_content_link', { - localOverride: true - }); - const secondContent = await system.db - .select() - .from(contentLocal) - .where(eq(contentLocal.asset_id, second.id)) - .orderBy(asc(contentLocal.order_index), asc(contentLocal.created_at)); - - // Get next available order_index for the target asset - let nextOrder = await getNextAclOrderIndex(first.id); - - for (const c of secondContent) { - if (!c.audio) continue; - await system.db.insert(contentLocal).values({ - asset_id: first.id, - source_language_id: c.source_language_id, // Deprecated field, kept for backward compatibility - languoid_id: c.languoid_id ?? c.source_language_id ?? null, // Use languoid_id if available, fallback to source_language_id - text: c.text || '', - audio: c.audio, - download_profiles: [currentUser.id], - order_index: nextOrder++ - }); - } - - await audioSegmentService.deleteAudioSegment(second.id); - - // Remove merged asset from session list (second one gets deleted) - setSessionItems((prev) => prev.filter((a) => a.id !== second.id)); - - // Force re-load of segment count for the merged asset - debugLog( - `๐Ÿ”„ Forcing segment count reload for merged asset: ${first.id}` - ); - loadedAssetIdsRef.current.delete(first.id); - setAssetSegmentCounts((prev) => { - const next = new Map(prev); - next.delete(first.id); - return next; - }); - setAssetDurations((prev) => { - const next = new Map(prev); - next.delete(first.id); - return next; - }); - - await queryClient.invalidateQueries({ - queryKey: ['assets', 'by-quest', currentQuestId], - exact: false - }); - } catch (e) { - console.error('Failed to merge local assets', e); - } - }, - [assets, currentUser, queryClient, currentQuestId] - ); - - const handleBatchMergeSelected = React.useCallback(() => { - const selectedOrdered = assets.filter( - (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' - ); - if (selectedOrdered.length < 2) return; - - RNAlert.alert( - 'Merge Assets', - `Are you sure you want to merge ${selectedOrdered.length} assets? The audio segments will be combined into the first selected asset, and the others will be deleted.`, - [ - { - text: 'Cancel', - style: 'cancel' - }, - { - text: 'Merge', - style: 'destructive', - isPreferred: true, - onPress: () => { - void (async () => { - try { - if (!currentUser) return; - - const target = selectedOrdered[0]!; - const rest = selectedOrdered.slice(1); - const contentLocal = resolveTable('asset_content_link', { - localOverride: true - }); - - for (const src of rest) { - const srcContent = await system.db - .select() - .from(contentLocal) - .where(eq(contentLocal.asset_id, src.id)) - .orderBy( - asc(contentLocal.order_index), - asc(contentLocal.created_at) - ); - - // Get next available order_index for the target asset - let nextOrder = await getNextAclOrderIndex(target.id); - - for (const c of srcContent) { - if (!c.audio) continue; - await system.db.insert(contentLocal).values({ - asset_id: target.id, - source_language_id: c.source_language_id, // Deprecated field, kept for backward compatibility - languoid_id: - c.languoid_id ?? c.source_language_id ?? null, // Use languoid_id if available, fallback to source_language_id - text: c.text || '', - audio: c.audio, - download_profiles: [currentUser.id], - order_index: nextOrder++ - }); - } - - await audioSegmentService.deleteAudioSegment(src.id); - } - - // Remove merged assets from session list (all except target get deleted) - const deletedIds = new Set(rest.map((a) => a.id)); - setSessionItems((prev) => - prev.filter((a) => !deletedIds.has(a.id)) - ); - - // Force re-load of segment count for the merged target asset - debugLog( - `๐Ÿ”„ Forcing segment count reload for merged asset: ${target.id}` - ); - loadedAssetIdsRef.current.delete(target.id); - setAssetSegmentCounts((prev) => { - const next = new Map(prev); - next.delete(target.id); - return next; - }); - setAssetDurations((prev) => { - const next = new Map(prev); - next.delete(target.id); - return next; - }); - - cancelSelection(); - await queryClient.invalidateQueries({ - queryKey: ['assets', 'by-quest', currentQuestId], - exact: false - }); - - debugLog('โœ… Batch merge completed'); - } catch (e) { - console.error('Failed to batch merge local assets', e); - RNAlert.alert( - 'Error', - 'Failed to merge assets. Please try again.' - ); - } - })(); - } - } - ] - ); - }, [ - assets, - selectedAssetIds, - currentUser, - cancelSelection, - queryClient, - currentQuestId - ]); - - const handleBatchDeleteSelected = React.useCallback(() => { - const selectedOrdered = assets.filter( - (a) => selectedAssetIds.has(a.id) && a.source !== 'cloud' - ); - if (selectedOrdered.length < 1) return; - - RNAlert.alert( - 'Delete Assets', - `Are you sure you want to delete ${selectedOrdered.length} asset${selectedOrdered.length > 1 ? 's' : ''}? This action cannot be undone.`, - [ - { - text: 'Cancel', - style: 'cancel' - }, - { - text: 'Delete', - style: 'destructive', - isPreferred: true, - onPress: () => { - void (async () => { - try { - for (const asset of selectedOrdered) { - await audioSegmentService.deleteAudioSegment(asset.id); - } - - // Remove deleted assets from session list - const deletedIds = new Set(selectedOrdered.map((a) => a.id)); - setSessionItems((prev) => - prev.filter((a) => !deletedIds.has(a.id)) - ); - - cancelSelection(); - await queryClient.invalidateQueries({ - queryKey: ['assets', 'by-quest', currentQuestId], - exact: false - }); - - debugLog( - `โœ… Batch delete completed: ${selectedOrdered.length} assets` - ); - } catch (e) { - console.error('Failed to batch delete local assets', e); - RNAlert.alert( - 'Error', - 'Failed to delete assets. Please try again.' - ); - } - })(); - } - } - ] - ); - }, [assets, selectedAssetIds, cancelSelection, queryClient, currentQuestId]); - - // ============================================================================ - // SELECT ALL / DESELECT ALL - // ============================================================================ - - // Calculate if all local assets are selected - const allSelected = React.useMemo(() => { - if (!isSelectionMode || assets.length === 0) return false; - const selectableAssets = assets.filter((a) => a.source !== 'cloud'); - if (selectableAssets.length === 0) return false; - return selectableAssets.every((a) => selectedAssetIds.has(a.id)); - }, [isSelectionMode, assets, selectedAssetIds]); - - // Handle select all / deselect all - const handleSelectAll = React.useCallback(() => { - if (allSelected) { - // Deselect all - selectMultiple([]); - } else { - // Select all local assets (exclude cloud assets) - const selectableIds = assets - .filter((a) => a.source !== 'cloud') - .map((a) => a.id); - selectMultiple(selectableIds); - } - }, [allSelected, assets, selectMultiple]); - - // ============================================================================ - // RENAME ASSET - // ============================================================================ - - const handleRenameAsset = React.useCallback( - (assetId: string, currentName: string | null) => { - setRenameAssetId(assetId); - setRenameAssetName(currentName ?? ''); - setShowRenameDrawer(true); - }, - [] - ); - - const handleSaveRename = React.useCallback( - async (newName: string) => { - if (!renameAssetId) return; - - try { - // renameAsset will validate that this is a local-only asset - // and throw if it's synced (immutable) - await renameAsset(renameAssetId, newName); - - // Update the name directly in sessionAssets to reflect in UI immediately - // This is safe because the database was already updated successfully - setSessionItems((prev) => - prev.map((asset) => - asset.id === renameAssetId ? { ...asset, name: newName } : asset - ) - ); - - // Invalidate queries to refresh the list in parent view - await queryClient.invalidateQueries({ - queryKey: ['assets', 'by-quest', currentQuestId], - exact: false - }); - - debugLog('โœ… Asset renamed successfully'); - } catch (error) { - console.error('โŒ Failed to rename asset:', error); - if (error instanceof Error) { - console.warn('โš ๏ธ Rename blocked:', error.message); - RNAlert.alert('Error', error.message); - } - } - }, - [renameAssetId, queryClient, currentQuestId] - ); - - // ============================================================================ - // CLEANUP ON UNMOUNT - // ============================================================================ - - // Cleanup effect: Clear all refs and stop audio when component unmounts - // This prevents memory leaks when navigating away from the recording view - React.useEffect(() => { - // Capture refs in variables to avoid stale closure warnings - const pendingAssetNames = pendingAssetNamesRef.current; - const loadedAssetIds = loadedAssetIdsRef.current; - const timeoutIds = timeoutIdsRef.current; - - return () => { - // Stop audio playback if playing (access via ref for latest state) - if (audioContextCurrentRef.current.isPlaying) { - void audioContextCurrentRef.current.stopCurrentSound(); - } - - // Stop PlayAll if running - if (isPlayAllRunningRef.current) { - isPlayAllRunningRef.current = false; - - // Stop current sound immediately - if (currentPlayAllSoundRef.current) { - try { - currentPlayAllSoundRef.current.pause(); - currentPlayAllSoundRef.current.release(); - } catch { - // Ignore errors during cleanup - } - currentPlayAllSoundRef.current = null; - } - } - - // Clear all refs to free memory - pendingAssetNames.clear(); - loadedAssetIds.clear(); - - // Abort any ongoing batch loading - if (batchLoadingControllerRef.current) { - batchLoadingControllerRef.current.abort(); - batchLoadingControllerRef.current = null; - } - - // Clear all pending timeouts - timeoutIds.forEach((id) => clearTimeout(id)); - timeoutIds.clear(); - - // Reset state maps (they'll be recreated on remount) - setAssetSegmentCounts(new Map()); - setAssetDurations(new Map()); - setCurrentlyPlayingAssetId(null); - setIsPlayAllRunning(false); - - debugLog('๐Ÿงน Cleaned up BibleRecordingView on unmount'); - }; - }, []); - - // ============================================================================ - // RENDER HELPERS - // ============================================================================ - - // Stable callbacks for AssetCard (don't change unless handlers change) - const stableHandlePlayAsset = React.useCallback(handlePlayAsset, [ - handlePlayAsset - ]); - const stableToggleSelect = React.useCallback(toggleSelect, [toggleSelect]); - const stableEnterSelection = React.useCallback(enterSelection, [ - enterSelection - ]); - const stableHandleDeleteLocalAsset = React.useCallback( - handleDeleteLocalAsset, - [handleDeleteLocalAsset] - ); - const stableHandleMergeDownLocal = React.useCallback(handleMergeDownLocal, [ - handleMergeDownLocal - ]); - const stableHandleRenameAsset = React.useCallback(handleRenameAsset, [ - handleRenameAsset - ]); - - // ============================================================================ - // OPTIMIZED CALLBACKS MAP - Prevents creating new functions in wheelChildren - // ============================================================================ - - // Create a memoized factory for asset callbacks - // This prevents creating new inline functions in wheelChildren useMemo - const createAssetCallbacks = React.useCallback( - (assetId: string) => ({ - onPress: () => { - if (isSelectionMode) { - stableToggleSelect(assetId); - } else { - void stableHandlePlayAsset(assetId); - } - }, - onLongPress: () => { - stableEnterSelection(assetId); - }, - onPlay: () => { - void stableHandlePlayAsset(assetId); - } - }), - [ - isSelectionMode, - stableToggleSelect, - stableHandlePlayAsset, - stableEnterSelection - ] - ); - - // Create a Map of callbacks per asset (only recreates when dependencies change) - // This is much more efficient than creating new functions in the render loop - const assetCallbacksMap = React.useMemo(() => { - const map = new Map< - string, - { - onPress: () => void; - onLongPress: () => void; - onPlay: () => void; - } - >(); - - itemsForWheel.forEach((item) => { - if (isAsset(item)) { - map.set(item.id, createAssetCallbacks(item.id)); - } - }); - - return map; - }, [itemsForWheel, createAssetCallbacks]); - - // Lazy renderItem for ArrayInsertionWheel - // OPTIMIZED: Only renders items when they become visible (virtualizaรงรฃo) - // No audioContext.position/duration dependencies - progress now uses SharedValues! - // This is much more efficient than pre-creating all children - const renderWheelItem = React.useCallback( - (item: ListItem, index: number) => { - // Render verse pill items differently from asset items - if (isPill(item)) { - const pillText = item.verse - ? (formatVerseRange(item.verse) ?? 'No Label') - : 'No Label'; - return ( - - - - ); - } - - // Asset item rendering - // Check if this asset is playing individually OR if it's the currently playing asset during play-all - const isThisAssetPlayingIndividually = - audioContext.isPlaying && audioContext.currentAudioId === item.id; - const isThisAssetPlayingInPlayAll = - isPlayAllRunning && currentlyPlayingAssetId === item.id; - const isThisAssetPlaying = - isThisAssetPlayingIndividually || isThisAssetPlayingInPlayAll; - const isSelected = selectedAssetIds.has(item.id); - - // Check if next item is an asset (not a pill) and not from cloud - const nextItem = itemsForWheel[index + 1]; - const canMergeDown = - index < itemsForWheel.length - 1 && - nextItem && - isAsset(nextItem) && - nextItem.source !== 'cloud'; - - // Duration from lazy-loaded metadata - const duration = item.duration; - - // Get stable callbacks from Map (avoids creating new functions) - const callbacks = assetCallbacksMap.get(item.id); - - // Fallback if callbacks not found (shouldn't happen, but defensive) - if (!callbacks) { - console.warn(`Missing callbacks for asset ${item.id}`); - return ; - } - - return ( - - ); - }, - [ - formatVerseRange, - audioContext.isPlaying, - audioContext.currentAudioId, - isPlayAllRunning, - currentlyPlayingAssetId, - selectedAssetIds, - isSelectionMode, - itemsForWheel, - assetCallbacksMap, - stableHandleDeleteLocalAsset, - stableHandleMergeDownLocal, - stableHandleRenameAsset - ] - ); - - // SESSION-ONLY MODE: No loading/error states needed - // The list starts empty and only shows assets recorded in this session - - // Show full-screen overlay when VAD is active and display mode is fullscreen - const showFullScreenOverlay = isVADActive && vadDisplayMode === 'fullscreen'; - - const addButtonComponent = useMemo(() => { - // Apply same conditions as floating button (line 3050) - const shouldShow = - !isSelectionMode && - showAddVerseButton && - verseToAdd !== null && - !isVADRecording && - allowAddVerseRef.current; - - if (!shouldShow) return null; - - return ( - - - - - - - ); - }, [ - isSelectionMode, - showAddVerseButton, - verseToAdd, - isVADRecording, - handleAddNextVerse - ]); - - const boundaryComponent = useMemo( - () => ( - - - - {/* Language-agnostic visual: mic + circle-plus = "add recording here" */} - - - - - - {addButtonComponent} - - ), - [addButtonComponent] - ); - - return ( - - {/* Full-screen VAD overlay - takes over entire screen */} - {showFullScreenOverlay && ( - { - // Cancel VAD mode - setIsVADActive(false); - }} - /> - )} - - {/* Header */} - - - - - {bookChapterLabelFull || bookChapterLabel} - - {/* - {t('doRecord')} - */} - - - {assets.length > 0 && ( - - )} - {fiaPericopeId ? ( - setShowFiaTextDrawer(true)} - > - - - ) : ( - - {assets.length} {t('assets').toLowerCase()} - - )} - - - - {/* {(isRecording || isVADRecording)? ( */} - {isVADActive ? ( - - {highlightedItemVerse - ? `${t('recording')}: ${formatVerseRange(highlightedItemVerse)}` - : t('recording')} - - ) : ( - - {highlightedItemVerse - ? `${t('recordTo')}: ${formatVerseRange(highlightedItemVerse)}` - : `${t('noLabelSelected')}`} - - )} - - {/* Scrollable list area - full height with padding for controls */} - - - - ref={wheelRef} - value={insertionIndex} - onChange={(newIndex) => { - const item = itemsForWheel[newIndex]; - const itemDesc = item - ? isPill(item) - ? `pill-${item.verse?.from ?? 'null'}` - : item.name - : 'end'; - console.log( - `๐ŸŽก Wheel onChange: ${insertionIndex} โ†’ ${newIndex} | ${itemDesc} ${item?.order_index}` - ); - setInsertionIndex(newIndex); - }} - rowHeight={ROW_HEIGHT} - className="h-full flex-1" - bottomInset={footerHeight} - boundaryComponent={boundaryComponent} - data={itemsForWheel} - renderItem={renderWheelItem} - /> - - - - {/* Bottom controls - absolutely positioned */} - - {isSelectionMode ? ( - - - - ) : ( - setShowVADSettings(true)} - onAutoCalibratePress={() => { - setAutoCalibrateOnOpen(true); - setShowVADSettings(true); - }} - currentEnergy={currentEnergy} - vadThreshold={vadThreshold} - energyShared={energyShared} - isRecordingShared={isRecordingShared} - displayMode={vadDisplayMode} - /> - )} - - - {/* Rename drawer */} - { - setShowRenameDrawer(open); - if (!open) { - setRenameAssetId(null); - } - }} - onSave={handleSaveRename} - /> - - {/* VAD Settings Drawer */} - { - setShowVADSettings(open); - // Reset auto-calibrate flag when drawer closes - if (!open) { - setAutoCalibrateOnOpen(false); - } - }} - minSegmentLength={vadMinSegmentLength} - onMinSegmentLengthChange={setVadMinSegmentLength} - threshold={vadThreshold} - onThresholdChange={setVadThreshold} - silenceDuration={vadSilenceDuration} - onSilenceDurationChange={setVadSilenceDuration} - isVADActive={isVADActive} - displayMode={vadDisplayMode} - onDisplayModeChange={setVadDisplayMode} - autoCalibrateOnOpen={autoCalibrateOnOpen} - energyShared={energyShared} - /> - - {/* Recording Help Dialog - shown once on first visit */} - - - {/* FIA Pericope Steps Drawer (only for FIA projects) */} - - - ); -}; - -export default BibleRecordingView; From ff7b9eb7001884490159fd55a1351eae247ed7ce Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Thu, 5 Mar 2026 09:43:45 -0600 Subject: [PATCH 138/143] test disabling ios password autofill --- .eas/workflows/run-preview-tests.yml | 11 +++++++++++ .maestro/flows/register.yaml | 8 ++++---- .maestro/flows/sign-in.yaml | 8 ++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.eas/workflows/run-preview-tests.yml b/.eas/workflows/run-preview-tests.yml index e132ac40f..ca2604c7e 100644 --- a/.eas/workflows/run-preview-tests.yml +++ b/.eas/workflows/run-preview-tests.yml @@ -118,3 +118,14 @@ jobs: device_identifier: 'iPhone 16e' build_id: ${{ needs.ios_repack.outputs.build_id || needs.ios_build.outputs.build_id }} flow_path: ['.maestro/flows/register.yaml', '.maestro/flows/sign-in.yaml'] + hooks: + after_checkout: + - run: | + DEVICE_ID=$(xcrun simctl list devices | grep 'iPhone 16e' | awk -F '[()]' '{print $2}') && \ + echo "Booted device ID: $DEVICE_ID" && \ + # Source - https://stackoverflow.com/a/76105538 + # Posted by Jonathan. + # Retrieved 2026-03-04, License - CC BY-SA 4.0 + plutil -replace restrictedBool.allowPasswordAutoFill.value -bool NO ~/Library/Developer/CoreSimulator/Devices/$DEVICE_ID/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/UserSettings.plist && \ + plutil -replace restrictedBool.allowPasswordAutoFill.value -bool NO ~/Library/Developer/CoreSimulator/Devices/$DEVICE_ID/data/Library/UserConfigurationProfiles/EffectiveUserSettings.plist && \ + plutil -replace restrictedBool.allowPasswordAutoFill.value -bool NO ~/Library/Developer/CoreSimulator/Devices/$DEVICE_ID/data/Library/UserConfigurationProfiles/PublicInfo/PublicEffectiveUserSettings.plist \ No newline at end of file diff --git a/.maestro/flows/register.yaml b/.maestro/flows/register.yaml index b54dbedf6..8b9f2276c 100644 --- a/.maestro/flows/register.yaml +++ b/.maestro/flows/register.yaml @@ -4,10 +4,10 @@ onFlowStart: --- - evalScript: ${output.username = faker.internet().username()} - evalScript: ${output.email = faker.internet().emailAddress()} -- runFlow: - when: - platform: iOS - file: _ios-toggle-autofill-passwords.yaml +# - runFlow: +# when: +# platform: iOS +# file: _ios-toggle-autofill-passwords.yaml - runFlow: _launch-and-onboard.yaml - tapOn: Create Account - tapOn: Username diff --git a/.maestro/flows/sign-in.yaml b/.maestro/flows/sign-in.yaml index f456e4808..70daa5478 100644 --- a/.maestro/flows/sign-in.yaml +++ b/.maestro/flows/sign-in.yaml @@ -1,9 +1,9 @@ appId: ${MAESTRO_APP_ID} --- -- runFlow: - when: - platform: iOS - file: _ios-toggle-autofill-passwords.yaml +# - runFlow: +# when: +# platform: iOS +# file: _ios-toggle-autofill-passwords.yaml - runFlow: _launch-and-onboard.yaml - tapOn: text: Sign In From 72d2958eda70b29d2bd0727796ef0a1f58f4ee52 Mon Sep 17 00:00:00 2001 From: keeandev <38674879+keeandev@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:52:19 -0600 Subject: [PATCH 139/143] add agent skills --- .agents/skills/create-agent-skills/SKILL.md | 192 +++++ .../references/api-security.md | 226 ++++++ .../references/be-clear-and-direct.md | 531 +++++++++++++ .../references/common-patterns.md | 595 ++++++++++++++ .../references/core-principles.md | 437 +++++++++++ .../references/executable-code.md | 175 +++++ .../references/iteration-and-testing.md | 474 ++++++++++++ .../references/recommended-structure.md | 168 ++++ .../references/skill-structure.md | 372 +++++++++ .../references/use-xml-tags.md | 466 +++++++++++ .../references/using-scripts.md | 113 +++ .../references/using-templates.md | 112 +++ .../references/workflows-and-validation.md | 510 ++++++++++++ .../templates/router-skill.md | 73 ++ .../templates/simple-skill.md | 33 + .../workflows/add-reference.md | 96 +++ .../workflows/add-script.md | 93 +++ .../workflows/add-template.md | 74 ++ .../workflows/add-workflow.md | 120 +++ .../workflows/audit-skill.md | 138 ++++ .../create-domain-expertise-skill.md | 605 +++++++++++++++ .../workflows/create-new-skill.md | 191 +++++ .../workflows/get-guidance.md | 121 +++ .../workflows/upgrade-to-router.md | 161 ++++ .../workflows/verify-skill.md | 204 +++++ .agents/skills/create-ui-components/SKILL.md | 67 ++ .../references/animation-principles.md | 135 ++++ .../references/animation-technical.md | 177 +++++ .../references/component-architecture.md | 134 ++++ .../references/form-patterns.md | 565 ++++++++++++++ .../references/project-conventions.md | 69 ++ .../workflows/add-animation.md | 107 +++ .../workflows/build-component.md | 96 +++ .../workflows/build-form.md | 140 ++++ .../workflows/polish-ui.md | 134 ++++ .agents/skills/refero-design/.gitignore | 2 + .agents/skills/refero-design/LICENSE | 21 + .agents/skills/refero-design/README.md | 118 +++ .agents/skills/refero-design/SKILL.md | 686 +++++++++++++++++ .../skills/refero-design/assets/banner.png | Bin 0 -> 650032 bytes .../refero-design/references/anti-ai-slop.md | 125 +++ .../skills/refero-design/references/color.md | 563 ++++++++++++++ .../refero-design/references/craft-details.md | 525 +++++++++++++ .../references/example-workflow.md | 331 ++++++++ .../skills/refero-design/references/icons.md | 166 ++++ .../refero-design/references/mcp-tools.md | 146 ++++ .../skills/refero-design/references/motion.md | 504 ++++++++++++ .../refero-design/references/typography.md | 726 ++++++++++++++++++ .../AGENTS.md | 68 ++ .../CLAUDE.md | 68 ++ .../README.md | 116 +++ .../supabase-postgres-best-practices/SKILL.md | 64 ++ .../references/advanced-full-text-search.md | 55 ++ .../references/advanced-jsonb-indexing.md | 49 ++ .../references/conn-idle-timeout.md | 46 ++ .../references/conn-limits.md | 44 ++ .../references/conn-pooling.md | 41 + .../references/conn-prepared-statements.md | 46 ++ .../references/data-batch-inserts.md | 54 ++ .../references/data-n-plus-one.md | 53 ++ .../references/data-pagination.md | 50 ++ .../references/data-upsert.md | 50 ++ .../references/lock-advisory.md | 56 ++ .../references/lock-deadlock-prevention.md | 68 ++ .../references/lock-short-transactions.md | 50 ++ .../references/lock-skip-locked.md | 54 ++ .../references/monitor-explain-analyze.md | 45 ++ .../references/monitor-pg-stat-statements.md | 55 ++ .../references/monitor-vacuum-analyze.md | 55 ++ .../references/query-composite-indexes.md | 44 ++ .../references/query-covering-indexes.md | 40 + .../references/query-index-types.md | 48 ++ .../references/query-missing-indexes.md | 43 ++ .../references/query-partial-indexes.md | 45 ++ .../references/schema-constraints.md | 80 ++ .../references/schema-data-types.md | 46 ++ .../references/schema-foreign-key-indexes.md | 59 ++ .../schema-lowercase-identifiers.md | 55 ++ .../references/schema-partitioning.md | 55 ++ .../references/schema-primary-keys.md | 61 ++ .../references/security-privileges.md | 54 ++ .../references/security-rls-basics.md | 50 ++ .../references/security-rls-performance.md | 57 ++ .cursor/commands/add-localization.md | 48 ++ .../rules/supabase/create-db-functions.mdc | 188 ----- .cursor/rules/supabase/create-migration.mdc | 137 ---- .../rules/supabase/create-rls-policies.mdc | 248 ------ .../supabase/postgres-sql-style-guide.mdc | 133 ---- .../writing-supabase-edge-functions.mdc | 105 --- .eas/workflows/run-preview-tests.yml | 4 +- .gitignore | 2 +- skills-lock.json | 20 + 92 files changed, 13812 insertions(+), 814 deletions(-) create mode 100644 .agents/skills/create-agent-skills/SKILL.md create mode 100644 .agents/skills/create-agent-skills/references/api-security.md create mode 100644 .agents/skills/create-agent-skills/references/be-clear-and-direct.md create mode 100644 .agents/skills/create-agent-skills/references/common-patterns.md create mode 100644 .agents/skills/create-agent-skills/references/core-principles.md create mode 100644 .agents/skills/create-agent-skills/references/executable-code.md create mode 100644 .agents/skills/create-agent-skills/references/iteration-and-testing.md create mode 100644 .agents/skills/create-agent-skills/references/recommended-structure.md create mode 100644 .agents/skills/create-agent-skills/references/skill-structure.md create mode 100644 .agents/skills/create-agent-skills/references/use-xml-tags.md create mode 100644 .agents/skills/create-agent-skills/references/using-scripts.md create mode 100644 .agents/skills/create-agent-skills/references/using-templates.md create mode 100644 .agents/skills/create-agent-skills/references/workflows-and-validation.md create mode 100644 .agents/skills/create-agent-skills/templates/router-skill.md create mode 100644 .agents/skills/create-agent-skills/templates/simple-skill.md create mode 100644 .agents/skills/create-agent-skills/workflows/add-reference.md create mode 100644 .agents/skills/create-agent-skills/workflows/add-script.md create mode 100644 .agents/skills/create-agent-skills/workflows/add-template.md create mode 100644 .agents/skills/create-agent-skills/workflows/add-workflow.md create mode 100644 .agents/skills/create-agent-skills/workflows/audit-skill.md create mode 100644 .agents/skills/create-agent-skills/workflows/create-domain-expertise-skill.md create mode 100644 .agents/skills/create-agent-skills/workflows/create-new-skill.md create mode 100644 .agents/skills/create-agent-skills/workflows/get-guidance.md create mode 100644 .agents/skills/create-agent-skills/workflows/upgrade-to-router.md create mode 100644 .agents/skills/create-agent-skills/workflows/verify-skill.md create mode 100644 .agents/skills/create-ui-components/SKILL.md create mode 100644 .agents/skills/create-ui-components/references/animation-principles.md create mode 100644 .agents/skills/create-ui-components/references/animation-technical.md create mode 100644 .agents/skills/create-ui-components/references/component-architecture.md create mode 100644 .agents/skills/create-ui-components/references/form-patterns.md create mode 100644 .agents/skills/create-ui-components/references/project-conventions.md create mode 100644 .agents/skills/create-ui-components/workflows/add-animation.md create mode 100644 .agents/skills/create-ui-components/workflows/build-component.md create mode 100644 .agents/skills/create-ui-components/workflows/build-form.md create mode 100644 .agents/skills/create-ui-components/workflows/polish-ui.md create mode 100644 .agents/skills/refero-design/.gitignore create mode 100644 .agents/skills/refero-design/LICENSE create mode 100644 .agents/skills/refero-design/README.md create mode 100644 .agents/skills/refero-design/SKILL.md create mode 100644 .agents/skills/refero-design/assets/banner.png create mode 100644 .agents/skills/refero-design/references/anti-ai-slop.md create mode 100644 .agents/skills/refero-design/references/color.md create mode 100644 .agents/skills/refero-design/references/craft-details.md create mode 100644 .agents/skills/refero-design/references/example-workflow.md create mode 100644 .agents/skills/refero-design/references/icons.md create mode 100644 .agents/skills/refero-design/references/mcp-tools.md create mode 100644 .agents/skills/refero-design/references/motion.md create mode 100644 .agents/skills/refero-design/references/typography.md create mode 100644 .agents/skills/supabase-postgres-best-practices/AGENTS.md create mode 100644 .agents/skills/supabase-postgres-best-practices/CLAUDE.md create mode 100644 .agents/skills/supabase-postgres-best-practices/README.md create mode 100644 .agents/skills/supabase-postgres-best-practices/SKILL.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/conn-limits.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/conn-pooling.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/data-pagination.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/data-upsert.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/lock-advisory.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/query-index-types.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/schema-constraints.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/schema-data-types.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/security-privileges.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md create mode 100644 .agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md create mode 100644 .cursor/commands/add-localization.md delete mode 100644 .cursor/rules/supabase/create-db-functions.mdc delete mode 100644 .cursor/rules/supabase/create-migration.mdc delete mode 100644 .cursor/rules/supabase/create-rls-policies.mdc delete mode 100644 .cursor/rules/supabase/postgres-sql-style-guide.mdc delete mode 100644 .cursor/rules/supabase/writing-supabase-edge-functions.mdc create mode 100644 skills-lock.json diff --git a/.agents/skills/create-agent-skills/SKILL.md b/.agents/skills/create-agent-skills/SKILL.md new file mode 100644 index 000000000..38ec0a9c2 --- /dev/null +++ b/.agents/skills/create-agent-skills/SKILL.md @@ -0,0 +1,192 @@ +--- +name: create-agent-skills +description: Expert guidance for creating, writing, building, and refining Claude Code Skills. Use when working with SKILL.md files, authoring new skills, improving existing skills, or understanding skill structure and best practices. +--- + + +## How Skills Work + +Skills are modular, filesystem-based capabilities that provide domain expertise on demand. This skill teaches how to create effective skills. + +### 1. Skills Are Prompts + +All prompting best practices apply. Be clear, be direct, use XML structure. Assume Claude is smart - only add context Claude doesn't have. + +### 2. SKILL.md Is Always Loaded + +When a skill is invoked, Claude reads SKILL.md. Use this guarantee: +- Essential principles go in SKILL.md (can't be skipped) +- Workflow-specific content goes in workflows/ +- Reusable knowledge goes in references/ + +### 3. Router Pattern for Complex Skills + +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md # Router + principles +โ”œโ”€โ”€ workflows/ # Step-by-step procedures (FOLLOW) +โ”œโ”€โ”€ references/ # Domain knowledge (READ) +โ”œโ”€โ”€ templates/ # Output structures (COPY + FILL) +โ””โ”€โ”€ scripts/ # Reusable code (EXECUTE) +``` + +SKILL.md asks "what do you want to do?" โ†’ routes to workflow โ†’ workflow specifies which references to read. + +**When to use each folder:** +- **workflows/** - Multi-step procedures Claude follows +- **references/** - Domain knowledge Claude reads for context +- **templates/** - Consistent output structures Claude copies and fills (plans, specs, configs) +- **scripts/** - Executable code Claude runs as-is (deploy, setup, API calls) + +### 4. Pure XML Structure + +No markdown headings (#, ##, ###) in skill body. Use semantic XML tags: +```xml +... +... +... +``` + +Keep markdown formatting within content (bold, lists, code blocks). + +### 5. Progressive Disclosure + +SKILL.md under 500 lines. Split detailed content into reference files. Load only what's needed for the current workflow. + + + +What would you like to do? + +1. Create new skill +2. Audit/modify existing skill +3. Add component (workflow/reference/template/script) +4. Get guidance + +**Wait for response before proceeding.** + + + +| Response | Next Action | Workflow | +|----------|-------------|----------| +| 1, "create", "new", "build" | Ask: "Task-execution skill or domain expertise skill?" | Route to appropriate create workflow | +| 2, "audit", "modify", "existing" | Ask: "Path to skill?" | Route to appropriate workflow | +| 3, "add", "component" | Ask: "Add what? (workflow/reference/template/script)" | workflows/add-{type}.md | +| 4, "guidance", "help" | General guidance | workflows/get-guidance.md | + +**Progressive disclosure for option 1 (create):** +- If user selects "Task-execution skill" โ†’ workflows/create-new-skill.md +- If user selects "Domain expertise skill" โ†’ workflows/create-domain-expertise-skill.md + +**Progressive disclosure for option 3 (add component):** +- If user specifies workflow โ†’ workflows/add-workflow.md +- If user specifies reference โ†’ workflows/add-reference.md +- If user specifies template โ†’ workflows/add-template.md +- If user specifies script โ†’ workflows/add-script.md + +**Intent-based routing (if user provides clear intent without selecting menu):** +- "audit this skill", "check skill", "review" โ†’ workflows/audit-skill.md +- "verify content", "check if current" โ†’ workflows/verify-skill.md +- "create domain expertise", "exhaustive knowledge base" โ†’ workflows/create-domain-expertise-skill.md +- "create skill for X", "build new skill" โ†’ workflows/create-new-skill.md +- "add workflow", "add reference", etc. โ†’ workflows/add-{type}.md +- "upgrade to router" โ†’ workflows/upgrade-to-router.md + +**After reading the workflow, follow it exactly.** + + + +## Skill Structure Quick Reference + +**Simple skill (single file):** +```yaml +--- +name: skill-name +description: What it does and when to use it. +--- + +What this skill does +Immediate actionable guidance +Step-by-step procedure +How to know it worked +``` + +**Complex skill (router pattern):** +``` +SKILL.md: + - Always applies + - Question to ask + - Maps answers to workflows + +workflows/: + - Which refs to load + - Steps + - Done when... + +references/: + Domain knowledge, patterns, examples + +templates/: + Output structures Claude copies and fills + (plans, specs, configs, documents) + +scripts/: + Executable code Claude runs as-is + (deploy, setup, API calls, data processing) +``` + + + +## Domain Knowledge + +All in `references/`: + +**Structure:** recommended-structure.md, skill-structure.md +**Principles:** core-principles.md, be-clear-and-direct.md, use-xml-tags.md +**Patterns:** common-patterns.md, workflows-and-validation.md +**Assets:** using-templates.md, using-scripts.md +**Advanced:** executable-code.md, api-security.md, iteration-and-testing.md + + + +## Workflows + +All in `workflows/`: + +| Workflow | Purpose | +|----------|---------| +| create-new-skill.md | Build a skill from scratch | +| create-domain-expertise-skill.md | Build exhaustive domain knowledge base for build/ | +| audit-skill.md | Analyze skill against best practices | +| verify-skill.md | Check if content is still accurate | +| add-workflow.md | Add a workflow to existing skill | +| add-reference.md | Add a reference to existing skill | +| add-template.md | Add a template to existing skill | +| add-script.md | Add a script to existing skill | +| upgrade-to-router.md | Convert simple skill to router pattern | +| get-guidance.md | Help decide what kind of skill to build | + + + +## YAML Frontmatter + +Required fields: +```yaml +--- +name: skill-name # lowercase-with-hyphens, matches directory +description: ... # What it does AND when to use it (third person) +--- +``` + +Name conventions: `create-*`, `manage-*`, `setup-*`, `generate-*`, `build-*` + + + +A well-structured skill: +- Has valid YAML frontmatter +- Uses pure XML structure (no markdown headings in body) +- Has essential principles inline in SKILL.md +- Routes directly to appropriate workflows based on user intent +- Keeps SKILL.md under 500 lines +- Asks minimal clarifying questions only when truly needed +- Has been tested with real usage + diff --git a/.agents/skills/create-agent-skills/references/api-security.md b/.agents/skills/create-agent-skills/references/api-security.md new file mode 100644 index 000000000..08ced5f1f --- /dev/null +++ b/.agents/skills/create-agent-skills/references/api-security.md @@ -0,0 +1,226 @@ + +When building skills that make API calls requiring credentials (API keys, tokens, secrets), follow this protocol to prevent credentials from appearing in chat. + + + +Raw curl commands with environment variables expose credentials: + +```bash +# โŒ BAD - API key visible in chat +curl -H "Authorization: Bearer $API_KEY" https://api.example.com/data +``` + +When Claude executes this, the full command with expanded `$API_KEY` appears in the conversation. + + + +Use `~/.claude/scripts/secure-api.sh` - a wrapper that loads credentials internally. + + +```bash +# โœ… GOOD - No credentials visible +~/.claude/scripts/secure-api.sh [args] + +# Examples: +~/.claude/scripts/secure-api.sh facebook list-campaigns +~/.claude/scripts/secure-api.sh ghl search-contact "email@example.com" +``` + + + +When building a new skill that requires API calls: + +1. **Add operations to the wrapper** (`~/.claude/scripts/secure-api.sh`): + +```bash +case "$SERVICE" in + yourservice) + case "$OPERATION" in + list-items) + curl -s -G \ + -H "Authorization: Bearer $YOUR_API_KEY" \ + "https://api.yourservice.com/items" + ;; + get-item) + ITEM_ID=$1 + curl -s -G \ + -H "Authorization: Bearer $YOUR_API_KEY" \ + "https://api.yourservice.com/items/$ITEM_ID" + ;; + *) + echo "Unknown operation: $OPERATION" >&2 + exit 1 + ;; + esac + ;; +esac +``` + +2. **Add profile support to the wrapper** (if service needs multiple accounts): + +```bash +# In secure-api.sh, add to profile remapping section: +yourservice) + SERVICE_UPPER="YOURSERVICE" + YOURSERVICE_API_KEY=$(eval echo \$${SERVICE_UPPER}_${PROFILE_UPPER}_API_KEY) + YOURSERVICE_ACCOUNT_ID=$(eval echo \$${SERVICE_UPPER}_${PROFILE_UPPER}_ACCOUNT_ID) + ;; +``` + +3. **Add credential placeholders to `~/.claude/.env`** using profile naming: + +```bash +# Check if entries already exist +grep -q "YOURSERVICE_MAIN_API_KEY=" ~/.claude/.env 2>/dev/null || \ + echo -e "\n# Your Service - Main profile\nYOURSERVICE_MAIN_API_KEY=\nYOURSERVICE_MAIN_ACCOUNT_ID=" >> ~/.claude/.env + +echo "Added credential placeholders to ~/.claude/.env - user needs to fill them in" +``` + +4. **Document profile workflow in your SKILL.md**: + +```markdown +## Profile Selection Workflow + +**CRITICAL:** Always use profile selection to prevent using wrong account credentials. + +### When user requests YourService operation: + +1. **Check for saved profile:** + ```bash + ~/.claude/scripts/profile-state get yourservice + ``` + +2. **If no profile saved, discover available profiles:** + ```bash + ~/.claude/scripts/list-profiles yourservice + ``` + +3. **If only ONE profile:** Use it automatically and announce: + ``` + "Using YourService profile 'main' to list items..." + ``` + +4. **If MULTIPLE profiles:** Ask user which one: + ``` + "Which YourService profile: main, clienta, or clientb?" + ``` + +5. **Save user's selection:** + ```bash + ~/.claude/scripts/profile-state set yourservice + ``` + +6. **Always announce which profile before calling API:** + ``` + "Using YourService profile 'main' to list items..." + ``` + +7. **Make API call with profile:** + ```bash + ~/.claude/scripts/secure-api.sh yourservice: list-items + ``` + +## Secure API Calls + +All API calls use profile syntax: + +```bash +~/.claude/scripts/secure-api.sh yourservice: [args] + +# Examples: +~/.claude/scripts/secure-api.sh yourservice:main list-items +~/.claude/scripts/secure-api.sh yourservice:main get-item +``` + +**Profile persists for session:** Once selected, use same profile for subsequent operations unless user explicitly changes it. +``` + + + + + +```bash +curl -s -G \ + -H "Authorization: Bearer $API_KEY" \ + "https://api.example.com/endpoint" +``` + + + +```bash +ITEM_ID=$1 +curl -s -X POST \ + -H "Authorization: Bearer $API_KEY" \ + -H "Content-Type: application/json" \ + -d @- \ + "https://api.example.com/items/$ITEM_ID" +``` + +Usage: +```bash +echo '{"name":"value"}' | ~/.claude/scripts/secure-api.sh service create-item +``` + + + +```bash +curl -s -X POST \ + -F "field1=value1" \ + -F "field2=value2" \ + -F "access_token=$API_TOKEN" \ + "https://api.example.com/endpoint" +``` + + + + +**Location:** `~/.claude/.env` (global for all skills, accessible from any directory) + +**Format:** +```bash +# Service credentials +SERVICE_API_KEY=your-key-here +SERVICE_ACCOUNT_ID=account-id-here + +# Another service +OTHER_API_TOKEN=token-here +OTHER_BASE_URL=https://api.other.com +``` + +**Loading in script:** +```bash +set -a +source ~/.claude/.env 2>/dev/null || { echo "Error: ~/.claude/.env not found" >&2; exit 1; } +set +a +``` + + + +1. **Never use raw curl with `$VARIABLE` in skill examples** - always use the wrapper +2. **Add all operations to the wrapper** - don't make users figure out curl syntax +3. **Auto-create credential placeholders** - add empty fields to `~/.claude/.env` immediately when creating the skill +4. **Keep credentials in `~/.claude/.env`** - one central location, works everywhere +5. **Document each operation** - show examples in SKILL.md +6. **Handle errors gracefully** - check for missing env vars, show helpful error messages + + + +Test the wrapper without exposing credentials: + +```bash +# This command appears in chat +~/.claude/scripts/secure-api.sh facebook list-campaigns + +# But API keys never appear - they're loaded inside the script +``` + +Verify credentials are loaded: +```bash +# Check .env exists +ls -la ~/.claude/.env + +# Check specific variables (without showing values) +grep -q "YOUR_API_KEY=" ~/.claude/.env && echo "API key configured" || echo "API key missing" +``` + diff --git a/.agents/skills/create-agent-skills/references/be-clear-and-direct.md b/.agents/skills/create-agent-skills/references/be-clear-and-direct.md new file mode 100644 index 000000000..38078e476 --- /dev/null +++ b/.agents/skills/create-agent-skills/references/be-clear-and-direct.md @@ -0,0 +1,531 @@ + +Show your skill to someone with minimal context and ask them to follow the instructions. If they're confused, Claude will likely be too. + + + +Clarity and directness are fundamental to effective skill authoring. Clear instructions reduce errors, improve execution quality, and minimize token waste. + + + + +Give Claude contextual information that frames the task: + +- What the task results will be used for +- What audience the output is meant for +- What workflow the task is part of +- The end goal or what successful completion looks like + +Context helps Claude make better decisions and produce more appropriate outputs. + + +```xml + +This analysis will be presented to investors who value transparency and actionable insights. Focus on financial metrics and clear recommendations. + +``` + + + + +Be specific about what you want Claude to do. If you want code only and nothing else, say so. + +**Vague**: "Help with the report" +**Specific**: "Generate a markdown report with three sections: Executive Summary, Key Findings, Recommendations" + +**Vague**: "Process the data" +**Specific**: "Extract customer names and email addresses from the CSV file, removing duplicates, and save to JSON format" + +Specificity eliminates ambiguity and reduces iteration cycles. + + + +Provide instructions as sequential steps. Use numbered lists or bullet points. + +```xml + +1. Extract data from source file +2. Transform to target format +3. Validate transformation +4. Save to output file +5. Verify output correctness + +``` + +Sequential steps create clear expectations and reduce the chance Claude skips important operations. + + + + + +```xml + +Please remove all personally identifiable information from these customer feedback messages: {{FEEDBACK_DATA}} + +``` + +**Problems**: +- What counts as PII? +- What should replace PII? +- What format should the output be? +- What if no PII is found? +- Should product names be redacted? + + + +```xml + +Anonymize customer feedback for quarterly review presentation. + + + + +1. Replace all customer names with "CUSTOMER_[ID]" (e.g., "Jane Doe" โ†’ "CUSTOMER_001") +2. Replace email addresses with "EMAIL_[ID]@example.com" +3. Redact phone numbers as "PHONE_[ID]" +4. If a message mentions a specific product (e.g., "AcmeCloud"), leave it intact +5. If no PII is found, copy the message verbatim +6. Output only the processed messages, separated by "---" + + +Data to process: {{FEEDBACK_DATA}} + + + +- All customer names replaced with IDs +- All emails and phones redacted +- Product names preserved +- Output format matches specification + +``` + +**Why this is better**: +- States the purpose (quarterly review) +- Provides explicit step-by-step rules +- Defines output format clearly +- Specifies edge cases (product names, no PII found) +- Defines success criteria + + + + +The clear version: +- States the purpose (quarterly review) +- Provides explicit step-by-step rules +- Defines output format +- Specifies edge cases (product names, no PII found) +- Includes success criteria + +The unclear version leaves all these decisions to Claude, increasing the chance of misalignment with expectations. + + + + +When format matters, show an example rather than just describing it. + + + +```xml + +Generate commit messages in conventional format with type, scope, and description. + +``` + + + +```xml + +Generate commit messages following these examples: + + +Added user authentication with JWT tokens + +``` +feat(auth): implement JWT-based authentication + +Add login endpoint and token validation middleware +``` + + + + +Fixed bug where dates displayed incorrectly in reports + +``` +fix(reports): correct date formatting in timezone conversion + +Use UTC timestamps consistently across report generation +``` + + + +Follow this style: type(scope): brief description, then detailed explanation. + +``` + + + +Examples communicate nuances that text descriptions can't: +- Exact formatting (spacing, capitalization, punctuation) +- Tone and style +- Level of detail +- Pattern across multiple cases + +Claude learns patterns from examples more reliably than from descriptions. + + + + + +Eliminate words and phrases that create ambiguity or leave decisions open. + + + +โŒ **"Try to..."** - Implies optional +โœ… **"Always..."** or **"Never..."** - Clear requirement + +โŒ **"Should probably..."** - Unclear obligation +โœ… **"Must..."** or **"May optionally..."** - Clear obligation level + +โŒ **"Generally..."** - When are exceptions allowed? +โœ… **"Always... except when..."** - Clear rule with explicit exceptions + +โŒ **"Consider..."** - Should Claude always do this or only sometimes? +โœ… **"If X, then Y"** or **"Always..."** - Clear conditions + + + +โŒ **Ambiguous**: +```xml + +You should probably validate the output and try to fix any errors. + +``` + +โœ… **Clear**: +```xml + +Always validate output before proceeding: + +```bash +python scripts/validate.py output_dir/ +``` + +If validation fails, fix errors and re-validate. Only proceed when validation passes with zero errors. + +``` + + + + + +Anticipate edge cases and define how to handle them. Don't leave Claude guessing. + + + +```xml + +Extract email addresses from the text file and save to a JSON array. + +``` + +**Questions left unanswered**: +- What if no emails are found? +- What if the same email appears multiple times? +- What if emails are malformed? +- What JSON format exactly? + + + +```xml + +Extract email addresses from the text file and save to a JSON array. + + +- **No emails found**: Save empty array `[]` +- **Duplicate emails**: Keep only unique emails +- **Malformed emails**: Skip invalid formats, log to stderr +- **Output format**: Array of strings, one email per element + + + +```json +[ + "user1@example.com", + "user2@example.com" +] +``` + + +``` + + + + + +When output format matters, specify it precisely. Show examples. + + + +```xml + +Generate a report with the analysis results. + +``` + + + +```xml + +Generate a markdown report with this exact structure: + +```markdown +# Analysis Report: [Title] + +## Executive Summary +[1-2 paragraphs summarizing key findings] + +## Key Findings +- Finding 1 with supporting data +- Finding 2 with supporting data +- Finding 3 with supporting data + +## Recommendations +1. Specific actionable recommendation +2. Specific actionable recommendation + +## Appendix +[Raw data and detailed calculations] +``` + +**Requirements**: +- Use exactly these section headings +- Executive summary must be 1-2 paragraphs +- List 3-5 key findings +- Provide 2-4 recommendations +- Include appendix with source data + +``` + + + + + +When Claude must make decisions, provide clear criteria. + + + +```xml + +Analyze the data and decide which visualization to use. + +``` + +**Problem**: What factors should guide this decision? + + + +```xml + +Analyze the data and select appropriate visualization: + + +**Use bar chart when**: +- Comparing quantities across categories +- Fewer than 10 categories +- Exact values matter + +**Use line chart when**: +- Showing trends over time +- Continuous data +- Pattern recognition matters more than exact values + +**Use scatter plot when**: +- Showing relationship between two variables +- Looking for correlations +- Individual data points matter + + +``` + +**Benefits**: Claude has objective criteria for making the decision rather than guessing. + + + + + +Clearly separate "must do" from "nice to have" from "must not do". + + + +```xml + +The report should include financial data, customer metrics, and market analysis. It would be good to have visualizations. Don't make it too long. + +``` + +**Problems**: +- Are all three content types required? +- Are visualizations optional or required? +- How long is "too long"? + + + +```xml + + +- Financial data (revenue, costs, profit margins) +- Customer metrics (acquisition, retention, lifetime value) +- Market analysis (competition, trends, opportunities) +- Maximum 5 pages + + + +- Charts and visualizations +- Industry benchmarks +- Future projections + + + +- Include confidential customer names +- Exceed 5 pages +- Use technical jargon without definitions + + +``` + +**Benefits**: Clear priorities and constraints prevent misalignment. + + + + + +Define what success looks like. How will Claude know it succeeded? + + + +```xml + +Process the CSV file and generate a report. + +``` + +**Problem**: When is this task complete? What defines success? + + + +```xml + +Process the CSV file and generate a summary report. + + + +- All rows in CSV successfully parsed +- No data validation errors +- Report generated with all required sections +- Report saved to output/report.md +- Output file is valid markdown +- Process completes without errors + +``` + +**Benefits**: Clear completion criteria eliminate ambiguity about when the task is done. + + + + + +Test your instructions by asking: "Could I hand these instructions to a junior developer and expect correct results?" + + + +1. Read your skill instructions +2. Remove context only you have (project knowledge, unstated assumptions) +3. Identify ambiguous terms or vague requirements +4. Add specificity where needed +5. Test with someone who doesn't have your context +6. Iterate based on their questions and confusion + +If a human with minimal context struggles, Claude will too. + + + + + +โŒ **Unclear**: +```xml + +Clean the data and remove bad entries. + +``` + +โœ… **Clear**: +```xml + + +1. Remove rows where required fields (name, email, date) are empty +2. Standardize date format to YYYY-MM-DD +3. Remove duplicate entries based on email address +4. Validate email format (must contain @ and domain) +5. Save cleaned data to output/cleaned_data.csv + + + +- No empty required fields +- All dates in YYYY-MM-DD format +- No duplicate emails +- All emails valid format +- Output file created successfully + + +``` + + + +โŒ **Unclear**: +```xml + +Write a function to process user input. + +``` + +โœ… **Clear**: +```xml + + +Write a Python function with this signature: + +```python +def process_user_input(raw_input: str) -> dict: + """ + Validate and parse user input. + + Args: + raw_input: Raw string from user (format: "name:email:age") + + Returns: + dict with keys: name (str), email (str), age (int) + + Raises: + ValueError: If input format is invalid + """ +``` + +**Requirements**: +- Split input on colon delimiter +- Validate email contains @ and domain +- Convert age to integer, raise ValueError if not numeric +- Return dictionary with specified keys +- Include docstring and type hints + + + +- Function signature matches specification +- All validation checks implemented +- Proper error handling for invalid input +- Type hints included +- Docstring included + + +``` + + diff --git a/.agents/skills/create-agent-skills/references/common-patterns.md b/.agents/skills/create-agent-skills/references/common-patterns.md new file mode 100644 index 000000000..4f184f7d9 --- /dev/null +++ b/.agents/skills/create-agent-skills/references/common-patterns.md @@ -0,0 +1,595 @@ + +This reference documents common patterns for skill authoring, including templates, examples, terminology consistency, and anti-patterns. All patterns use pure XML structure. + + + + +Provide templates for output format. Match the level of strictness to your needs. + + + +Use when output format must be exact and consistent: + +```xml + +ALWAYS use this exact template structure: + +```markdown +# [Analysis Title] + +## Executive summary +[One-paragraph overview of key findings] + +## Key findings +- Finding 1 with supporting data +- Finding 2 with supporting data +- Finding 3 with supporting data + +## Recommendations +1. Specific actionable recommendation +2. Specific actionable recommendation +``` + +``` + +**When to use**: Compliance reports, standardized formats, automated processing + + + +Use when Claude should adapt the format based on context: + +```xml + +Here is a sensible default format, but use your best judgment: + +```markdown +# [Analysis Title] + +## Executive summary +[Overview] + +## Key findings +[Adapt sections based on what you discover] + +## Recommendations +[Tailor to the specific context] +``` + +Adjust sections as needed for the specific analysis type. + +``` + +**When to use**: Exploratory analysis, context-dependent formatting, creative tasks + + + + + +For skills where output quality depends on seeing examples, provide input/output pairs. + + + +```xml + +Generate commit messages following conventional commit format. + + + +Generate commit messages following these examples: + + +Added user authentication with JWT tokens + +``` +feat(auth): implement JWT-based authentication + +Add login endpoint and token validation middleware +``` + + + + +Fixed bug where dates displayed incorrectly in reports + +``` +fix(reports): correct date formatting in timezone conversion + +Use UTC timestamps consistently across report generation +``` + + + +Follow this style: type(scope): brief description, then detailed explanation. + +``` + + + +- Output format has nuances that text explanations can't capture +- Pattern recognition is easier than rule following +- Examples demonstrate edge cases +- Multi-shot learning improves quality + + + + + +Choose one term and use it throughout the skill. Inconsistent terminology confuses Claude and reduces execution quality. + + + +Consistent usage: +- Always "API endpoint" (not mixing with "URL", "API route", "path") +- Always "field" (not mixing with "box", "element", "control") +- Always "extract" (not mixing with "pull", "get", "retrieve") + +```xml + +Extract data from API endpoints using field mappings. + + + +1. Identify the API endpoint +2. Map response fields to your schema +3. Extract field values + +``` + + + +Inconsistent usage creates confusion: + +```xml + +Pull data from API routes using element mappings. + + + +1. Identify the URL +2. Map response boxes to your schema +3. Retrieve control values + +``` + +Claude must now interpret: Are "API routes" and "URLs" the same? Are "fields", "boxes", "elements", and "controls" the same? + + + +1. Choose terminology early in skill development +2. Document key terms in `` or `` +3. Use find/replace to enforce consistency +4. Review reference files for consistent usage + + + + + +Provide a default approach with an escape hatch for special cases, not a list of alternatives. Too many options paralyze decision-making. + + + +Clear default with escape hatch: + +```xml + +Use pdfplumber for text extraction: + +```python +import pdfplumber +with pdfplumber.open("file.pdf") as pdf: + text = pdf.pages[0].extract_text() +``` + +For scanned PDFs requiring OCR, use pdf2image with pytesseract instead. + +``` + + + +Too many options creates decision paralysis: + +```xml + +You can use any of these libraries: + +- **pypdf**: Good for basic extraction +- **pdfplumber**: Better for tables +- **PyMuPDF**: Faster but more complex +- **pdf2image**: For scanned documents +- **pdfminer**: Low-level control +- **tabula-py**: Table-focused + +Choose based on your needs. + +``` + +Claude must now research and compare all options before starting. This wastes tokens and time. + + + +1. Recommend ONE default approach +2. Explain when to use the default (implied: most of the time) +3. Add ONE escape hatch for edge cases +4. Link to advanced reference if multiple alternatives truly needed + + + + + +Common mistakes to avoid when authoring skills. + + + +โŒ **BAD**: Using markdown headings in skill body: + +```markdown +# PDF Processing + +## Quick start +Extract text with pdfplumber... + +## Advanced features +Form filling requires additional setup... +``` + +โœ… **GOOD**: Using pure XML structure: + +```xml + +PDF processing with text extraction, form filling, and merging capabilities. + + + +Extract text with pdfplumber... + + + +Form filling requires additional setup... + +``` + +**Why it matters**: XML provides semantic meaning, reliable parsing, and token efficiency. + + + +โŒ **BAD**: +```yaml +description: Helps with documents +``` + +โœ… **GOOD**: +```yaml +description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction. +``` + +**Why it matters**: Vague descriptions prevent Claude from discovering and using the skill appropriately. + + + +โŒ **BAD**: +```yaml +description: I can help you process Excel files and generate reports +``` + +โœ… **GOOD**: +```yaml +description: Processes Excel files and generates reports. Use when analyzing spreadsheets or .xlsx files. +``` + +**Why it matters**: Skills must use third person. First/second person breaks the skill metadata pattern. + + + +โŒ **BAD**: Directory name doesn't match skill name or verb-noun convention: +- Directory: `facebook-ads`, Name: `facebook-ads-manager` +- Directory: `stripe-integration`, Name: `stripe` +- Directory: `helper-scripts`, Name: `helper` + +โœ… **GOOD**: Consistent verb-noun convention: +- Directory: `manage-facebook-ads`, Name: `manage-facebook-ads` +- Directory: `setup-stripe-payments`, Name: `setup-stripe-payments` +- Directory: `process-pdfs`, Name: `process-pdfs` + +**Why it matters**: Consistency in naming makes skills discoverable and predictable. + + + +โŒ **BAD**: +```xml + +You can use pypdf, or pdfplumber, or PyMuPDF, or pdf2image, or pdfminer, or tabula-py... + +``` + +โœ… **GOOD**: +```xml + +Use pdfplumber for text extraction: + +```python +import pdfplumber +``` + +For scanned PDFs requiring OCR, use pdf2image with pytesseract instead. + +``` + +**Why it matters**: Decision paralysis. Provide one default approach with escape hatch for special cases. + + + +โŒ **BAD**: References nested multiple levels: +``` +SKILL.md โ†’ advanced.md โ†’ details.md โ†’ examples.md +``` + +โœ… **GOOD**: References one level deep from SKILL.md: +``` +SKILL.md โ†’ advanced.md +SKILL.md โ†’ details.md +SKILL.md โ†’ examples.md +``` + +**Why it matters**: Claude may only partially read deeply nested files. Keep references one level deep from SKILL.md. + + + +โŒ **BAD**: +```xml + +See scripts\validate.py for validation + +``` + +โœ… **GOOD**: +```xml + +See scripts/validate.py for validation + +``` + +**Why it matters**: Always use forward slashes for cross-platform compatibility. + + + +**Problem**: When showing examples of dynamic context syntax (exclamation mark + backticks) or file references (@ prefix), the skill loader executes these during skill loading. + +โŒ **BAD** - These execute during skill load: +```xml + +Load current status with: !`git status` +Review dependencies in: @package.json + +``` + +โœ… **GOOD** - Add space to prevent execution: +```xml + +Load current status with: ! `git status` (remove space before backtick in actual usage) +Review dependencies in: @ package.json (remove space after @ in actual usage) + +``` + +**When this applies**: +- Skills that teach users about dynamic context (slash commands, prompts) +- Any documentation showing the exclamation mark prefix syntax or @ file references +- Skills with example commands or file paths that shouldn't execute during loading + +**Why it matters**: Without the space, these execute during skill load, causing errors or unwanted file reads. + + + +โŒ **BAD**: Missing required tags: +```xml + +Use this tool for processing... + +``` + +โœ… **GOOD**: All required tags present: +```xml + +Process data files with validation and transformation. + + + +Use this tool for processing... + + + +- Input file successfully processed +- Output file validates without errors +- Transformation applied correctly + +``` + +**Why it matters**: Every skill must have ``, ``, and `` (or ``). + + + +โŒ **BAD**: Mixing XML tags with markdown headings: +```markdown + +PDF processing capabilities + + +## Quick start + +Extract text with pdfplumber... + +## Advanced features + +Form filling... +``` + +โœ… **GOOD**: Pure XML throughout: +```xml + +PDF processing capabilities + + + +Extract text with pdfplumber... + + + +Form filling... + +``` + +**Why it matters**: Consistency in structure. Either use pure XML or pure markdown (prefer XML). + + + +โŒ **BAD**: Forgetting to close XML tags: +```xml + +Process PDF files + + +Use pdfplumber... + +``` + +โœ… **GOOD**: Properly closed tags: +```xml + +Process PDF files + + + +Use pdfplumber... + +``` + +**Why it matters**: Unclosed tags break XML parsing and create ambiguous boundaries. + + + + + +Keep SKILL.md concise by linking to detailed reference files. Claude loads reference files only when needed. + + + +```xml + +Manage Facebook Ads campaigns, ad sets, and ads via the Marketing API. + + + + +See [basic-operations.md](basic-operations.md) for campaign creation and management. + + + + +**Custom audiences**: See [audiences.md](audiences.md) +**Conversion tracking**: See [conversions.md](conversions.md) +**Budget optimization**: See [budgets.md](budgets.md) +**API reference**: See [api-reference.md](api-reference.md) + +``` + +**Benefits**: +- SKILL.md stays under 500 lines +- Claude only reads relevant reference files +- Token usage scales with task complexity +- Easier to maintain and update + + + + + +For skills with validation steps, make validation scripts verbose and specific. + + + +```xml + +After making changes, validate immediately: + +```bash +python scripts/validate.py output_dir/ +``` + +If validation fails, fix errors before continuing. Validation errors include: + +- **Field not found**: "Field 'signature_date' not found. Available fields: customer_name, order_total, signature_date_signed" +- **Type mismatch**: "Field 'order_total' expects number, got string" +- **Missing required field**: "Required field 'customer_name' is missing" + +Only proceed when validation passes with zero errors. + +``` + +**Why verbose errors help**: +- Claude can fix issues without guessing +- Specific error messages reduce iteration cycles +- Available options shown in error messages + + + + + +For complex multi-step workflows, provide a checklist Claude can copy and track progress. + + + +```xml + +Copy this checklist and check off items as you complete them: + +``` +Task Progress: +- [ ] Step 1: Analyze the form (run analyze_form.py) +- [ ] Step 2: Create field mapping (edit fields.json) +- [ ] Step 3: Validate mapping (run validate_fields.py) +- [ ] Step 4: Fill the form (run fill_form.py) +- [ ] Step 5: Verify output (run verify_output.py) +``` + + +**Analyze the form** + +Run: `python scripts/analyze_form.py input.pdf` + +This extracts form fields and their locations, saving to `fields.json`. + + + +**Create field mapping** + +Edit `fields.json` to add values for each field. + + + +**Validate mapping** + +Run: `python scripts/validate_fields.py fields.json` + +Fix any validation errors before continuing. + + + +**Fill the form** + +Run: `python scripts/fill_form.py input.pdf fields.json output.pdf` + + + +**Verify output** + +Run: `python scripts/verify_output.py output.pdf` + +If verification fails, return to Step 2. + + +``` + +**Benefits**: +- Clear progress tracking +- Prevents skipping steps +- Easy to resume after interruption + + diff --git a/.agents/skills/create-agent-skills/references/core-principles.md b/.agents/skills/create-agent-skills/references/core-principles.md new file mode 100644 index 000000000..35313e4be --- /dev/null +++ b/.agents/skills/create-agent-skills/references/core-principles.md @@ -0,0 +1,437 @@ + +Core principles guide skill authoring decisions. These principles ensure skills are efficient, effective, and maintainable across different models and use cases. + + + + +Skills use pure XML structure for consistent parsing, efficient token usage, and improved Claude performance. + + + + +XML enforces consistent structure across all skills. All skills use the same tag names for the same purposes: +- `` always defines what the skill does +- `` always provides immediate guidance +- `` always defines completion + +This consistency makes skills predictable and easier to maintain. + + + +XML provides unambiguous boundaries and semantic meaning. Claude can reliably: +- Identify section boundaries (where content starts and ends) +- Understand content purpose (what role each section plays) +- Skip irrelevant sections (progressive disclosure) +- Parse programmatically (validation tools can check structure) + +Markdown headings are just visual formatting. Claude must infer meaning from heading text, which is less reliable. + + + +XML tags are more efficient than markdown headings: + +**Markdown headings**: +```markdown +## Quick start +## Workflow +## Advanced features +## Success criteria +``` +Total: ~20 tokens, no semantic meaning to Claude + +**XML tags**: +```xml + + + + +``` +Total: ~15 tokens, semantic meaning built-in + +Savings compound across all skills in the ecosystem. + + + +Claude performs better with pure XML because: +- Unambiguous section boundaries reduce parsing errors +- Semantic tags convey intent directly (no inference needed) +- Nested tags create clear hierarchies +- Consistent structure across skills reduces cognitive load +- Progressive disclosure works more reliably + +Pure XML structure is not just a style preferenceโ€”it's a performance optimization. + + + + +**Remove ALL markdown headings (#, ##, ###) from skill body content.** Replace with semantic XML tags. Keep markdown formatting WITHIN content (bold, italic, lists, code blocks, links). + + + +Every skill MUST have: +- `` - What the skill does and why it matters +- `` - Immediate, actionable guidance +- `` or `` - How to know it worked + +See [use-xml-tags.md](use-xml-tags.md) for conditional tags and intelligence rules. + + + + + +The context window is shared. Your skill shares it with the system prompt, conversation history, other skills' metadata, and the actual request. + + + +Only add context Claude doesn't already have. Challenge each piece of information: +- "Does Claude really need this explanation?" +- "Can I assume Claude knows this?" +- "Does this paragraph justify its token cost?" + +Assume Claude is smart. Don't explain obvious concepts. + + + +**Concise** (~50 tokens): +```xml + +Extract PDF text with pdfplumber: + +```python +import pdfplumber + +with pdfplumber.open("file.pdf") as pdf: + text = pdf.pages[0].extract_text() +``` + +``` + +**Verbose** (~150 tokens): +```xml + +PDF files are a common file format used for documents. To extract text from them, we'll use a Python library called pdfplumber. First, you'll need to import the library, then open the PDF file using the open method, and finally extract the text from each page. Here's how to do it: + +```python +import pdfplumber + +with pdfplumber.open("file.pdf") as pdf: + text = pdf.pages[0].extract_text() +``` + +This code opens the PDF and extracts text from the first page. + +``` + +The concise version assumes Claude knows what PDFs are, understands Python imports, and can read code. All those assumptions are correct. + + + +Add explanation when: +- Concept is domain-specific (not general programming knowledge) +- Pattern is non-obvious or counterintuitive +- Context affects behavior in subtle ways +- Trade-offs require judgment + +Don't add explanation for: +- Common programming concepts (loops, functions, imports) +- Standard library usage (reading files, making HTTP requests) +- Well-known tools (git, npm, pip) +- Obvious next steps + + + + + +Match the level of specificity to the task's fragility and variability. Give Claude more freedom for creative tasks, less freedom for fragile operations. + + + + +- Multiple approaches are valid +- Decisions depend on context +- Heuristics guide the approach +- Creative solutions welcome + + + +```xml + +Review code for quality, bugs, and maintainability. + + + +1. Analyze the code structure and organization +2. Check for potential bugs or edge cases +3. Suggest improvements for readability and maintainability +4. Verify adherence to project conventions + + + +- All major issues identified +- Suggestions are actionable and specific +- Review balances praise and criticism + +``` + +Claude has freedom to adapt the review based on what the code needs. + + + + + +- A preferred pattern exists +- Some variation is acceptable +- Configuration affects behavior +- Template can be adapted + + + +```xml + +Generate reports with customizable format and sections. + + + +Use this template and customize as needed: + +```python +def generate_report(data, format="markdown", include_charts=True): + # Process data + # Generate output in specified format + # Optionally include visualizations +``` + + + +- Report includes all required sections +- Format matches user preference +- Data accurately represented + +``` + +Claude can customize the template based on requirements. + + + + + +- Operations are fragile and error-prone +- Consistency is critical +- A specific sequence must be followed +- Deviation causes failures + + + +```xml + +Run database migration with exact sequence to prevent data loss. + + + +Run exactly this script: + +```bash +python scripts/migrate.py --verify --backup +``` + +**Do not modify the command or add additional flags.** + + + +- Migration completes without errors +- Backup created before migration +- Verification confirms data integrity + +``` + +Claude must follow the exact command with no variation. + + + + +The key is matching specificity to fragility: + +- **Fragile operations** (database migrations, payment processing, security): Low freedom, exact instructions +- **Standard operations** (API calls, file processing, data transformation): Medium freedom, preferred pattern with flexibility +- **Creative operations** (code review, content generation, analysis): High freedom, heuristics and principles + +Mismatched specificity causes problems: +- Too much freedom on fragile tasks โ†’ errors and failures +- Too little freedom on creative tasks โ†’ rigid, suboptimal outputs + + + + + +Skills act as additions to models, so effectiveness depends on the underlying model. What works for Opus might need more detail for Haiku. + + + +Test your skill with all models you plan to use: + + +**Claude Haiku** (fast, economical) + +Questions to ask: +- Does the skill provide enough guidance? +- Are examples clear and complete? +- Do implicit assumptions become explicit? +- Does Haiku need more structure? + +Haiku benefits from: +- More explicit instructions +- Complete examples (no partial code) +- Clear success criteria +- Step-by-step workflows + + + +**Claude Sonnet** (balanced) + +Questions to ask: +- Is the skill clear and efficient? +- Does it avoid over-explanation? +- Are workflows well-structured? +- Does progressive disclosure work? + +Sonnet benefits from: +- Balanced detail level +- XML structure for clarity +- Progressive disclosure +- Concise but complete guidance + + + +**Claude Opus** (powerful reasoning) + +Questions to ask: +- Does the skill avoid over-explaining? +- Can Opus infer obvious steps? +- Are constraints clear? +- Is context minimal but sufficient? + +Opus benefits from: +- Concise instructions +- Principles over procedures +- High degrees of freedom +- Trust in reasoning capabilities + + + + +Aim for instructions that work well across all target models: + +**Good balance**: +```xml + +Use pdfplumber for text extraction: + +```python +import pdfplumber +with pdfplumber.open("file.pdf") as pdf: + text = pdf.pages[0].extract_text() +``` + +For scanned PDFs requiring OCR, use pdf2image with pytesseract instead. + +``` + +This works for all models: +- Haiku gets complete working example +- Sonnet gets clear default with escape hatch +- Opus gets enough context without over-explanation + +**Too minimal for Haiku**: +```xml + +Use pdfplumber for text extraction. + +``` + +**Too verbose for Opus**: +```xml + +PDF files are documents that contain text. To extract that text, we use a library called pdfplumber. First, import the library at the top of your Python file. Then, open the PDF file using the pdfplumber.open() method. This returns a PDF object. Access the pages attribute to get a list of pages. Each page has an extract_text() method that returns the text content... + +``` + + + +1. Start with medium detail level +2. Test with target models +3. Observe where models struggle or succeed +4. Adjust based on actual performance +5. Re-test and iterate + +Don't optimize for one model. Find the balance that works across your target models. + + + + + +SKILL.md serves as an overview. Reference files contain details. Claude loads reference files only when needed. + + + +Progressive disclosure keeps token usage proportional to task complexity: + +- Simple task: Load SKILL.md only (~500 tokens) +- Medium task: Load SKILL.md + one reference (~1000 tokens) +- Complex task: Load SKILL.md + multiple references (~2000 tokens) + +Without progressive disclosure, every task loads all content regardless of need. + + + +- Keep SKILL.md under 500 lines +- Split detailed content into reference files +- Keep references one level deep from SKILL.md +- Link to references from relevant sections +- Use descriptive reference file names + +See [skill-structure.md](skill-structure.md) for progressive disclosure patterns. + + + + + +Validation scripts are force multipliers. They catch errors that Claude might miss and provide actionable feedback. + + + +Good validation scripts: +- Provide verbose, specific error messages +- Show available valid options when something is invalid +- Pinpoint exact location of problems +- Suggest actionable fixes +- Are deterministic and reliable + +See [workflows-and-validation.md](workflows-and-validation.md) for validation patterns. + + + + + +Use pure XML structure for consistency, parseability, and Claude performance. Required tags: objective, quick_start, success_criteria. + + + +Only add context Claude doesn't have. Assume Claude is smart. Challenge every piece of content. + + + +Match specificity to fragility. High freedom for creative tasks, low freedom for fragile operations, medium for standard work. + + + +Test with all target models. Balance detail level to work across Haiku, Sonnet, and Opus. + + + +Keep SKILL.md concise. Split details into reference files. Load reference files only when needed. + + + +Make validation scripts verbose and specific. Catch errors early with actionable feedback. + + diff --git a/.agents/skills/create-agent-skills/references/executable-code.md b/.agents/skills/create-agent-skills/references/executable-code.md new file mode 100644 index 000000000..4c9273a4b --- /dev/null +++ b/.agents/skills/create-agent-skills/references/executable-code.md @@ -0,0 +1,175 @@ + +Even if Claude could write a script, pre-made scripts offer advantages: +- More reliable than generated code +- Save tokens (no need to include code in context) +- Save time (no code generation required) +- Ensure consistency across uses + + +Make clear whether Claude should: +- **Execute the script** (most common): "Run `analyze_form.py` to extract fields" +- **Read it as reference** (for complex logic): "See `analyze_form.py` for the extraction algorithm" + +For most utility scripts, execution is preferred. + + + +When Claude executes a script via bash: +1. Script code never enters context window +2. Only script output consumes tokens +3. Far more efficient than having Claude generate equivalent code + + + + + +**Best practice**: Place all executable scripts in a `scripts/` subdirectory within the skill folder. + +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md +โ”œโ”€โ”€ scripts/ +โ”‚ โ”œโ”€โ”€ main_utility.py +โ”‚ โ”œโ”€โ”€ helper_script.py +โ”‚ โ””โ”€โ”€ validator.py +โ””โ”€โ”€ references/ + โ””โ”€โ”€ api-docs.md +``` + +**Benefits**: +- Keeps skill root clean and organized +- Clear separation between documentation and executable code +- Consistent pattern across all skills +- Easy to reference: `python scripts/script_name.py` + +**Reference pattern**: In SKILL.md, reference scripts using the `scripts/` path: + +```bash +python ~/.claude/skills/skill-name/scripts/analyze.py input.har +``` + + + + + +## Utility scripts + +**analyze_form.py**: Extract all form fields from PDF + +```bash +python scripts/analyze_form.py input.pdf > fields.json +``` + +Output format: +```json +{ + "field_name": { "type": "text", "x": 100, "y": 200 }, + "signature": { "type": "sig", "x": 150, "y": 500 } +} +``` + +**validate_boxes.py**: Check for overlapping bounding boxes + +```bash +python scripts/validate_boxes.py fields.json +# Returns: "OK" or lists conflicts +``` + +**fill_form.py**: Apply field values to PDF + +```bash +python scripts/fill_form.py input.pdf fields.json output.pdf +``` + + + + +Handle error conditions rather than punting to Claude. + + +```python +def process_file(path): + """Process a file, creating it if it doesn't exist.""" + try: + with open(path) as f: + return f.read() + except FileNotFoundError: + print(f"File {path} not found, creating default") + with open(path, 'w') as f: + f.write('') + return '' + except PermissionError: + print(f"Cannot access {path}, using default") + return '' +``` + + + +```python +def process_file(path): + # Just fail and let Claude figure it out + return open(path).read() +``` + + + +Document configuration parameters to avoid "voodoo constants": + + +```python +# HTTP requests typically complete within 30 seconds +REQUEST_TIMEOUT = 30 + +# Three retries balances reliability vs speed +MAX_RETRIES = 3 +``` + + + +```python +TIMEOUT = 47 # Why 47? +RETRIES = 5 # Why 5? +``` + + + + + + +Skills run in code execution environment with platform-specific limitations: +- **claude.ai**: Can install packages from npm and PyPI +- **Anthropic API**: No network access and no runtime package installation + + + +List required packages in your SKILL.md and verify they're available. + + +Install required package: `pip install pypdf` + +Then use it: + +```python +from pypdf import PdfReader +reader = PdfReader("file.pdf") +``` + + + +"Use the pdf library to process the file." + + + + + +If your Skill uses MCP (Model Context Protocol) tools, always use fully qualified tool names. + +ServerName:tool_name + + +- Use the BigQuery:bigquery_schema tool to retrieve table schemas. +- Use the GitHub:create_issue tool to create issues. + + +Without the server prefix, Claude may fail to locate the tool, especially when multiple MCP servers are available. + diff --git a/.agents/skills/create-agent-skills/references/iteration-and-testing.md b/.agents/skills/create-agent-skills/references/iteration-and-testing.md new file mode 100644 index 000000000..5d41d53b1 --- /dev/null +++ b/.agents/skills/create-agent-skills/references/iteration-and-testing.md @@ -0,0 +1,474 @@ + +Skills improve through iteration and testing. This reference covers evaluation-driven development, Claude A/B testing patterns, and XML structure validation during testing. + + + + +Create evaluations BEFORE writing extensive documentation. This ensures your skill solves real problems rather than documenting imagined ones. + + + + +**Identify gaps**: Run Claude on representative tasks without a skill. Document specific failures or missing context. + + + +**Create evaluations**: Build three scenarios that test these gaps. + + + +**Establish baseline**: Measure Claude's performance without the skill. + + + +**Write minimal instructions**: Create just enough content to address the gaps and pass evaluations. + + + +**Iterate**: Execute evaluations, compare against baseline, and refine. + + + + +```json +{ + "skills": ["pdf-processing"], + "query": "Extract all text from this PDF file and save it to output.txt", + "files": ["test-files/document.pdf"], + "expected_behavior": [ + "Successfully reads the PDF file using appropriate library", + "Extracts text content from all pages without missing any", + "Saves extracted text to output.txt in clear, readable format" + ] +} +``` + + + +- Prevents documenting imagined problems +- Forces clarity about what success looks like +- Provides objective measurement of skill effectiveness +- Keeps skill focused on actual needs +- Enables quantitative improvement tracking + + + + + +The most effective skill development uses Claude itself. Work with "Claude A" (expert who helps refine) to create skills used by "Claude B" (agent executing tasks). + + + + + +**Complete task without skill**: Work through problem with Claude A, noting what context you repeatedly provide. + + + +**Ask Claude A to create skill**: "Create a skill that captures this pattern we just used" + + + +**Review for conciseness**: Remove unnecessary explanations. + + + +**Improve architecture**: Organize content with progressive disclosure. + + + +**Test with Claude B**: Use fresh instance to test on real tasks. + + + +**Iterate based on observation**: Return to Claude A with specific issues observed. + + + + +Claude models understand skill format natively. Simply ask Claude to create a skill and it will generate properly structured SKILL.md content. + + + + + + +**Use skill in real workflows**: Give Claude B actual tasks. + + + +**Observe behavior**: Where does it struggle, succeed, or make unexpected choices? + + + +**Return to Claude A**: Share observations and current SKILL.md. + + + +**Review suggestions**: Claude A might suggest reorganization, stronger language, or workflow restructuring. + + + +**Apply and test**: Update skill and test again. + + + +**Repeat**: Continue based on real usage, not assumptions. + + + + +- **Unexpected exploration paths**: Structure might not be intuitive +- **Missed connections**: Links might need to be more explicit +- **Overreliance on sections**: Consider moving frequently-read content to main SKILL.md +- **Ignored content**: Poorly signaled or unnecessary files +- **Critical metadata**: The name and description in your skill's metadata are critical for discovery + + + + + + +Test with all models you plan to use. Different models have different strengths and need different levels of detail. + + + +**Claude Haiku** (fast, economical) + +Questions to ask: +- Does the skill provide enough guidance? +- Are examples clear and complete? +- Do implicit assumptions become explicit? +- Does Haiku need more structure? + +Haiku benefits from: +- More explicit instructions +- Complete examples (no partial code) +- Clear success criteria +- Step-by-step workflows + + + +**Claude Sonnet** (balanced) + +Questions to ask: +- Is the skill clear and efficient? +- Does it avoid over-explanation? +- Are workflows well-structured? +- Does progressive disclosure work? + +Sonnet benefits from: +- Balanced detail level +- XML structure for clarity +- Progressive disclosure +- Concise but complete guidance + + + +**Claude Opus** (powerful reasoning) + +Questions to ask: +- Does the skill avoid over-explaining? +- Can Opus infer obvious steps? +- Are constraints clear? +- Is context minimal but sufficient? + +Opus benefits from: +- Concise instructions +- Principles over procedures +- High degrees of freedom +- Trust in reasoning capabilities + + + +What works for Opus might need more detail for Haiku. Aim for instructions that work well across all target models. Find the balance that serves your target audience. + +See [core-principles.md](core-principles.md) for model testing examples. + + + + + +During testing, validate that your skill's XML structure is correct and complete. + + + +After updating a skill, verify: + + +- โœ… `` tag exists and defines what skill does +- โœ… `` tag exists with immediate guidance +- โœ… `` or `` tag exists + + + +- โœ… No `#`, `##`, or `###` headings in skill body +- โœ… All sections use XML tags instead +- โœ… Markdown formatting within tags is preserved (bold, italic, lists, code blocks) + + + +- โœ… All XML tags properly closed +- โœ… Nested tags have correct hierarchy +- โœ… No unclosed tags + + + +- โœ… Conditional tags match skill complexity +- โœ… Simple skills use required tags only +- โœ… Complex skills add appropriate conditional tags +- โœ… No over-engineering or under-specifying + + + +- โœ… Reference files also use pure XML structure +- โœ… Links to reference files are correct +- โœ… References are one level deep from SKILL.md + + + + +When iterating on a skill: + +1. Make changes to XML structure +2. **Validate XML structure** (check tags, nesting, completeness) +3. Test with Claude on representative tasks +4. Observe if XML structure aids or hinders Claude's understanding +5. Iterate structure based on actual performance + + + + + +Iterate based on what you observe, not what you assume. Real usage reveals issues assumptions miss. + + + + +Which sections does Claude actually read? Which are ignored? This reveals: +- Relevance of content +- Effectiveness of progressive disclosure +- Whether section names are clear + + + +Which tasks cause confusion or errors? This reveals: +- Missing context +- Unclear instructions +- Insufficient examples +- Ambiguous requirements + + + +Which tasks go smoothly? This reveals: +- Effective patterns +- Good examples +- Clear instructions +- Appropriate detail level + + + +What does Claude do that surprises you? This reveals: +- Unstated assumptions +- Ambiguous phrasing +- Missing constraints +- Alternative interpretations + + + + +1. **Observe**: Run Claude on real tasks with current skill +2. **Document**: Note specific issues, not general feelings +3. **Hypothesize**: Why did this issue occur? +4. **Fix**: Make targeted changes to address specific issues +5. **Test**: Verify fix works on same scenario +6. **Validate**: Ensure fix doesn't break other scenarios +7. **Repeat**: Continue with next observed issue + + + + + +Skills don't need to be perfect initially. Start minimal, observe usage, add what's missing. + + + +Start with: +- Valid YAML frontmatter +- Required XML tags: objective, quick_start, success_criteria +- Minimal working example +- Basic success criteria + +Skip initially: +- Extensive examples +- Edge case documentation +- Advanced features +- Detailed reference files + + + +Add through iteration: +- Examples when patterns aren't clear from description +- Edge cases when observed in real usage +- Advanced features when users need them +- Reference files when SKILL.md approaches 500 lines +- Validation scripts when errors are common + + + +- Faster to initial working version +- Additions solve real needs, not imagined ones +- Keeps skills focused and concise +- Progressive disclosure emerges naturally +- Documentation stays aligned with actual usage + + + + + +Test that Claude can discover and use your skill when appropriate. + + + + +Test if Claude loads your skill when it should: + +1. Start fresh conversation (Claude B) +2. Ask question that should trigger skill +3. Check if skill was loaded +4. Verify skill was used appropriately + + + +If skill isn't discovered: +- Check description includes trigger keywords +- Verify description is specific, not vague +- Ensure description explains when to use skill +- Test with different phrasings of the same request + +The description is Claude's primary discovery mechanism. + + + + + + +**Observation**: Skill works but uses lots of tokens + +**Fix**: +- Remove obvious explanations +- Assume Claude knows common concepts +- Use examples instead of lengthy descriptions +- Move advanced content to reference files + + + +**Observation**: Claude makes incorrect assumptions or misses steps + +**Fix**: +- Add explicit instructions where assumptions fail +- Provide complete working examples +- Define edge cases +- Add validation steps + + + +**Observation**: Skill exists but Claude doesn't load it when needed + +**Fix**: +- Improve description with specific triggers +- Add relevant keywords +- Test description against actual user queries +- Make description more specific about use cases + + + +**Observation**: Claude reads wrong sections or misses relevant content + +**Fix**: +- Use clearer XML tag names +- Reorganize content hierarchy +- Move frequently-needed content earlier +- Add explicit links to relevant sections + + + +**Observation**: Claude produces outputs that don't match expected pattern + +**Fix**: +- Add more examples showing pattern +- Make examples more complete +- Show edge cases in examples +- Add anti-pattern examples (what not to do) + + + + + +Small, frequent iterations beat large, infrequent rewrites. + + + +**Good approach**: +1. Make one targeted change +2. Test on specific scenario +3. Verify improvement +4. Commit change +5. Move to next issue + +Total time: Minutes per iteration +Iterations per day: 10-20 +Learning rate: High + + + +**Problematic approach**: +1. Accumulate many issues +2. Make large refactor +3. Test everything at once +4. Debug multiple issues simultaneously +5. Hard to know what fixed what + +Total time: Hours per iteration +Iterations per day: 1-2 +Learning rate: Low + + + +- Isolate cause and effect +- Build pattern recognition faster +- Less wasted work from wrong directions +- Easier to revert if needed +- Maintains momentum + + + + + +Define how you'll measure if the skill is working. Quantify success. + + + +- **Success rate**: Percentage of tasks completed correctly +- **Token usage**: Average tokens consumed per task +- **Iteration count**: How many tries to get correct output +- **Error rate**: Percentage of tasks with errors +- **Discovery rate**: How often skill loads when it should + + + +- **Output quality**: Does output meet requirements? +- **Appropriate detail**: Too verbose or too minimal? +- **Claude confidence**: Does Claude seem uncertain? +- **User satisfaction**: Does skill solve the actual problem? + + + +Compare metrics before and after changes: +- Baseline: Measure without skill +- Initial: Measure with first version +- Iteration N: Measure after each change + +Track which changes improve which metrics. Double down on effective patterns. + + diff --git a/.agents/skills/create-agent-skills/references/recommended-structure.md b/.agents/skills/create-agent-skills/references/recommended-structure.md new file mode 100644 index 000000000..d39a1d6a9 --- /dev/null +++ b/.agents/skills/create-agent-skills/references/recommended-structure.md @@ -0,0 +1,168 @@ +# Recommended Skill Structure + +The optimal structure for complex skills separates routing, workflows, and knowledge. + + +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md # Router + essential principles (unavoidable) +โ”œโ”€โ”€ workflows/ # Step-by-step procedures (how) +โ”‚ โ”œโ”€โ”€ workflow-a.md +โ”‚ โ”œโ”€โ”€ workflow-b.md +โ”‚ โ””โ”€โ”€ ... +โ””โ”€โ”€ references/ # Domain knowledge (what) + โ”œโ”€โ”€ reference-a.md + โ”œโ”€โ”€ reference-b.md + โ””โ”€โ”€ ... +``` + + + +## Problems This Solves + +**Problem 1: Context gets skipped** +When important principles are in a separate file, Claude may not read them. +**Solution:** Put essential principles directly in SKILL.md. They load automatically. + +**Problem 2: Wrong context loaded** +A "build" task loads debugging references. A "debug" task loads build references. +**Solution:** Intake question determines intent โ†’ routes to specific workflow โ†’ workflow specifies which references to read. + +**Problem 3: Monolithic skills are overwhelming** +500+ lines of mixed content makes it hard to find relevant parts. +**Solution:** Small router (SKILL.md) + focused workflows + reference library. + +**Problem 4: Procedures mixed with knowledge** +"How to do X" mixed with "What X means" creates confusion. +**Solution:** Workflows are procedures (steps). References are knowledge (patterns, examples). + + + +## SKILL.md Template + +```markdown +--- +name: skill-name +description: What it does and when to use it. +--- + + +## How This Skill Works + +[Inline principles that apply to ALL workflows. Cannot be skipped.] + +### Principle 1: [Name] +[Brief explanation] + +### Principle 2: [Name] +[Brief explanation] + + + +**Ask the user:** + +What would you like to do? +1. [Option A] +2. [Option B] +3. [Option C] +4. Something else + +**Wait for response before proceeding.** + + + +| Response | Workflow | +|----------|----------| +| 1, "keyword", "keyword" | `workflows/option-a.md` | +| 2, "keyword", "keyword" | `workflows/option-b.md` | +| 3, "keyword", "keyword" | `workflows/option-c.md` | +| 4, other | Clarify, then select | + +**After reading the workflow, follow it exactly.** + + + +All domain knowledge in `references/`: + +**Category A:** file-a.md, file-b.md +**Category B:** file-c.md, file-d.md + + + +| Workflow | Purpose | +|----------|---------| +| option-a.md | [What it does] | +| option-b.md | [What it does] | +| option-c.md | [What it does] | + +``` + + + +## Workflow Template + +```markdown +# Workflow: [Name] + + +**Read these reference files NOW:** +1. references/relevant-file.md +2. references/another-file.md + + + +## Step 1: [Name] +[What to do] + +## Step 2: [Name] +[What to do] + +## Step 3: [Name] +[What to do] + + + +This workflow is complete when: +- [ ] Criterion 1 +- [ ] Criterion 2 +- [ ] Criterion 3 + +``` + + + +## When to Use This Pattern + +**Use router + workflows + references when:** +- Multiple distinct workflows (build vs debug vs ship) +- Different workflows need different references +- Essential principles must not be skipped +- Skill has grown beyond 200 lines + +**Use simple single-file skill when:** +- One workflow +- Small reference set +- Under 200 lines total +- No essential principles to enforce + + + +## The Key Insight + +**SKILL.md is always loaded. Use this guarantee.** + +Put unavoidable content in SKILL.md: +- Essential principles +- Intake question +- Routing logic + +Put workflow-specific content in workflows/: +- Step-by-step procedures +- Required references for that workflow +- Success criteria for that workflow + +Put reusable knowledge in references/: +- Patterns and examples +- Technical details +- Domain expertise + diff --git a/.agents/skills/create-agent-skills/references/skill-structure.md b/.agents/skills/create-agent-skills/references/skill-structure.md new file mode 100644 index 000000000..3349d3b54 --- /dev/null +++ b/.agents/skills/create-agent-skills/references/skill-structure.md @@ -0,0 +1,372 @@ + +Skills have three structural components: YAML frontmatter (metadata), pure XML body structure (content organization), and progressive disclosure (file organization). This reference defines requirements and best practices for each component. + + + + +**Remove ALL markdown headings (#, ##, ###) from skill body content.** Replace with semantic XML tags. Keep markdown formatting WITHIN content (bold, italic, lists, code blocks, links). + + + +Every skill MUST have these three tags: + +- **``** - What the skill does and why it matters (1-3 paragraphs) +- **``** - Immediate, actionable guidance (minimal working example) +- **``** or **``** - How to know it worked + + + +Add based on skill complexity and domain requirements: + +- **``** - Background/situational information +- **`` or ``** - Step-by-step procedures +- **``** - Deep-dive topics (progressive disclosure) +- **``** - How to verify outputs +- **``** - Multi-shot learning +- **``** - Common mistakes to avoid +- **``** - Non-negotiable security patterns +- **``** - Testing workflows +- **``** - Code examples and recipes +- **`` or ``** - Links to reference files + +See [use-xml-tags.md](use-xml-tags.md) for detailed guidance on each tag. + + + +**Simple skills** (single domain, straightforward): +- Required tags only +- Example: Text extraction, file format conversion + +**Medium skills** (multiple patterns, some complexity): +- Required tags + workflow/examples as needed +- Example: Document processing with steps, API integration + +**Complex skills** (multiple domains, security, APIs): +- Required tags + conditional tags as appropriate +- Example: Payment processing, authentication systems, multi-step workflows + + + +Properly nest XML tags for hierarchical content: + +```xml + + +User input +Expected output + + +``` + +Always close tags: +```xml + +Content here + +``` + + + +Use descriptive, semantic names: +- `` not `` +- `` not `` +- `` not `` + +Be consistent within your skill. If you use ``, don't also use `` for the same purpose (unless they serve different roles). + + + + + +```yaml +--- +name: skill-name-here +description: What it does and when to use it (third person, specific triggers) +--- +``` + + + +**Validation rules**: +- Maximum 64 characters +- Lowercase letters, numbers, hyphens only +- No XML tags +- No reserved words: "anthropic", "claude" +- Must match directory name exactly + +**Examples**: +- โœ… `process-pdfs` +- โœ… `manage-facebook-ads` +- โœ… `setup-stripe-payments` +- โŒ `PDF_Processor` (uppercase) +- โŒ `helper` (vague) +- โŒ `claude-helper` (reserved word) + + + +**Validation rules**: +- Non-empty, maximum 1024 characters +- No XML tags +- Third person (never first or second person) +- Include what it does AND when to use it + +**Critical rule**: Always write in third person. +- โœ… "Processes Excel files and generates reports" +- โŒ "I can help you process Excel files" +- โŒ "You can use this to process Excel files" + +**Structure**: Include both capabilities and triggers. + +**Effective examples**: +```yaml +description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction. +``` + +```yaml +description: Analyze Excel spreadsheets, create pivot tables, generate charts. Use when analyzing Excel files, spreadsheets, tabular data, or .xlsx files. +``` + +```yaml +description: Generate descriptive commit messages by analyzing git diffs. Use when the user asks for help writing commit messages or reviewing staged changes. +``` + +**Avoid**: +```yaml +description: Helps with documents +``` + +```yaml +description: Processes data +``` + + + + +Use **verb-noun convention** for skill names: + + +Building/authoring tools + +Examples: `create-agent-skills`, `create-hooks`, `create-landing-pages` + + + +Managing external services or resources + +Examples: `manage-facebook-ads`, `manage-zoom`, `manage-stripe`, `manage-supabase` + + + +Configuration/integration tasks + +Examples: `setup-stripe-payments`, `setup-meta-tracking` + + + +Generation tasks + +Examples: `generate-ai-images` + + + +- Vague: `helper`, `utils`, `tools` +- Generic: `documents`, `data`, `files` +- Reserved words: `anthropic-helper`, `claude-tools` +- Inconsistent: Directory `facebook-ads` but name `facebook-ads-manager` + + + + + +SKILL.md serves as an overview that points to detailed materials as needed. This keeps context window usage efficient. + + + +- Keep SKILL.md body under 500 lines +- Split content into separate files when approaching this limit +- Keep references one level deep from SKILL.md +- Add table of contents to reference files over 100 lines + + + +Quick start in SKILL.md, details in reference files: + +```markdown +--- +name: pdf-processing +description: Extracts text and tables from PDF files, fills forms, and merges documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction. +--- + + +Extract text and tables from PDF files, fill forms, and merge documents using Python libraries. + + + +Extract text with pdfplumber: + +```python +import pdfplumber +with pdfplumber.open("file.pdf") as pdf: + text = pdf.pages[0].extract_text() +``` + + + +**Form filling**: See [forms.md](forms.md) +**API reference**: See [reference.md](reference.md) + +``` + +Claude loads forms.md or reference.md only when needed. + + + +For skills with multiple domains, organize by domain to avoid loading irrelevant context: + +``` +bigquery-skill/ +โ”œโ”€โ”€ SKILL.md (overview and navigation) +โ””โ”€โ”€ reference/ + โ”œโ”€โ”€ finance.md (revenue, billing metrics) + โ”œโ”€โ”€ sales.md (opportunities, pipeline) + โ”œโ”€โ”€ product.md (API usage, features) + โ””โ”€โ”€ marketing.md (campaigns, attribution) +``` + +When user asks about revenue, Claude reads only finance.md. Other files stay on filesystem consuming zero tokens. + + + +Show basic content in SKILL.md, link to advanced in reference files: + +```xml + +Process DOCX files with creation and editing capabilities. + + + + +Use docx-js for new documents. See [docx-js.md](docx-js.md). + + + +For simple edits, modify XML directly. + +**For tracked changes**: See [redlining.md](redlining.md) +**For OOXML details**: See [ooxml.md](ooxml.md) + + +``` + +Claude reads redlining.md or ooxml.md only when the user needs those features. + + + +**Keep references one level deep**: All reference files should link directly from SKILL.md. Avoid nested references (SKILL.md โ†’ advanced.md โ†’ details.md) as Claude may only partially read deeply nested files. + +**Add table of contents to long files**: For reference files over 100 lines, include a table of contents at the top. + +**Use pure XML in reference files**: Reference files should also use pure XML structure (no markdown headings in body). + + + + + +Claude navigates your skill directory using bash commands: + +- Use forward slashes: `reference/guide.md` (not `reference\guide.md`) +- Name files descriptively: `form_validation_rules.md` (not `doc2.md`) +- Organize by domain: `reference/finance.md`, `reference/sales.md` + + + +Typical skill structure: + +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md (main entry point, pure XML structure) +โ”œโ”€โ”€ references/ (optional, for progressive disclosure) +โ”‚ โ”œโ”€โ”€ guide-1.md (pure XML structure) +โ”‚ โ”œโ”€โ”€ guide-2.md (pure XML structure) +โ”‚ โ””โ”€โ”€ examples.md (pure XML structure) +โ””โ”€โ”€ scripts/ (optional, for utility scripts) + โ”œโ”€โ”€ validate.py + โ””โ”€โ”€ process.py +``` + + + + + +โŒ Do NOT use markdown headings in skill body: + +```markdown +# PDF Processing + +## Quick start +Extract text... + +## Advanced features +Form filling... +``` + +โœ… Use pure XML structure: + +```xml + +PDF processing with text extraction, form filling, and merging. + + + +Extract text... + + + +Form filling... + +``` + + + +- โŒ "Helps with documents" +- โœ… "Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction." + + + +- โŒ "I can help you process Excel files" +- โœ… "Processes Excel files and generates reports" + + + +- โŒ Directory: `facebook-ads`, Name: `facebook-ads-manager` +- โœ… Directory: `manage-facebook-ads`, Name: `manage-facebook-ads` +- โŒ Directory: `stripe-integration`, Name: `stripe` +- โœ… Directory: `setup-stripe-payments`, Name: `setup-stripe-payments` + + + +Keep references one level deep from SKILL.md. Claude may only partially read nested files (SKILL.md โ†’ advanced.md โ†’ details.md). + + + +Always use forward slashes: `scripts/helper.py` (not `scripts\helper.py`) + + + +Every skill must have: ``, ``, and `` (or ``). + + + + +Before finalizing a skill, verify: + +- โœ… YAML frontmatter valid (name matches directory, description in third person) +- โœ… No markdown headings in body (pure XML structure) +- โœ… Required tags present: objective, quick_start, success_criteria +- โœ… Conditional tags appropriate for complexity level +- โœ… All XML tags properly closed +- โœ… Progressive disclosure applied (SKILL.md < 500 lines) +- โœ… Reference files use pure XML structure +- โœ… File paths use forward slashes +- โœ… Descriptive file names + diff --git a/.agents/skills/create-agent-skills/references/use-xml-tags.md b/.agents/skills/create-agent-skills/references/use-xml-tags.md new file mode 100644 index 000000000..3b585cf41 --- /dev/null +++ b/.agents/skills/create-agent-skills/references/use-xml-tags.md @@ -0,0 +1,466 @@ + +Skills use pure XML structure for consistent parsing, efficient token usage, and improved Claude performance. This reference defines the required and conditional XML tags for skill authoring, along with intelligence rules for tag selection. + + + +**Remove ALL markdown headings (#, ##, ###) from skill body content.** Replace with semantic XML tags. Keep markdown formatting WITHIN content (bold, italic, lists, code blocks, links). + + + +Every skill MUST have these three tags: + + +**Purpose**: What the skill does and why it matters. Sets context and scope. + +**Content**: 1-3 paragraphs explaining the skill's purpose, domain, and value proposition. + +**Example**: +```xml + +Extract text and tables from PDF files, fill forms, and merge documents using Python libraries. This skill provides patterns for common PDF operations without requiring external services or APIs. + +``` + + + +**Purpose**: Immediate, actionable guidance. Gets Claude started quickly without reading advanced sections. + +**Content**: Minimal working example, essential commands, or basic usage pattern. + +**Example**: +```xml + +Extract text with pdfplumber: + +```python +import pdfplumber +with pdfplumber.open("file.pdf") as pdf: + text = pdf.pages[0].extract_text() +``` + +``` + + + +**Purpose**: How to know the task worked. Defines completion criteria. + +**Alternative name**: `` (use whichever fits better) + +**Content**: Clear criteria for successful execution, validation steps, or expected outputs. + +**Example**: +```xml + +A well-structured skill has: + +- Valid YAML frontmatter with descriptive name and description +- Pure XML structure with no markdown headings in body +- Required tags: objective, quick_start, success_criteria +- Progressive disclosure (SKILL.md < 500 lines, details in reference files) +- Real-world testing and iteration based on observed behavior + +``` + + + + +Add these tags based on skill complexity and domain requirements: + + +**When to use**: Background or situational information that Claude needs before starting. + +**Example**: +```xml + +The Facebook Marketing API uses a hierarchy: Account โ†’ Campaign โ†’ Ad Set โ†’ Ad. Each level has different configuration options and requires specific permissions. Always verify API access before making changes. + +``` + + + +**When to use**: Step-by-step procedures, sequential operations, multi-step processes. + +**Alternative name**: `` + +**Example**: +```xml + +1. **Analyze the form**: Run analyze_form.py to extract field definitions +2. **Create field mapping**: Edit fields.json with values +3. **Validate mapping**: Run validate_fields.py +4. **Fill the form**: Run fill_form.py +5. **Verify output**: Check generated PDF + +``` + + + +**When to use**: Deep-dive topics that most users won't need (progressive disclosure). + +**Example**: +```xml + +**Custom styling**: See [styling.md](styling.md) +**Template inheritance**: See [templates.md](templates.md) +**API reference**: See [reference.md](reference.md) + +``` + + + +**When to use**: Skills with verification steps, quality checks, or validation scripts. + +**Example**: +```xml + +After making changes, validate immediately: + +```bash +python scripts/validate.py output_dir/ +``` + +Only proceed when validation passes. If errors occur, review and fix before continuing. + +``` + + + +**When to use**: Multi-shot learning, input/output pairs, demonstrating patterns. + +**Example**: +```xml + + +User clicked signup button +track('signup_initiated', { source: 'homepage' }) + + + +Purchase completed +track('purchase', { value: 49.99, currency: 'USD' }) + + +``` + + + +**When to use**: Common mistakes that Claude should avoid. + +**Example**: +```xml + + +- โŒ "Helps with documents" +- โœ… "Extract text and tables from PDF files" + + + +- โŒ "You can use pypdf, or pdfplumber, or PyMuPDF..." +- โœ… "Use pdfplumber for text extraction. For OCR, use pytesseract instead." + + +``` + + + +**When to use**: Skills with security implications (API keys, payments, authentication). + +**Example**: +```xml + +- Never log API keys or tokens +- Always use environment variables for credentials +- Validate all user input before API calls +- Use HTTPS for all external requests +- Check API response status before proceeding + +``` + + + +**When to use**: Testing workflows, test patterns, or validation steps. + +**Example**: +```xml + +Test with all target models (Haiku, Sonnet, Opus): + +1. Run skill on representative tasks +2. Observe where Claude struggles or succeeds +3. Iterate based on actual behavior +4. Validate XML structure after changes + +``` + + + +**When to use**: Code examples, recipes, or reusable patterns. + +**Example**: +```xml + + +```python +try: + result = process_file(path) +except FileNotFoundError: + print(f"File not found: {path}") +except Exception as e: + print(f"Error: {e}") +``` + + +``` + + + +**When to use**: Links to detailed reference files (progressive disclosure). + +**Alternative name**: `` + +**Example**: +```xml + +For deeper topics, see reference files: + +**API operations**: [references/api-operations.md](references/api-operations.md) +**Security patterns**: [references/security.md](references/security.md) +**Troubleshooting**: [references/troubleshooting.md](references/troubleshooting.md) + +``` + + + + + +**Simple skills** (single domain, straightforward): +- Required tags only: objective, quick_start, success_criteria +- Example: Text extraction, file format conversion, simple calculations + +**Medium skills** (multiple patterns, some complexity): +- Required tags + workflow/examples as needed +- Example: Document processing with steps, API integration with configuration + +**Complex skills** (multiple domains, security, APIs): +- Required tags + conditional tags as appropriate +- Example: Payment processing, authentication systems, multi-step workflows with validation + + + +Don't over-engineer simple skills. Don't under-specify complex skills. Match tag selection to actual complexity and user needs. + + + +Ask these questions: + +- **Context needed?** โ†’ Add `` +- **Multi-step process?** โ†’ Add `` or `` +- **Advanced topics to hide?** โ†’ Add `` + reference files +- **Validation required?** โ†’ Add `` +- **Pattern demonstration?** โ†’ Add `` +- **Common mistakes?** โ†’ Add `` +- **Security concerns?** โ†’ Add `` +- **Testing guidance?** โ†’ Add `` +- **Code recipes?** โ†’ Add `` +- **Deep references?** โ†’ Add `` + + + + + +XML tags are more efficient than markdown headings: + +**Markdown headings**: +```markdown +## Quick start +## Workflow +## Advanced features +## Success criteria +``` +Total: ~20 tokens, no semantic meaning to Claude + +**XML tags**: +```xml + + + + +``` +Total: ~15 tokens, semantic meaning built-in + + + +XML provides unambiguous boundaries and semantic meaning. Claude can reliably: +- Identify section boundaries +- Understand content purpose +- Skip irrelevant sections +- Parse programmatically + +Markdown headings are just visual formatting. Claude must infer meaning from heading text. + + + +XML enforces consistent structure across all skills. All skills use the same tag names for the same purposes. Makes it easier to: +- Validate skill structure programmatically +- Learn patterns across skills +- Maintain consistent quality + + + + + +XML tags can nest for hierarchical content: + +```xml + + +User input here +Expected output here + + + +Another input +Another output + + +``` + + + +Always close tags properly: + +โœ… Good: +```xml + +Content here + +``` + +โŒ Bad: +```xml + +Content here +``` + + + +Use descriptive, semantic names: +- `` not `` +- `` not `` +- `` not `` + +Be consistent within your skill. If you use ``, don't also use `` for the same purpose. + + + + +**DO NOT use markdown headings in skill body content.** + +โŒ Bad (hybrid approach): +```markdown +# PDF Processing + +## Quick start + +Extract text with pdfplumber... + +## Advanced features + +Form filling... +``` + +โœ… Good (pure XML): +```markdown + +PDF processing with text extraction, form filling, and merging. + + + +Extract text with pdfplumber... + + + +Form filling... + +``` + + + + +Clearly separate different sections with unambiguous boundaries + + + +Reduce parsing errors. Claude knows exactly where sections begin and end. + + + +Easily find, add, remove, or modify sections without rewriting + + + +Programmatically extract specific sections for validation or analysis + + + +Lower token usage compared to markdown headings + + + +Standardized structure across all skills in the ecosystem + + + + +XML tags work well with other prompting techniques: + +**Multi-shot learning**: +```xml + +... +... + +``` + +**Chain of thought**: +```xml + +Analyze the problem... + + + +Based on the analysis... + +``` + +**Template provision**: +```xml + +``` + +**Reference material**: +```xml + +{ + "field": "type" +} + +``` + + + +When referencing content in tags, use the tag name: + +"Using the schema in `` tags..." +"Follow the workflow in ``..." +"See examples in ``..." + +This makes the structure self-documenting. + diff --git a/.agents/skills/create-agent-skills/references/using-scripts.md b/.agents/skills/create-agent-skills/references/using-scripts.md new file mode 100644 index 000000000..5d8747c2b --- /dev/null +++ b/.agents/skills/create-agent-skills/references/using-scripts.md @@ -0,0 +1,113 @@ +# Using Scripts in Skills + + +Scripts are executable code that Claude runs as-is rather than regenerating each time. They ensure reliable, error-free execution of repeated operations. + + + +Use scripts when: +- The same code runs across multiple skill invocations +- Operations are error-prone when rewritten from scratch +- Complex shell commands or API interactions are involved +- Consistency matters more than flexibility + +Common script types: +- **Deployment** - Deploy to Vercel, publish packages, push releases +- **Setup** - Initialize projects, install dependencies, configure environments +- **API calls** - Authenticated requests, webhook handlers, data fetches +- **Data processing** - Transform files, batch operations, migrations +- **Build processes** - Compile, bundle, test runners + + + +Scripts live in `scripts/` within the skill directory: + +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md +โ”œโ”€โ”€ workflows/ +โ”œโ”€โ”€ references/ +โ”œโ”€โ”€ templates/ +โ””โ”€โ”€ scripts/ + โ”œโ”€โ”€ deploy.sh + โ”œโ”€โ”€ setup.py + โ””โ”€โ”€ fetch-data.ts +``` + +A well-structured script includes: +1. Clear purpose comment at top +2. Input validation +3. Error handling +4. Idempotent operations where possible +5. Clear output/feedback + + + +```bash +#!/bin/bash +# deploy.sh - Deploy project to Vercel +# Usage: ./deploy.sh [environment] +# Environments: preview (default), production + +set -euo pipefail + +ENVIRONMENT="${1:-preview}" + +# Validate environment +if [[ "$ENVIRONMENT" != "preview" && "$ENVIRONMENT" != "production" ]]; then + echo "Error: Environment must be 'preview' or 'production'" + exit 1 +fi + +echo "Deploying to $ENVIRONMENT..." + +if [[ "$ENVIRONMENT" == "production" ]]; then + vercel --prod +else + vercel +fi + +echo "Deployment complete." +``` + + + +Workflows reference scripts like this: + +```xml + +## Step 5: Deploy + +1. Ensure all tests pass +2. Run `scripts/deploy.sh production` +3. Verify deployment succeeded +4. Update user with deployment URL + +``` + +The workflow tells Claude WHEN to run the script. The script handles HOW the operation executes. + + + +**Do:** +- Make scripts idempotent (safe to run multiple times) +- Include clear usage comments +- Validate inputs before executing +- Provide meaningful error messages +- Use `set -euo pipefail` in bash scripts + +**Don't:** +- Hardcode secrets or credentials (use environment variables) +- Create scripts for one-off operations +- Skip error handling +- Make scripts do too many unrelated things +- Forget to make scripts executable (`chmod +x`) + + + +- Never embed API keys, tokens, or secrets in scripts +- Use environment variables for sensitive configuration +- Validate and sanitize any user-provided inputs +- Be cautious with scripts that delete or modify data +- Consider adding `--dry-run` options for destructive operations + diff --git a/.agents/skills/create-agent-skills/references/using-templates.md b/.agents/skills/create-agent-skills/references/using-templates.md new file mode 100644 index 000000000..6afe5779d --- /dev/null +++ b/.agents/skills/create-agent-skills/references/using-templates.md @@ -0,0 +1,112 @@ +# Using Templates in Skills + + +Templates are reusable output structures that Claude copies and fills in. They ensure consistent, high-quality outputs without regenerating structure each time. + + + +Use templates when: +- Output should have consistent structure across invocations +- The structure matters more than creative generation +- Filling placeholders is more reliable than blank-page generation +- Users expect predictable, professional-looking outputs + +Common template types: +- **Plans** - Project plans, implementation plans, migration plans +- **Specifications** - Technical specs, feature specs, API specs +- **Documents** - Reports, proposals, summaries +- **Configurations** - Config files, settings, environment setups +- **Scaffolds** - File structures, boilerplate code + + + +Templates live in `templates/` within the skill directory: + +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md +โ”œโ”€โ”€ workflows/ +โ”œโ”€โ”€ references/ +โ””โ”€โ”€ templates/ + โ”œโ”€โ”€ plan-template.md + โ”œโ”€โ”€ spec-template.md + โ””โ”€โ”€ report-template.md +``` + +A template file contains: +1. Clear section markers +2. Placeholder indicators (use `{{placeholder}}` or `[PLACEHOLDER]`) +3. Inline guidance for what goes where +4. Example content where helpful + + + +```markdown +# {{PROJECT_NAME}} Implementation Plan + +## Overview +{{1-2 sentence summary of what this plan covers}} + +## Goals +- {{Primary goal}} +- {{Secondary goals...}} + +## Scope +**In scope:** +- {{What's included}} + +**Out of scope:** +- {{What's explicitly excluded}} + +## Phases + +### Phase 1: {{Phase name}} +**Duration:** {{Estimated duration}} +**Deliverables:** +- {{Deliverable 1}} +- {{Deliverable 2}} + +### Phase 2: {{Phase name}} +... + +## Success Criteria +- [ ] {{Measurable criterion 1}} +- [ ] {{Measurable criterion 2}} + +## Risks +| Risk | Likelihood | Impact | Mitigation | +|------|------------|--------|------------| +| {{Risk}} | {{H/M/L}} | {{H/M/L}} | {{Strategy}} | +``` + + + +Workflows reference templates like this: + +```xml + +## Step 3: Generate Plan + +1. Read `templates/plan-template.md` +2. Copy the template structure +3. Fill each placeholder based on gathered requirements +4. Review for completeness + +``` + +The workflow tells Claude WHEN to use the template. The template provides WHAT structure to produce. + + + +**Do:** +- Keep templates focused on structure, not content +- Use clear placeholder syntax consistently +- Include brief inline guidance where sections might be ambiguous +- Make templates complete but minimal + +**Don't:** +- Put excessive example content that might be copied verbatim +- Create templates for outputs that genuinely need creative generation +- Over-constrain with too many required sections +- Forget to update templates when requirements change + diff --git a/.agents/skills/create-agent-skills/references/workflows-and-validation.md b/.agents/skills/create-agent-skills/references/workflows-and-validation.md new file mode 100644 index 000000000..d3fef6323 --- /dev/null +++ b/.agents/skills/create-agent-skills/references/workflows-and-validation.md @@ -0,0 +1,510 @@ + +This reference covers patterns for complex workflows, validation loops, and feedback cycles in skill authoring. All patterns use pure XML structure. + + + + +Break complex operations into clear, sequential steps. For particularly complex workflows, provide a checklist. + + + +```xml + +Fill PDF forms with validated data from JSON field mappings. + + + +Copy this checklist and check off items as you complete them: + +``` +Task Progress: +- [ ] Step 1: Analyze the form (run analyze_form.py) +- [ ] Step 2: Create field mapping (edit fields.json) +- [ ] Step 3: Validate mapping (run validate_fields.py) +- [ ] Step 4: Fill the form (run fill_form.py) +- [ ] Step 5: Verify output (run verify_output.py) +``` + + +**Analyze the form** + +Run: `python scripts/analyze_form.py input.pdf` + +This extracts form fields and their locations, saving to `fields.json`. + + + +**Create field mapping** + +Edit `fields.json` to add values for each field. + + + +**Validate mapping** + +Run: `python scripts/validate_fields.py fields.json` + +Fix any validation errors before continuing. + + + +**Fill the form** + +Run: `python scripts/fill_form.py input.pdf fields.json output.pdf` + + + +**Verify output** + +Run: `python scripts/verify_output.py output.pdf` + +If verification fails, return to Step 2. + + +``` + + + +Use checklist pattern when: +- Workflow has 5+ sequential steps +- Steps must be completed in order +- Progress tracking helps prevent errors +- Easy resumption after interruption is valuable + + + + + + +Run validator โ†’ fix errors โ†’ repeat. This pattern greatly improves output quality. + + + +```xml + +Edit OOXML documents with XML validation at each step. + + + + +Make your edits to `word/document.xml` + + + +**Validate immediately**: `python ooxml/scripts/validate.py unpacked_dir/` + + + +If validation fails: +- Review the error message carefully +- Fix the issues in the XML +- Run validation again + + + +**Only proceed when validation passes** + + + +Rebuild: `python ooxml/scripts/pack.py unpacked_dir/ output.docx` + + + +Test the output document + + + + +Never skip validation. Catching errors early prevents corrupted output files. + +``` + + + +- Catches errors early before changes are applied +- Machine-verifiable with objective verification +- Plan can be iterated without touching originals +- Reduces total iteration cycles + + + + + +When Claude performs complex, open-ended tasks, create a plan in a structured format, validate it, then execute. + +Workflow: analyze โ†’ **create plan file** โ†’ **validate plan** โ†’ execute โ†’ verify + + + +```xml + +Apply batch updates to spreadsheet with plan validation. + + + + + +Analyze the spreadsheet and requirements + + + +Create `changes.json` with all planned updates + + + + + +Validate the plan: `python scripts/validate_changes.py changes.json` + + + +If validation fails: +- Review error messages +- Fix issues in changes.json +- Validate again + + + +Only proceed when validation passes + + + + + +Apply changes: `python scripts/apply_changes.py changes.json` + + + +Verify output + + + + + +- Plan validation passes with zero errors +- All changes applied successfully +- Output verification confirms expected results + +``` + + + +Make validation scripts verbose with specific error messages: + +**Good error message**: +"Field 'signature_date' not found. Available fields: customer_name, order_total, signature_date_signed" + +**Bad error message**: +"Invalid field" + +Specific errors help Claude fix issues without guessing. + + + +Use plan-validate-execute when: +- Operations are complex and error-prone +- Changes are irreversible or difficult to undo +- Planning can be validated independently +- Catching errors early saves significant time + + + + + + +Guide Claude through decision points with clear branching logic. + + + +```xml + +Modify DOCX files using appropriate method based on task type. + + + + +Determine the modification type: + +**Creating new content?** โ†’ Follow "Creation workflow" +**Editing existing content?** โ†’ Follow "Editing workflow" + + + +Build documents from scratch + + +1. Use docx-js library +2. Build document from scratch +3. Export to .docx format + + + + +Modify existing documents + + +1. Unpack existing document +2. Modify XML directly +3. Validate after each change +4. Repack when complete + + + + + +- Correct workflow chosen based on task type +- All steps in chosen workflow completed +- Output file validated and verified + +``` + + + +Use conditional workflows when: +- Different task types require different approaches +- Decision points are clear and well-defined +- Workflows are mutually exclusive +- Guiding Claude to correct path improves outcomes + + + + + +Validation scripts are force multipliers. They catch errors that Claude might miss and provide actionable feedback for fixing issues. + + + + +**Good**: "Field 'signature_date' not found. Available fields: customer_name, order_total, signature_date_signed" + +**Bad**: "Invalid field" + +Verbose errors help Claude fix issues in one iteration instead of multiple rounds of guessing. + + + +**Good**: "Line 47: Expected closing tag `` but found ``" + +**Bad**: "XML syntax error" + +Specific feedback pinpoints exact location and nature of the problem. + + + +**Good**: "Required field 'customer_name' is missing. Add: {\"customer_name\": \"value\"}" + +**Bad**: "Missing required field" + +Actionable suggestions show Claude exactly what to fix. + + + +When validation fails, show available valid options: + +**Good**: "Invalid status 'pending_review'. Valid statuses: active, paused, archived" + +**Bad**: "Invalid status" + +Showing valid options eliminates guesswork. + + + + +```xml + +After making changes, validate immediately: + +```bash +python scripts/validate.py output_dir/ +``` + +If validation fails, fix errors before continuing. Validation errors include: + +- **Field not found**: "Field 'signature_date' not found. Available fields: customer_name, order_total, signature_date_signed" +- **Type mismatch**: "Field 'order_total' expects number, got string" +- **Missing required field**: "Required field 'customer_name' is missing" +- **Invalid value**: "Invalid status 'pending_review'. Valid statuses: active, paused, archived" + +Only proceed when validation passes with zero errors. + +``` + + + +- Catches errors before they propagate +- Reduces iteration cycles +- Provides learning feedback +- Makes debugging deterministic +- Enables confident execution + + + + + +Many workflows benefit from iteration: generate โ†’ validate โ†’ refine โ†’ validate โ†’ finalize. + + + +```xml + +Generate reports with iterative quality improvement. + + + + +**Generate initial draft** + +Create report based on data and requirements. + + + +**Validate draft** + +Run: `python scripts/validate_report.py draft.md` + +Fix any structural issues, missing sections, or data errors. + + + +**Refine content** + +Improve clarity, add supporting data, enhance visualizations. + + + +**Final validation** + +Run: `python scripts/validate_report.py final.md` + +Ensure all quality criteria met. + + + +**Finalize** + +Export to final format and deliver. + + + + +- Final validation passes with zero errors +- All quality criteria met +- Report ready for delivery + +``` + + + +Use iterative refinement when: +- Quality improves with multiple passes +- Validation provides actionable feedback +- Time permits iteration +- Perfect output matters more than speed + + + + + +For long workflows, add checkpoints where Claude can pause and verify progress before continuing. + + + +```xml + + +**Data collection** (Steps 1-3) + +1. Extract data from source +2. Transform to target format +3. **CHECKPOINT**: Verify data completeness + +Only continue if checkpoint passes. + + + +**Data processing** (Steps 4-6) + +4. Apply business rules +5. Validate transformations +6. **CHECKPOINT**: Verify processing accuracy + +Only continue if checkpoint passes. + + + +**Output generation** (Steps 7-9) + +7. Generate output files +8. Validate output format +9. **CHECKPOINT**: Verify final output + +Proceed to delivery only if checkpoint passes. + + + + +At each checkpoint: +1. Run validation script +2. Review output for correctness +3. Verify no errors or warnings +4. Only proceed when validation passes + +``` + + + +- Prevents cascading errors +- Easier to diagnose issues +- Clear progress indicators +- Natural pause points for review +- Reduces wasted work from early errors + + + + + +Design workflows with clear error recovery paths. Claude should know what to do when things go wrong. + + + +```xml + + +1. Process input file +2. Validate output +3. Save results + + + +**If validation fails in step 2:** +- Review validation errors +- Check if input file is corrupted โ†’ Return to step 1 with different input +- Check if processing logic failed โ†’ Fix logic, return to step 1 +- Check if output format wrong โ†’ Fix format, return to step 2 + +**If save fails in step 3:** +- Check disk space +- Check file permissions +- Check file path validity +- Retry save with corrected conditions + + + +**If error persists after 3 attempts:** +- Document the error with full context +- Save partial results if available +- Report issue to user with diagnostic information + + +``` + + + +Include error recovery when: +- Workflows interact with external systems +- File operations could fail +- Network calls could timeout +- User input could be invalid +- Errors are recoverable + + diff --git a/.agents/skills/create-agent-skills/templates/router-skill.md b/.agents/skills/create-agent-skills/templates/router-skill.md new file mode 100644 index 000000000..b2dc762e8 --- /dev/null +++ b/.agents/skills/create-agent-skills/templates/router-skill.md @@ -0,0 +1,73 @@ +--- +name: {{SKILL_NAME}} +description: {{What it does}} Use when {{trigger conditions}}. +--- + + +## {{Core Concept}} + +{{Principles that ALWAYS apply, regardless of which workflow runs}} + +### 1. {{First principle}} +{{Explanation}} + +### 2. {{Second principle}} +{{Explanation}} + +### 3. {{Third principle}} +{{Explanation}} + + + +**Ask the user:** + +What would you like to do? +1. {{First option}} +2. {{Second option}} +3. {{Third option}} + +**Wait for response before proceeding.** + + + +| Response | Workflow | +|----------|----------| +| 1, "{{keywords}}" | `workflows/{{first-workflow}}.md` | +| 2, "{{keywords}}" | `workflows/{{second-workflow}}.md` | +| 3, "{{keywords}}" | `workflows/{{third-workflow}}.md` | + +**After reading the workflow, follow it exactly.** + + + +## {{Skill Name}} Quick Reference + +{{Brief reference information always useful to have visible}} + + + +## Domain Knowledge + +All in `references/`: +- {{reference-1.md}} - {{purpose}} +- {{reference-2.md}} - {{purpose}} + + + +## Workflows + +All in `workflows/`: + +| Workflow | Purpose | +|----------|---------| +| {{first-workflow}}.md | {{purpose}} | +| {{second-workflow}}.md | {{purpose}} | +| {{third-workflow}}.md | {{purpose}} | + + + +A well-executed {{skill name}}: +- {{First criterion}} +- {{Second criterion}} +- {{Third criterion}} + diff --git a/.agents/skills/create-agent-skills/templates/simple-skill.md b/.agents/skills/create-agent-skills/templates/simple-skill.md new file mode 100644 index 000000000..6678fa73c --- /dev/null +++ b/.agents/skills/create-agent-skills/templates/simple-skill.md @@ -0,0 +1,33 @@ +--- +name: {{SKILL_NAME}} +description: {{What it does}} Use when {{trigger conditions}}. +--- + + +{{Clear statement of what this skill accomplishes}} + + + +{{Immediate actionable guidance - what Claude should do first}} + + + +## Step 1: {{First action}} + +{{Instructions for step 1}} + +## Step 2: {{Second action}} + +{{Instructions for step 2}} + +## Step 3: {{Third action}} + +{{Instructions for step 3}} + + + +{{Skill name}} is complete when: +- [ ] {{First success criterion}} +- [ ] {{Second success criterion}} +- [ ] {{Third success criterion}} + diff --git a/.agents/skills/create-agent-skills/workflows/add-reference.md b/.agents/skills/create-agent-skills/workflows/add-reference.md new file mode 100644 index 000000000..4a26adbe1 --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/add-reference.md @@ -0,0 +1,96 @@ +# Workflow: Add a Reference to Existing Skill + + +**Read these reference files NOW:** +1. references/recommended-structure.md +2. references/skill-structure.md + + + +## Step 1: Select the Skill + +```bash +ls ~/.claude/skills/ +``` + +Present numbered list, ask: "Which skill needs a new reference?" + +## Step 2: Analyze Current Structure + +```bash +cat ~/.claude/skills/{skill-name}/SKILL.md +ls ~/.claude/skills/{skill-name}/references/ 2>/dev/null +``` + +Determine: +- **Has references/ folder?** โ†’ Good, can add directly +- **Simple skill?** โ†’ May need to create references/ first +- **What references exist?** โ†’ Understand the knowledge landscape + +Report current references to user. + +## Step 3: Gather Reference Requirements + +Ask: +- What knowledge should this reference contain? +- Which workflows will use it? +- Is this reusable across workflows or specific to one? + +**If specific to one workflow** โ†’ Consider putting it inline in that workflow instead. + +## Step 4: Create the Reference File + +Create `references/{reference-name}.md`: + +Use semantic XML tags to structure the content: +```xml + +Brief description of what this reference covers + + + +## Common Patterns +[Reusable patterns, examples, code snippets] + + + +## Guidelines +[Best practices, rules, constraints] + + + +## Examples +[Concrete examples with explanation] + +``` + +## Step 5: Update SKILL.md + +Add the new reference to ``: +```markdown +**Category:** existing.md, new-reference.md +``` + +## Step 6: Update Workflows That Need It + +For each workflow that should use this reference: + +1. Read the workflow file +2. Add to its `` section +3. Verify the workflow still makes sense with this addition + +## Step 7: Verify + +- [ ] Reference file exists and is well-structured +- [ ] Reference is in SKILL.md reference_index +- [ ] Relevant workflows have it in required_reading +- [ ] No broken references + + + +Reference addition is complete when: +- [ ] Reference file created with useful content +- [ ] Added to reference_index in SKILL.md +- [ ] Relevant workflows updated to read it +- [ ] Content is reusable (not workflow-specific) + diff --git a/.agents/skills/create-agent-skills/workflows/add-script.md b/.agents/skills/create-agent-skills/workflows/add-script.md new file mode 100644 index 000000000..fb7780671 --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/add-script.md @@ -0,0 +1,93 @@ +# Workflow: Add a Script to a Skill + + +**Read these reference files NOW:** +1. references/using-scripts.md + + + +## Step 1: Identify the Skill + +Ask (if not already provided): +- Which skill needs a script? +- What operation should the script perform? + +## Step 2: Analyze Script Need + +Confirm this is a good script candidate: +- [ ] Same code runs across multiple invocations +- [ ] Operation is error-prone when rewritten +- [ ] Consistency matters more than flexibility + +If not a good fit, suggest alternatives (inline code in workflow, reference examples). + +## Step 3: Create Scripts Directory + +```bash +mkdir -p ~/.claude/skills/{skill-name}/scripts +``` + +## Step 4: Design Script + +Gather requirements: +- What inputs does the script need? +- What should it output or accomplish? +- What errors might occur? +- Should it be idempotent? + +Choose language: +- **bash** - Shell operations, file manipulation, CLI tools +- **python** - Data processing, API calls, complex logic +- **node/ts** - JavaScript ecosystem, async operations + +## Step 5: Write Script File + +Create `scripts/{script-name}.{ext}` with: +- Purpose comment at top +- Usage instructions +- Input validation +- Error handling +- Clear output/feedback + +For bash scripts: +```bash +#!/bin/bash +set -euo pipefail +``` + +## Step 6: Make Executable (if bash) + +```bash +chmod +x ~/.claude/skills/{skill-name}/scripts/{script-name}.sh +``` + +## Step 7: Update Workflow to Use Script + +Find the workflow that needs this operation. Add: +```xml + +... +N. Run `scripts/{script-name}.sh [arguments]` +N+1. Verify operation succeeded +... + +``` + +## Step 8: Test + +Invoke the skill workflow and verify: +- Script runs at the right step +- Inputs are passed correctly +- Errors are handled gracefully +- Output matches expectations + + + +Script is complete when: +- [ ] scripts/ directory exists +- [ ] Script file has proper structure (comments, validation, error handling) +- [ ] Script is executable (if bash) +- [ ] At least one workflow references the script +- [ ] No hardcoded secrets or credentials +- [ ] Tested with real invocation + diff --git a/.agents/skills/create-agent-skills/workflows/add-template.md b/.agents/skills/create-agent-skills/workflows/add-template.md new file mode 100644 index 000000000..8481a2caf --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/add-template.md @@ -0,0 +1,74 @@ +# Workflow: Add a Template to a Skill + + +**Read these reference files NOW:** +1. references/using-templates.md + + + +## Step 1: Identify the Skill + +Ask (if not already provided): +- Which skill needs a template? +- What output does this template structure? + +## Step 2: Analyze Template Need + +Confirm this is a good template candidate: +- [ ] Output has consistent structure across uses +- [ ] Structure matters more than creative generation +- [ ] Filling placeholders is more reliable than blank-page generation + +If not a good fit, suggest alternatives (workflow guidance, reference examples). + +## Step 3: Create Templates Directory + +```bash +mkdir -p ~/.claude/skills/{skill-name}/templates +``` + +## Step 4: Design Template Structure + +Gather requirements: +- What sections does the output need? +- What information varies between uses? (โ†’ placeholders) +- What stays constant? (โ†’ static structure) + +## Step 5: Write Template File + +Create `templates/{template-name}.md` with: +- Clear section markers +- `{{PLACEHOLDER}}` syntax for variable content +- Brief inline guidance where helpful +- Minimal example content + +## Step 6: Update Workflow to Use Template + +Find the workflow that produces this output. Add: +```xml + +... +N. Read `templates/{template-name}.md` +N+1. Copy template structure +N+2. Fill each placeholder based on gathered context +... + +``` + +## Step 7: Test + +Invoke the skill workflow and verify: +- Template is read at the right step +- All placeholders get filled appropriately +- Output structure matches template +- No placeholders left unfilled + + + +Template is complete when: +- [ ] templates/ directory exists +- [ ] Template file has clear structure with placeholders +- [ ] At least one workflow references the template +- [ ] Workflow instructions explain when/how to use template +- [ ] Tested with real invocation + diff --git a/.agents/skills/create-agent-skills/workflows/add-workflow.md b/.agents/skills/create-agent-skills/workflows/add-workflow.md new file mode 100644 index 000000000..f53e9cf52 --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/add-workflow.md @@ -0,0 +1,120 @@ +# Workflow: Add a Workflow to Existing Skill + + +**Read these reference files NOW:** +1. references/recommended-structure.md +2. references/workflows-and-validation.md + + + +## Step 1: Select the Skill + +**DO NOT use AskUserQuestion** - there may be many skills. + +```bash +ls ~/.claude/skills/ +``` + +Present numbered list, ask: "Which skill needs a new workflow?" + +## Step 2: Analyze Current Structure + +Read the skill: +```bash +cat ~/.claude/skills/{skill-name}/SKILL.md +ls ~/.claude/skills/{skill-name}/workflows/ 2>/dev/null +``` + +Determine: +- **Simple skill?** โ†’ May need to upgrade to router pattern first +- **Already has workflows/?** โ†’ Good, can add directly +- **What workflows exist?** โ†’ Avoid duplication + +Report current structure to user. + +## Step 3: Gather Workflow Requirements + +Ask using AskUserQuestion or direct question: +- What should this workflow do? +- When would someone use it vs existing workflows? +- What references would it need? + +## Step 4: Upgrade to Router Pattern (if needed) + +**If skill is currently simple (no workflows/):** + +Ask: "This skill needs to be upgraded to the router pattern first. Should I restructure it?" + +If yes: +1. Create workflows/ directory +2. Move existing process content to workflows/main.md +3. Rewrite SKILL.md as router with intake + routing +4. Verify structure works before proceeding + +## Step 5: Create the Workflow File + +Create `workflows/{workflow-name}.md`: + +```markdown +# Workflow: {Workflow Name} + + +**Read these reference files NOW:** +1. references/{relevant-file}.md + + + +## Step 1: {First Step} +[What to do] + +## Step 2: {Second Step} +[What to do] + +## Step 3: {Third Step} +[What to do] + + + +This workflow is complete when: +- [ ] Criterion 1 +- [ ] Criterion 2 +- [ ] Criterion 3 + +``` + +## Step 6: Update SKILL.md + +Add the new workflow to: + +1. **Intake question** - Add new option +2. **Routing table** - Map option to workflow file +3. **Workflows index** - Add to the list + +## Step 7: Create References (if needed) + +If the workflow needs domain knowledge that doesn't exist: +1. Create `references/{reference-name}.md` +2. Add to reference_index in SKILL.md +3. Reference it in the workflow's required_reading + +## Step 8: Test + +Invoke the skill: +- Does the new option appear in intake? +- Does selecting it route to the correct workflow? +- Does the workflow load the right references? +- Does the workflow execute correctly? + +Report results to user. + + + +Workflow addition is complete when: +- [ ] Skill upgraded to router pattern (if needed) +- [ ] Workflow file created with required_reading, process, success_criteria +- [ ] SKILL.md intake updated with new option +- [ ] SKILL.md routing updated +- [ ] SKILL.md workflows_index updated +- [ ] Any needed references created +- [ ] Tested and working + diff --git a/.agents/skills/create-agent-skills/workflows/audit-skill.md b/.agents/skills/create-agent-skills/workflows/audit-skill.md new file mode 100644 index 000000000..364f78efe --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/audit-skill.md @@ -0,0 +1,138 @@ +# Workflow: Audit a Skill + + +**Read these reference files NOW:** +1. references/recommended-structure.md +2. references/skill-structure.md +3. references/use-xml-tags.md + + + +## Step 1: List Available Skills + +**DO NOT use AskUserQuestion** - there may be many skills. + +Enumerate skills in chat as numbered list: +```bash +ls ~/.claude/skills/ +``` + +Present as: +``` +Available skills: +1. create-agent-skills +2. build-macos-apps +3. manage-stripe +... +``` + +Ask: "Which skill would you like to audit? (enter number or name)" + +## Step 2: Read the Skill + +After user selects, read the full skill structure: +```bash +# Read main file +cat ~/.claude/skills/{skill-name}/SKILL.md + +# Check for workflows and references +ls ~/.claude/skills/{skill-name}/ +ls ~/.claude/skills/{skill-name}/workflows/ 2>/dev/null +ls ~/.claude/skills/{skill-name}/references/ 2>/dev/null +``` + +## Step 3: Run Audit Checklist + +Evaluate against each criterion: + +### YAML Frontmatter +- [ ] Has `name:` field (lowercase-with-hyphens) +- [ ] Name matches directory name +- [ ] Has `description:` field +- [ ] Description says what it does AND when to use it +- [ ] Description is third person ("Use when...") + +### Structure +- [ ] SKILL.md under 500 lines +- [ ] Pure XML structure (no markdown headings # in body) +- [ ] All XML tags properly closed +- [ ] Has required tags: objective OR essential_principles +- [ ] Has success_criteria + +### Router Pattern (if complex skill) +- [ ] Essential principles inline in SKILL.md (not in separate file) +- [ ] Has intake question +- [ ] Has routing table +- [ ] All referenced workflow files exist +- [ ] All referenced reference files exist + +### Workflows (if present) +- [ ] Each has required_reading section +- [ ] Each has process section +- [ ] Each has success_criteria section +- [ ] Required reading references exist + +### Content Quality +- [ ] Principles are actionable (not vague platitudes) +- [ ] Steps are specific (not "do the thing") +- [ ] Success criteria are verifiable +- [ ] No redundant content across files + +## Step 4: Generate Report + +Present findings as: + +``` +## Audit Report: {skill-name} + +### โœ… Passing +- [list passing items] + +### โš ๏ธ Issues Found +1. **[Issue name]**: [Description] + โ†’ Fix: [Specific action] + +2. **[Issue name]**: [Description] + โ†’ Fix: [Specific action] + +### ๐Ÿ“Š Score: X/Y criteria passing +``` + +## Step 5: Offer Fixes + +If issues found, ask: +"Would you like me to fix these issues?" + +Options: +1. **Fix all** - Apply all recommended fixes +2. **Fix one by one** - Review each fix before applying +3. **Just the report** - No changes needed + +If fixing: +- Make each change +- Verify file validity after each change +- Report what was fixed + + + +## Common Anti-Patterns to Flag + +**Skippable principles**: Essential principles in separate file instead of inline +**Monolithic skill**: Single file over 500 lines +**Mixed concerns**: Procedures and knowledge in same file +**Vague steps**: "Handle the error appropriately" +**Untestable criteria**: "User is satisfied" +**Markdown headings in body**: Using # instead of XML tags +**Missing routing**: Complex skill without intake/routing +**Broken references**: Files mentioned but don't exist +**Redundant content**: Same information in multiple places + + + +Audit is complete when: +- [ ] Skill fully read and analyzed +- [ ] All checklist items evaluated +- [ ] Report presented to user +- [ ] Fixes applied (if requested) +- [ ] User has clear picture of skill health + diff --git a/.agents/skills/create-agent-skills/workflows/create-domain-expertise-skill.md b/.agents/skills/create-agent-skills/workflows/create-domain-expertise-skill.md new file mode 100644 index 000000000..806ae34d8 --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/create-domain-expertise-skill.md @@ -0,0 +1,605 @@ +# Workflow: Create Exhaustive Domain Expertise Skill + + +Build a comprehensive execution skill that does real work in a specific domain. Domain expertise skills are full-featured build skills with exhaustive domain knowledge in references, complete workflows for the full lifecycle (build โ†’ debug โ†’ optimize โ†’ ship), and can be both invoked directly by users AND loaded by other skills (like create-plans) for domain knowledge. + + + +**Regular skill:** "Do one specific task" +**Domain expertise skill:** "Do EVERYTHING in this domain, with complete practitioner knowledge" + +Examples: +- `expertise/macos-apps` - Build macOS apps from scratch through shipping +- `expertise/python-games` - Build complete Python games with full game dev lifecycle +- `expertise/rust-systems` - Build Rust systems programs with exhaustive systems knowledge +- `expertise/web-scraping` - Build scrapers, handle all edge cases, deploy at scale + +Domain expertise skills: +- โœ… Execute tasks (build, debug, optimize, ship) +- โœ… Have comprehensive domain knowledge in references +- โœ… Are invoked directly by users ("build a macOS app") +- โœ… Can be loaded by other skills (create-plans reads references for planning) +- โœ… Cover the FULL lifecycle, not just getting started + + + +**Read these reference files NOW:** +1. references/recommended-structure.md +2. references/core-principles.md +3. references/use-xml-tags.md + + + +## Step 1: Identify Domain + +Ask user what domain expertise to build: + +**Example domains:** +- macOS/iOS app development +- Python game development +- Rust systems programming +- Machine learning / AI +- Web scraping and automation +- Data engineering pipelines +- Audio processing / DSP +- 3D graphics / shaders +- Unity/Unreal game development +- Embedded systems + +Get specific: "Python games" or "Python games with Pygame specifically"? + +## Step 2: Confirm Target Location + +Explain: +``` +Domain expertise skills go in: ~/.claude/skills/expertise/{domain-name}/ + +These are comprehensive BUILD skills that: +- Execute tasks (build, debug, optimize, ship) +- Contain exhaustive domain knowledge +- Can be invoked directly by users +- Can be loaded by other skills for domain knowledge + +Name suggestion: {suggested-name} +Location: ~/.claude/skills/expertise/{suggested-name}/ +``` + +Confirm or adjust name. + +## Step 3: Identify Workflows + +Domain expertise skills cover the FULL lifecycle. Identify what workflows are needed. + +**Common workflows for most domains:** +1. **build-new-{thing}.md** - Create from scratch +2. **add-feature.md** - Extend existing {thing} +3. **debug-{thing}.md** - Find and fix bugs +4. **write-tests.md** - Test for correctness +5. **optimize-performance.md** - Profile and speed up +6. **ship-{thing}.md** - Deploy/distribute + +**Domain-specific workflows:** +- Games: `implement-game-mechanic.md`, `add-audio.md`, `polish-ui.md` +- Web apps: `setup-auth.md`, `add-api-endpoint.md`, `setup-database.md` +- Systems: `optimize-memory.md`, `profile-cpu.md`, `cross-compile.md` + +Each workflow = one complete task type that users actually do. + +## Step 4: Exhaustive Research Phase + +**CRITICAL:** This research must be comprehensive, not superficial. + +### Research Strategy + +Run multiple web searches to ensure coverage: + +**Search 1: Current ecosystem** +- "best {domain} libraries 2024 2025" +- "popular {domain} frameworks comparison" +- "{domain} tech stack recommendations" + +**Search 2: Architecture patterns** +- "{domain} architecture patterns" +- "{domain} best practices design patterns" +- "how to structure {domain} projects" + +**Search 3: Lifecycle and tooling** +- "{domain} development workflow" +- "{domain} testing debugging best practices" +- "{domain} deployment distribution" + +**Search 4: Common pitfalls** +- "{domain} common mistakes avoid" +- "{domain} anti-patterns" +- "what not to do {domain}" + +**Search 5: Real-world usage** +- "{domain} production examples GitHub" +- "{domain} case studies" +- "successful {domain} projects" + +### Verification Requirements + +For EACH major library/tool/pattern found: +- **Check recency:** When was it last updated? +- **Check adoption:** Is it actively maintained? Community size? +- **Check alternatives:** What else exists? When to use each? +- **Check deprecation:** Is anything being replaced? + +**Red flags for outdated content:** +- Articles from before 2023 (unless fundamental concepts) +- Abandoned libraries (no commits in 12+ months) +- Deprecated APIs or patterns +- "This used to be popular but..." + +### Documentation Sources + +Use Context7 MCP when available: +``` +mcp__context7__resolve-library-id: {library-name} +mcp__context7__get-library-docs: {library-id} +``` + +Focus on official docs, not tutorials. + +## Step 5: Organize Knowledge Into Domain Areas + +Structure references by domain concerns, NOT by arbitrary categories. + +**For game development example:** +``` +references/ +โ”œโ”€โ”€ architecture.md # ECS, component-based, state machines +โ”œโ”€โ”€ libraries.md # Pygame, Arcade, Panda3D (when to use each) +โ”œโ”€โ”€ graphics-rendering.md # 2D/3D rendering, sprites, shaders +โ”œโ”€โ”€ physics.md # Collision, physics engines +โ”œโ”€โ”€ audio.md # Sound effects, music, spatial audio +โ”œโ”€โ”€ input.md # Keyboard, mouse, gamepad, touch +โ”œโ”€โ”€ ui-menus.md # HUD, menus, dialogs +โ”œโ”€โ”€ game-loop.md # Update/render loop, fixed timestep +โ”œโ”€โ”€ state-management.md # Game states, scene management +โ”œโ”€โ”€ networking.md # Multiplayer, client-server, P2P +โ”œโ”€โ”€ asset-pipeline.md # Loading, caching, optimization +โ”œโ”€โ”€ testing-debugging.md # Unit tests, profiling, debugging tools +โ”œโ”€โ”€ performance.md # Optimization, profiling, benchmarking +โ”œโ”€โ”€ packaging.md # Building executables, installers +โ”œโ”€โ”€ distribution.md # Steam, itch.io, app stores +โ””โ”€โ”€ anti-patterns.md # Common mistakes, what NOT to do +``` + +**For macOS app development example:** +``` +references/ +โ”œโ”€โ”€ app-architecture.md # State management, dependency injection +โ”œโ”€โ”€ swiftui-patterns.md # Declarative UI patterns +โ”œโ”€โ”€ appkit-integration.md # Using AppKit with SwiftUI +โ”œโ”€โ”€ concurrency-patterns.md # Async/await, actors, structured concurrency +โ”œโ”€โ”€ data-persistence.md # Storage strategies +โ”œโ”€โ”€ networking.md # URLSession, async networking +โ”œโ”€โ”€ system-apis.md # macOS-specific frameworks +โ”œโ”€โ”€ testing-tdd.md # Testing patterns +โ”œโ”€โ”€ testing-debugging.md # Debugging tools and techniques +โ”œโ”€โ”€ performance.md # Profiling, optimization +โ”œโ”€โ”€ design-system.md # Platform conventions +โ”œโ”€โ”€ macos-polish.md # Native feel, accessibility +โ”œโ”€โ”€ security-code-signing.md # Signing, notarization +โ””โ”€โ”€ project-scaffolding.md # CLI-based setup +``` + +**For each reference file:** +- Pure XML structure +- Decision trees: "If X, use Y. If Z, use A instead." +- Comparison tables: Library vs Library (speed, features, learning curve) +- Code examples showing patterns +- "When to use" guidance +- Platform-specific considerations +- Current versions and compatibility + +## Step 6: Create SKILL.md + +Domain expertise skills use router pattern with essential principles: + +```yaml +--- +name: build-{domain-name} +description: Build {domain things} from scratch through shipping. Full lifecycle - build, debug, test, optimize, ship. {Any specific constraints like "CLI-only, no IDE"}. +--- + + +## How {This Domain} Works + +{Domain-specific principles that ALWAYS apply} + +### 1. {First Principle} +{Critical practice that can't be skipped} + +### 2. {Second Principle} +{Another fundamental practice} + +### 3. {Third Principle} +{Core workflow pattern} + + + +**Ask the user:** + +What would you like to do? +1. Build a new {thing} +2. Debug an existing {thing} +3. Add a feature +4. Write/run tests +5. Optimize performance +6. Ship/release +7. Something else + +**Then read the matching workflow from `workflows/` and follow it.** + + + +| Response | Workflow | +|----------|----------| +| 1, "new", "create", "build", "start" | `workflows/build-new-{thing}.md` | +| 2, "broken", "fix", "debug", "crash", "bug" | `workflows/debug-{thing}.md` | +| 3, "add", "feature", "implement", "change" | `workflows/add-feature.md` | +| 4, "test", "tests", "TDD", "coverage" | `workflows/write-tests.md` | +| 5, "slow", "optimize", "performance", "fast" | `workflows/optimize-performance.md` | +| 6, "ship", "release", "deploy", "publish" | `workflows/ship-{thing}.md` | +| 7, other | Clarify, then select workflow or references | + + + +## After Every Change + +{Domain-specific verification steps} + +Example for compiled languages: +```bash +# 1. Does it build? +{build command} + +# 2. Do tests pass? +{test command} + +# 3. Does it run? +{run command} +``` + +Report to the user: +- "Build: โœ“" +- "Tests: X pass, Y fail" +- "Ready for you to check [specific thing]" + + + +## Domain Knowledge + +All in `references/`: + +**Architecture:** {list files} +**{Domain Area}:** {list files} +**{Domain Area}:** {list files} +**Development:** {list files} +**Shipping:** {list files} + + + +## Workflows + +All in `workflows/`: + +| File | Purpose | +|------|---------| +| build-new-{thing}.md | Create new {thing} from scratch | +| debug-{thing}.md | Find and fix bugs | +| add-feature.md | Add to existing {thing} | +| write-tests.md | Write and run tests | +| optimize-performance.md | Profile and speed up | +| ship-{thing}.md | Deploy/distribute | + +``` + +## Step 7: Write Workflows + +For EACH workflow identified in Step 3: + +### Workflow Template + +```markdown +# Workflow: {Workflow Name} + + +**Read these reference files NOW before {doing the task}:** +1. references/{relevant-file}.md +2. references/{another-relevant-file}.md +3. references/{third-relevant-file}.md + + + +## Step 1: {First Action} + +{What to do} + +## Step 2: {Second Action} + +{What to do - actual implementation steps} + +## Step 3: {Third Action} + +{What to do} + +## Step 4: Verify + +{How to prove it works} + +```bash +{verification commands} +``` + + + +Avoid: +- {Common mistake 1} +- {Common mistake 2} +- {Common mistake 3} + + + +A well-{completed task}: +- {Criterion 1} +- {Criterion 2} +- {Criterion 3} +- Builds/runs without errors +- Tests pass +- Feels {native/professional/correct} + +``` + +**Key workflow characteristics:** +- Starts with required_reading (which references to load) +- Contains actual implementation steps (not just "read references") +- Includes verification steps +- Has success criteria +- Documents anti-patterns + +## Step 8: Write Comprehensive References + +For EACH reference file identified in Step 5: + +### Structure Template + +```xml + +Brief introduction to this domain area + + + +## Available Approaches/Libraries + + + + + + + +## Choosing the Right Approach + +**If you need [X]:** Use [Library A] +**If you need [Y]:** Use [Library B] +**If you have [constraint Z]:** Use [Library C] + +**Avoid [Library D] if:** [specific scenarios] + + + +## Common Patterns + + +**Use when:** [scenario] +**Implementation:** [code example] +**Considerations:** [trade-offs] + + + + +## What NOT to Do + + +**Problem:** [what people do wrong] +**Why it's bad:** [consequences] +**Instead:** [correct approach] + + + + +## Platform-Specific Notes + +**Windows:** [considerations] +**macOS:** [considerations] +**Linux:** [considerations] +**Mobile:** [if applicable] + +``` + +### Quality Standards + +Each reference must include: +- **Current information** (verify dates) +- **Multiple options** (not just one library) +- **Decision guidance** (when to use each) +- **Real examples** (working code, not pseudocode) +- **Trade-offs** (no silver bullets) +- **Anti-patterns** (what NOT to do) + +### Common Reference Files + +Most domains need: +- **architecture.md** - How to structure projects +- **libraries.md** - Ecosystem overview with comparisons +- **patterns.md** - Design patterns specific to domain +- **testing-debugging.md** - How to verify correctness +- **performance.md** - Optimization strategies +- **deployment.md** - How to ship/distribute +- **anti-patterns.md** - Common mistakes consolidated + +## Step 9: Validate Completeness + +### Completeness Checklist + +Ask: "Could a user build a professional {domain thing} from scratch through shipping using just this skill?" + +**Must answer YES to:** +- [ ] All major libraries/frameworks covered? +- [ ] All architectural approaches documented? +- [ ] Complete lifecycle addressed (build โ†’ debug โ†’ test โ†’ optimize โ†’ ship)? +- [ ] Platform-specific considerations included? +- [ ] "When to use X vs Y" guidance provided? +- [ ] Common pitfalls documented? +- [ ] Current as of 2024-2025? +- [ ] Workflows actually execute tasks (not just reference knowledge)? +- [ ] Each workflow specifies which references to read? + +**Specific gaps to check:** +- [ ] Testing strategy covered? +- [ ] Debugging/profiling tools listed? +- [ ] Deployment/distribution methods documented? +- [ ] Performance optimization addressed? +- [ ] Security considerations (if applicable)? +- [ ] Asset/resource management (if applicable)? +- [ ] Networking (if applicable)? + +### Dual-Purpose Test + +Test both use cases: + +**Direct invocation:** "Can a user invoke this skill and build something?" +- Intake routes to appropriate workflow +- Workflow loads relevant references +- Workflow provides implementation steps +- Success criteria are clear + +**Knowledge reference:** "Can create-plans load references to plan a project?" +- References contain decision guidance +- All options compared +- Complete lifecycle covered +- Architecture patterns documented + +## Step 10: Create Directory and Files + +```bash +# Create structure +mkdir -p ~/.claude/skills/expertise/{domain-name} +mkdir -p ~/.claude/skills/expertise/{domain-name}/workflows +mkdir -p ~/.claude/skills/expertise/{domain-name}/references + +# Write SKILL.md +# Write all workflow files +# Write all reference files + +# Verify structure +ls -R ~/.claude/skills/expertise/{domain-name} +``` + +## Step 11: Document in create-plans + +Update `~/.claude/skills/create-plans/SKILL.md` to reference this new domain: + +Add to the domain inference table: +```markdown +| "{keyword}", "{domain term}" | expertise/{domain-name} | +``` + +So create-plans can auto-detect and offer to load it. + +## Step 12: Final Quality Check + +Review entire skill: + +**SKILL.md:** +- [ ] Name matches directory (build-{domain-name}) +- [ ] Description explains it builds things from scratch through shipping +- [ ] Essential principles inline (always loaded) +- [ ] Intake asks what user wants to do +- [ ] Routing maps to workflows +- [ ] Reference index complete and organized +- [ ] Workflows index complete + +**Workflows:** +- [ ] Each workflow starts with required_reading +- [ ] Each workflow has actual implementation steps +- [ ] Each workflow has verification steps +- [ ] Each workflow has success criteria +- [ ] Workflows cover full lifecycle (build, debug, test, optimize, ship) + +**References:** +- [ ] Pure XML structure (no markdown headings) +- [ ] Decision guidance in every file +- [ ] Current versions verified +- [ ] Code examples work +- [ ] Anti-patterns documented +- [ ] Platform considerations included + +**Completeness:** +- [ ] A professional practitioner would find this comprehensive +- [ ] No major libraries/patterns missing +- [ ] Full lifecycle covered +- [ ] Passes the "build from scratch through shipping" test +- [ ] Can be invoked directly by users +- [ ] Can be loaded by create-plans for knowledge + + + + +Domain expertise skill is complete when: + +- [ ] Comprehensive research completed (5+ web searches) +- [ ] All sources verified for currency (2024-2025) +- [ ] Knowledge organized by domain areas (not arbitrary) +- [ ] Essential principles in SKILL.md (always loaded) +- [ ] Intake routes to appropriate workflows +- [ ] Each workflow has required_reading + implementation steps + verification +- [ ] Each reference has decision trees and comparisons +- [ ] Anti-patterns documented throughout +- [ ] Full lifecycle covered (build โ†’ debug โ†’ test โ†’ optimize โ†’ ship) +- [ ] Platform-specific considerations included +- [ ] Located in ~/.claude/skills/expertise/{domain-name}/ +- [ ] Referenced in create-plans domain inference table +- [ ] Passes dual-purpose test: Can be invoked directly AND loaded for knowledge +- [ ] User can build something professional from scratch through shipping + + + +**DON'T:** +- Copy tutorial content without verification +- Include only "getting started" material +- Skip the "when NOT to use" guidance +- Forget to check if libraries are still maintained +- Organize by document type instead of domain concerns +- Make it knowledge-only with no execution workflows +- Skip verification steps in workflows +- Include outdated content from old blog posts +- Skip decision trees and comparisons +- Create workflows that just say "read the references" + +**DO:** +- Verify everything is current +- Include complete lifecycle (build โ†’ ship) +- Provide decision guidance +- Document anti-patterns +- Make workflows execute real tasks +- Start workflows with required_reading +- Include verification in every workflow +- Make it exhaustive, not minimal +- Test both direct invocation and knowledge reference use cases + diff --git a/.agents/skills/create-agent-skills/workflows/create-new-skill.md b/.agents/skills/create-agent-skills/workflows/create-new-skill.md new file mode 100644 index 000000000..54edb831b --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/create-new-skill.md @@ -0,0 +1,191 @@ +# Workflow: Create a New Skill + + +**Read these reference files NOW:** +1. references/recommended-structure.md +2. references/skill-structure.md +3. references/core-principles.md +4. references/use-xml-tags.md + + + +## Step 1: Adaptive Requirements Gathering + +**If user provided context** (e.g., "build a skill for X"): +โ†’ Analyze what's stated, what can be inferred, what's unclear +โ†’ Skip to asking about genuine gaps only + +**If user just invoked skill without context:** +โ†’ Ask what they want to build + +### Using AskUserQuestion + +Ask 2-4 domain-specific questions based on actual gaps. Each question should: +- Have specific options with descriptions +- Focus on scope, complexity, outputs, boundaries +- NOT ask things obvious from context + +Example questions: +- "What specific operations should this skill handle?" (with options based on domain) +- "Should this also handle [related thing] or stay focused on [core thing]?" +- "What should the user see when successful?" + +### Decision Gate + +After initial questions, ask: +"Ready to proceed with building, or would you like me to ask more questions?" + +Options: +1. **Proceed to building** - I have enough context +2. **Ask more questions** - There are more details to clarify +3. **Let me add details** - I want to provide additional context + +## Step 2: Research Trigger (If External API) + +**When external service detected**, ask using AskUserQuestion: +"This involves [service name] API. Would you like me to research current endpoints and patterns before building?" + +Options: +1. **Yes, research first** - Fetch current documentation for accurate implementation +2. **No, proceed with general patterns** - Use common patterns without specific API research + +If research requested: +- Use Context7 MCP to fetch current library documentation +- Or use WebSearch for recent API documentation +- Focus on 2024-2025 sources +- Store findings for use in content generation + +## Step 3: Decide Structure + +**Simple skill (single workflow, <200 lines):** +โ†’ Single SKILL.md file with all content + +**Complex skill (multiple workflows OR domain knowledge):** +โ†’ Router pattern: +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md (router + principles) +โ”œโ”€โ”€ workflows/ (procedures - FOLLOW) +โ”œโ”€โ”€ references/ (knowledge - READ) +โ”œโ”€โ”€ templates/ (output structures - COPY + FILL) +โ””โ”€โ”€ scripts/ (reusable code - EXECUTE) +``` + +Factors favoring router pattern: +- Multiple distinct user intents (create vs debug vs ship) +- Shared domain knowledge across workflows +- Essential principles that must not be skipped +- Skill likely to grow over time + +**Consider templates/ when:** +- Skill produces consistent output structures (plans, specs, reports) +- Structure matters more than creative generation + +**Consider scripts/ when:** +- Same code runs across invocations (deploy, setup, API calls) +- Operations are error-prone when rewritten each time + +See references/recommended-structure.md for templates. + +## Step 4: Create Directory + +```bash +mkdir -p ~/.claude/skills/{skill-name} +# If complex: +mkdir -p ~/.claude/skills/{skill-name}/workflows +mkdir -p ~/.claude/skills/{skill-name}/references +# If needed: +mkdir -p ~/.claude/skills/{skill-name}/templates # for output structures +mkdir -p ~/.claude/skills/{skill-name}/scripts # for reusable code +``` + +## Step 5: Write SKILL.md + +**Simple skill:** Write complete skill file with: +- YAML frontmatter (name, description) +- `` +- `` +- Content sections with pure XML +- `` + +**Complex skill:** Write router with: +- YAML frontmatter +- `` (inline, unavoidable) +- `` (question to ask user) +- `` (maps answers to workflows) +- `` and `` + +## Step 6: Write Workflows (if complex) + +For each workflow: +```xml + +Which references to load for this workflow + + + +Step-by-step procedure + + + +How to know this workflow is done + +``` + +## Step 7: Write References (if needed) + +Domain knowledge that: +- Multiple workflows might need +- Doesn't change based on workflow +- Contains patterns, examples, technical details + +## Step 8: Validate Structure + +Check: +- [ ] YAML frontmatter valid +- [ ] Name matches directory (lowercase-with-hyphens) +- [ ] Description says what it does AND when to use it (third person) +- [ ] No markdown headings (#) in body - use XML tags +- [ ] Required tags present: objective, quick_start, success_criteria +- [ ] All referenced files exist +- [ ] SKILL.md under 500 lines +- [ ] XML tags properly closed + +## Step 9: Create Slash Command + +```bash +cat > ~/.claude/commands/{skill-name}.md << 'EOF' +--- +description: {Brief description} +argument-hint: [{argument hint}] +allowed-tools: Skill({skill-name}) +--- + +Invoke the {skill-name} skill for: $ARGUMENTS +EOF +``` + +## Step 10: Test + +Invoke the skill and observe: +- Does it ask the right intake question? +- Does it load the right workflow? +- Does the workflow load the right references? +- Does output match expectations? + +Iterate based on real usage, not assumptions. + + + +Skill is complete when: +- [ ] Requirements gathered with appropriate questions +- [ ] API research done if external service involved +- [ ] Directory structure correct +- [ ] SKILL.md has valid frontmatter +- [ ] Essential principles inline (if complex skill) +- [ ] Intake question routes to correct workflow +- [ ] All workflows have required_reading + process + success_criteria +- [ ] References contain reusable domain knowledge +- [ ] Slash command exists and works +- [ ] Tested with real invocation + diff --git a/.agents/skills/create-agent-skills/workflows/get-guidance.md b/.agents/skills/create-agent-skills/workflows/get-guidance.md new file mode 100644 index 000000000..48f7b7da8 --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/get-guidance.md @@ -0,0 +1,121 @@ +# Workflow: Get Guidance on Skill Design + + +**Read these reference files NOW:** +1. references/core-principles.md +2. references/recommended-structure.md + + + +## Step 1: Understand the Problem Space + +Ask the user: +- What task or domain are you trying to support? +- Is this something you do repeatedly? +- What makes it complex enough to need a skill? + +## Step 2: Determine If a Skill Is Right + +**Create a skill when:** +- Task is repeated across multiple sessions +- Domain knowledge doesn't change frequently +- Complex enough to benefit from structure +- Would save significant time if automated + +**Don't create a skill when:** +- One-off task (just do it directly) +- Changes constantly (will be outdated quickly) +- Too simple (overhead isn't worth it) +- Better as a slash command (user-triggered, no context needed) + +Share this assessment with user. + +## Step 3: Map the Workflows + +Ask: "What are the different things someone might want to do with this skill?" + +Common patterns: +- Create / Read / Update / Delete +- Build / Debug / Ship +- Setup / Use / Troubleshoot +- Import / Process / Export + +Each distinct workflow = potential workflow file. + +## Step 4: Identify Domain Knowledge + +Ask: "What knowledge is needed regardless of which workflow?" + +This becomes references: +- API patterns +- Best practices +- Common examples +- Configuration details + +## Step 5: Draft the Structure + +Based on answers, recommend structure: + +**If 1 workflow, simple knowledge:** +``` +skill-name/ +โ””โ”€โ”€ SKILL.md (everything in one file) +``` + +**If 2+ workflows, shared knowledge:** +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md (router) +โ”œโ”€โ”€ workflows/ +โ”‚ โ”œโ”€โ”€ workflow-a.md +โ”‚ โ””โ”€โ”€ workflow-b.md +โ””โ”€โ”€ references/ + โ””โ”€โ”€ shared-knowledge.md +``` + +## Step 6: Identify Essential Principles + +Ask: "What rules should ALWAYS apply, no matter which workflow?" + +These become `` in SKILL.md. + +Examples: +- "Always verify before reporting success" +- "Never store credentials in code" +- "Ask before making destructive changes" + +## Step 7: Present Recommendation + +Summarize: +- Recommended structure (simple vs router pattern) +- List of workflows +- List of references +- Essential principles + +Ask: "Does this structure make sense? Ready to build it?" + +If yes โ†’ offer to switch to "Create a new skill" workflow +If no โ†’ clarify and iterate + + + +## Quick Decision Framework + +| Situation | Recommendation | +|-----------|----------------| +| Single task, repeat often | Simple skill | +| Multiple related tasks | Router + workflows | +| Complex domain, many patterns | Router + workflows + references | +| User-triggered, fresh context | Slash command, not skill | +| One-off task | No skill needed | + + + +Guidance is complete when: +- [ ] User understands if they need a skill +- [ ] Structure is recommended and explained +- [ ] Workflows are identified +- [ ] References are identified +- [ ] Essential principles are identified +- [ ] User is ready to build (or decided not to) + diff --git a/.agents/skills/create-agent-skills/workflows/upgrade-to-router.md b/.agents/skills/create-agent-skills/workflows/upgrade-to-router.md new file mode 100644 index 000000000..26c0d119d --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/upgrade-to-router.md @@ -0,0 +1,161 @@ +# Workflow: Upgrade Skill to Router Pattern + + +**Read these reference files NOW:** +1. references/recommended-structure.md +2. references/skill-structure.md + + + +## Step 1: Select the Skill + +```bash +ls ~/.claude/skills/ +``` + +Present numbered list, ask: "Which skill should be upgraded to the router pattern?" + +## Step 2: Verify It Needs Upgrading + +Read the skill: +```bash +cat ~/.claude/skills/{skill-name}/SKILL.md +ls ~/.claude/skills/{skill-name}/ +``` + +**Already a router?** (has workflows/ and intake question) +โ†’ Tell user it's already using router pattern, offer to add workflows instead + +**Simple skill that should stay simple?** (under 200 lines, single workflow) +โ†’ Explain that router pattern may be overkill, ask if they want to proceed anyway + +**Good candidate for upgrade:** +- Over 200 lines +- Multiple distinct use cases +- Essential principles that shouldn't be skipped +- Growing complexity + +## Step 3: Identify Components + +Analyze the current skill and identify: + +1. **Essential principles** - Rules that apply to ALL use cases +2. **Distinct workflows** - Different things a user might want to do +3. **Reusable knowledge** - Patterns, examples, technical details + +Present findings: +``` +## Analysis + +**Essential principles I found:** +- [Principle 1] +- [Principle 2] + +**Distinct workflows I identified:** +- [Workflow A]: [description] +- [Workflow B]: [description] + +**Knowledge that could be references:** +- [Reference topic 1] +- [Reference topic 2] +``` + +Ask: "Does this breakdown look right? Any adjustments?" + +## Step 4: Create Directory Structure + +```bash +mkdir -p ~/.claude/skills/{skill-name}/workflows +mkdir -p ~/.claude/skills/{skill-name}/references +``` + +## Step 5: Extract Workflows + +For each identified workflow: + +1. Create `workflows/{workflow-name}.md` +2. Add required_reading section (references it needs) +3. Add process section (steps from original skill) +4. Add success_criteria section + +## Step 6: Extract References + +For each identified reference topic: + +1. Create `references/{reference-name}.md` +2. Move relevant content from original skill +3. Structure with semantic XML tags + +## Step 7: Rewrite SKILL.md as Router + +Replace SKILL.md with router structure: + +```markdown +--- +name: {skill-name} +description: {existing description} +--- + + +[Extracted principles - inline, cannot be skipped] + + + +**Ask the user:** + +What would you like to do? +1. [Workflow A option] +2. [Workflow B option] +... + +**Wait for response before proceeding.** + + + +| Response | Workflow | +|----------|----------| +| 1, "keywords" | `workflows/workflow-a.md` | +| 2, "keywords" | `workflows/workflow-b.md` | + + + +[List all references by category] + + + +| Workflow | Purpose | +|----------|---------| +| workflow-a.md | [What it does] | +| workflow-b.md | [What it does] | + +``` + +## Step 8: Verify Nothing Was Lost + +Compare original skill content against new structure: +- [ ] All principles preserved (now inline) +- [ ] All procedures preserved (now in workflows) +- [ ] All knowledge preserved (now in references) +- [ ] No orphaned content + +## Step 9: Test + +Invoke the upgraded skill: +- Does intake question appear? +- Does each routing option work? +- Do workflows load correct references? +- Does behavior match original skill? + +Report any issues. + + + +Upgrade is complete when: +- [ ] workflows/ directory created with workflow files +- [ ] references/ directory created (if needed) +- [ ] SKILL.md rewritten as router +- [ ] Essential principles inline in SKILL.md +- [ ] All original content preserved +- [ ] Intake question routes correctly +- [ ] Tested and working + diff --git a/.agents/skills/create-agent-skills/workflows/verify-skill.md b/.agents/skills/create-agent-skills/workflows/verify-skill.md new file mode 100644 index 000000000..997f0829e --- /dev/null +++ b/.agents/skills/create-agent-skills/workflows/verify-skill.md @@ -0,0 +1,204 @@ +# Workflow: Verify Skill Content Accuracy + + +**Read these reference files NOW:** +1. references/skill-structure.md + + + +Audit checks structure. **Verify checks truth.** + +Skills contain claims about external things: APIs, CLI tools, frameworks, services. These change over time. This workflow checks if a skill's content is still accurate. + + + +## Step 1: Select the Skill + +```bash +ls ~/.claude/skills/ +``` + +Present numbered list, ask: "Which skill should I verify for accuracy?" + +## Step 2: Read and Categorize + +Read the entire skill (SKILL.md + workflows/ + references/): +```bash +cat ~/.claude/skills/{skill-name}/SKILL.md +cat ~/.claude/skills/{skill-name}/workflows/*.md 2>/dev/null +cat ~/.claude/skills/{skill-name}/references/*.md 2>/dev/null +``` + +Categorize by primary dependency type: + +| Type | Examples | Verification Method | +|------|----------|---------------------| +| **API/Service** | manage-stripe, manage-gohighlevel | Context7 + WebSearch | +| **CLI Tools** | build-macos-apps (xcodebuild, swift) | Run commands | +| **Framework** | build-iphone-apps (SwiftUI, UIKit) | Context7 for docs | +| **Integration** | setup-stripe-payments | WebFetch + Context7 | +| **Pure Process** | create-agent-skills | No external deps | + +Report: "This skill is primarily [type]-based. I'll verify using [method]." + +## Step 3: Extract Verifiable Claims + +Scan skill content and extract: + +**CLI Tools mentioned:** +- Tool names (xcodebuild, swift, npm, etc.) +- Specific flags/options documented +- Expected output patterns + +**API Endpoints:** +- Service names (Stripe, Meta, etc.) +- Specific endpoints documented +- Authentication methods +- SDK versions + +**Framework Patterns:** +- Framework names (SwiftUI, React, etc.) +- Specific APIs/patterns documented +- Version-specific features + +**File Paths/Structures:** +- Expected project structures +- Config file locations + +Present: "Found X verifiable claims to check." + +## Step 4: Verify by Type + +### For CLI Tools +```bash +# Check tool exists +which {tool-name} + +# Check version +{tool-name} --version + +# Verify documented flags work +{tool-name} --help | grep "{documented-flag}" +``` + +### For API/Service Skills +Use Context7 to fetch current documentation: +``` +mcp__context7__resolve-library-id: {service-name} +mcp__context7__get-library-docs: {library-id}, topic: {relevant-topic} +``` + +Compare skill's documented patterns against current docs: +- Are endpoints still valid? +- Has authentication changed? +- Are there deprecated methods being used? + +### For Framework Skills +Use Context7: +``` +mcp__context7__resolve-library-id: {framework-name} +mcp__context7__get-library-docs: {library-id}, topic: {specific-api} +``` + +Check: +- Are documented APIs still current? +- Have patterns changed? +- Are there newer recommended approaches? + +### For Integration Skills +WebSearch for recent changes: +``` +"[service name] API changes 2025" +"[service name] breaking changes" +"[service name] deprecated endpoints" +``` + +Then Context7 for current SDK patterns. + +### For Services with Status Pages +WebFetch official docs/changelog if available. + +## Step 5: Generate Freshness Report + +Present findings: + +``` +## Verification Report: {skill-name} + +### โœ… Verified Current +- [Claim]: [Evidence it's still accurate] + +### โš ๏ธ May Be Outdated +- [Claim]: [What changed / newer info found] + โ†’ Current: [what docs now say] + +### โŒ Broken / Invalid +- [Claim]: [Why it's wrong] + โ†’ Fix: [What it should be] + +### โ„น๏ธ Could Not Verify +- [Claim]: [Why verification wasn't possible] + +--- +**Overall Status:** [Fresh / Needs Updates / Significantly Stale] +**Last Verified:** [Today's date] +``` + +## Step 6: Offer Updates + +If issues found: + +"Found [N] items that need updating. Would you like me to:" + +1. **Update all** - Apply all corrections +2. **Review each** - Show each change before applying +3. **Just the report** - No changes + +If updating: +- Make changes based on verified current information +- Add verification date comment if appropriate +- Report what was updated + +## Step 7: Suggest Verification Schedule + +Based on skill type, recommend: + +| Skill Type | Recommended Frequency | +|------------|----------------------| +| API/Service | Every 1-2 months | +| Framework | Every 3-6 months | +| CLI Tools | Every 6 months | +| Pure Process | Annually | + +"This skill should be re-verified in approximately [timeframe]." + + + +## Quick Verification Commands + +**Check if CLI tool exists and get version:** +```bash +which {tool} && {tool} --version +``` + +**Context7 pattern for any library:** +``` +1. resolve-library-id: "{library-name}" +2. get-library-docs: "{id}", topic: "{specific-feature}" +``` + +**WebSearch patterns:** +- Breaking changes: "{service} breaking changes 2025" +- Deprecations: "{service} deprecated API" +- Current best practices: "{framework} best practices 2025" + + + +Verification is complete when: +- [ ] Skill categorized by dependency type +- [ ] Verifiable claims extracted +- [ ] Each claim checked with appropriate method +- [ ] Freshness report generated +- [ ] Updates applied (if requested) +- [ ] User knows when to re-verify + diff --git a/.agents/skills/create-ui-components/SKILL.md b/.agents/skills/create-ui-components/SKILL.md new file mode 100644 index 000000000..2731d795c --- /dev/null +++ b/.agents/skills/create-ui-components/SKILL.md @@ -0,0 +1,67 @@ +--- +name: create-ui-components +description: Build polished, accessible UI components with animations and forms in React Native. Use when creating new components, adding animations, building forms, or polishing existing UI. Covers composition patterns, motion design, form handling with react-hook-form/Zod, and project-specific conventions. +--- + + + +**1. Composition over inheritance.** Follow the [components.build](https://www.components.build/) spec. Use compound components, render props, `asChild` polymorphism, and controlled/uncontrolled patterns. Check existing libraries (RNR โ†’ Primitives โ†’ Expo SDK) before building custom. + +**2. Every animation serves a purpose.** Animate to orient users, connect states, guide attention, or enhance perceptionโ€”never for decoration. Use custom easing from `@constants/animations.ts`. Keep under 500ms. Exit faster than enter. Respect `useReducedMotion()`. + +**3. Accessible by default.** Keyboard navigation, focus management, ARIA attributes, color contrast, and reduced motion support are not optionalโ€”they're baseline. + +**4. Project conventions are non-negotiable.** +- NativeWind styling, no margin (use flex + gap), `cn()` for classnames +- React 19: `ref` as prop, no `forwardRef` +- Icons: `lucide-react-native` with `` +- Loading: `ActivityIndicator` only +- Worklets: `scheduleOnRN` with function references (never inline arrows) +- No ESLint disable comments (breaks React Compiler) + + + + +What would you like to do? + +1. **Build a new component** โ€” Create a component from scratch with proper architecture +2. **Add animation** โ€” Add purposeful motion to an existing component +3. **Build a form** โ€” Create a form with validation, submission, and proper UX +4. **Polish existing UI** โ€” Improve animations, transitions, and delight on existing screens + +**Wait for response before proceeding.** + + + +| Response | Workflow | +|----------|----------| +| 1, "build", "create", "new component", "component" | `workflows/build-component.md` | +| 2, "animate", "animation", "motion", "transition" | `workflows/add-animation.md` | +| 3, "form", "input", "validation", "submit" | `workflows/build-form.md` | +| 4, "polish", "improve", "refine", "delight", "ux" | `workflows/polish-ui.md` | + +**After reading the workflow, follow it exactly.** + + + +All domain knowledge in `references/`: + +**Architecture:** component-architecture.md โ€” Composition patterns, accessibility, existing component libraries, props API, data attributes + +**Animation Design:** animation-principles.md โ€” UX philosophy, purpose of motion, progressive disclosure, tray system, fluidity, delight-impact curve, transition checklist + +**Animation Code:** animation-technical.md โ€” Easing, timing, springs, clip-path, performance, reduced motion, good vs great comparison + +**Forms:** form-patterns.md โ€” react-hook-form + Zod structure, field rendering, drawer forms, keyboard handling, validation patterns, optimistic updates, analytics masking + +**Conventions:** project-conventions.md โ€” Styling rules, icons, React 19, theming, worklet threading, React Compiler + + + +| Workflow | Purpose | +|----------|---------| +| build-component.md | Create new component with proper architecture and accessibility | +| add-animation.md | Add purposeful motion to existing components | +| build-form.md | Build form with validation, submission, and keyboard handling | +| polish-ui.md | Audit and improve animations, transitions, and delight | + diff --git a/.agents/skills/create-ui-components/references/animation-principles.md b/.agents/skills/create-ui-components/references/animation-principles.md new file mode 100644 index 000000000..6cb3a30de --- /dev/null +++ b/.agents/skills/create-ui-components/references/animation-principles.md @@ -0,0 +1,135 @@ + +Animation UX philosophy and design principles. Covers the "why" behind animationsโ€”when to animate, what purpose motion serves, and how to create interfaces that feel alive without overwhelming users. + + + +Three guiding principles: + +- **Simplicity:** Hide complexity until needed. Accessible by default. +- **Fluidity:** Maintain continuity through seamless transitions. Users are never lost. +- **Delight:** Foster meaningful emotional connections. Make software feel human. + +This respects the user's time, intelligence, and experience. + + + +Before animating, ask _why_: + +- **Be Useful:** Serve a real goal. Making users happy is also useful. +- **Connect States:** Link actions to consequences, showing clear relationships between states. +- **Keep Users Oriented:** Visually explain where users are in the interface. +- **Guide Attention:** Notify users of changes or draw focus to important elements. +- **Tell a Story:** Convey ideas and provide context better than static elements. +- **Enhance Perception:** Improve how fast and responsive interfaces feel. Perception of speed > actual performance. + + + +Make complex products accessible without sacrificing depth: + +- Put fundamentals at users' fingertips +- Everything else appears as it becomes most relevant +- Distill overwhelming actions into manageable interactions +- The compact nature of each step signals approachability + +**The Room Metaphor:** +> "Imagine seeing parts of a room through an open doorway. From a few metres away, you catch a glimpse of what's inside. As you approach and enter, the space and its contents are gradually revealed." + +Each user action makes the interface unfold. Users see where they're going as they go there. + + + +Components housed within trays that expand, contract, and adapt: + +**Tray Rules:** +- **User-initiated:** Trays appear from tapping buttons, icons, or opening notifications +- **Height variation:** Each subsequent tray varies in height to make progression clear +- **Single focus:** Each tray is dedicated to one piece of content or one primary action +- **Title + dismiss:** Every tray has a title capturing its function and an icon for dismissal +- **Context preservation:** Trays overlay content onto the current interfaceโ€”users aren't veering off course + +**When to Use Trays vs Full Screens:** +- Use trays for transient actions that don't need permanent display +- Especially helpful for confirmation steps and warnings at the right time +- Trays can serve as starting points for flows that transition to full screen + + + +A fluid interface feels like moving through waterโ€”you float rather than walk. + +**Purpose of Motion:** +- Each animation serves an architectural purpose +- Motion aids understanding of the path from A โ†’ B +- Every movement feels like a logical step forward + +**Patterns for Fluidity:** +- **Directional awareness:** Switching tabs โ†’ transition moves in tab direction. "We fly instead of teleport." +- **Icon transformations:** Transform chevrons during flows (e.g., chevron โ†’ back arrow) +- **Text morphing:** Visually morph button labels (Continue โ†’ Confirm) using shared letters + +**Anti-Redundancy Principle:** +> "If a component is visible and will persist in the next phase, it should remain consistent." + +Components should "travel" between screens rather than disappear and reappear. Examples: +- Cards move seamlessly between screens +- Empty states keep unchanged text constant +- Same element animates into its new position rather than fading out/in + + + +Create moments that resonate on a personal level. + +**Foundation:** Achieve consistent polish everywhere first. Users notice unpolished corners. +> "It's like going to a fancy restaurant but finding it has a dirty bathroom." + +**Delight-Impact Curve:** + +| Feature Frequency | Delight Strategy | +|---|---| +| Daily use | Small, efficient touches that don't become tiresome | +| Occasional use | Satisfying interactions that reward exploration | +| Rare use | Memorable, celebration-worthy moments | + +The "specialness of a moment" decreases with repeated encounters. Rare features benefit most from delightful surprises. + +**Surprise and Novelty:** +- Easter eggs discovered unexpectedly are strongly associated with delightful products +- Hide magical moments in plain sight +- The discovery process itself creates delight + +**Match Intensity to Frequency:** +- **High-frequency:** Commas shift place-to-place when inputting numbers (subtle) +- **Medium-frequency:** Drag-and-drop with attractive stacking animations (satisfying) +- **Low-frequency:** Wallet setup animation, confetti on backup completion, trash can with sound effects (memorable) + + + +> "When my banking app displays a glitchy animation while accessing my checking account, it erodes my trust." + +Consistent, smooth interactions communicate: "I know exactly what you needโ€”let me get that for you..." + + + +1. Map all potential paths before designing +2. Vary tray heights to make step progression clear +3. Keep each step singularly focused on one content piece or action +4. Preserve context by overlaying rather than replacing +5. Use motion to show direction and relationship between steps + + + +- Does this transition show where the user came from? +- Does it show where they're going? +- Are persistent elements traveling smoothly (not duplicating)? +- Is there directional awareness? +- Could text labels morph rather than switch instantly? + + + +When implementing a feature, ask: + +1. How frequently will users encounter this? +2. What's the appropriate intensity of delight? +3. Is there an opportunity for surprise/discovery? +4. Does this feel human and responsive? +5. Is the rest of the app polished enough to support this moment? + diff --git a/.agents/skills/create-ui-components/references/animation-technical.md b/.agents/skills/create-ui-components/references/animation-technical.md new file mode 100644 index 000000000..3ab9e79e0 --- /dev/null +++ b/.agents/skills/create-ui-components/references/animation-technical.md @@ -0,0 +1,177 @@ + +Technical animation implementation: easing, timing, springs, performance, and accessibility. Covers the "how" of building polished animations in React Native. + + + +- Default to `ease-out` for most animations +- Never longer than 1s (unless illustrative); most under 500ms +- Release/exit animations faster than enter (e.g., 200ms exit vs 300ms enter) +- Make things _feel_ snappyโ€”perception matters more than raw numbers + + + +- Don't use built-in CSS easings unless `ease` or `linear` +- Built-in easings lack "energy"โ€”use custom sharp curves +- **Default: Ease-Out** โ€” kicks off immediately, provides real-time feedback +- **Consider Ease-In-Out** โ€” for elements that move and scale but stay on screen +- **Avoid Linear** โ€” feels unnatural; avoid in 99% of cases + +Use custom easing curves from `@constants/animations.ts`: +- Import `easeOut`, `easeInOut`, `easeSnappy`, or `easeSpring` +- Use with React Native Reanimated animations + + + +Always add subtle scale-down on press for immediate feedback: + +```css +.button { + transition: transform 160ms ease-out; +} +.button:active { + transform: scale(0.97); +} +``` + +Makes UI feel responsive and "listening" to the user. + + + +Don't animate from `scale(0)`. Start from slightly larger: + +```css +/* Bad */ +@keyframes appear { + from { transform: scale(0); } + to { transform: scale(1); } +} + +/* Good */ +@keyframes appear { + from { transform: scale(0.9); opacity: 0; } + to { transform: scale(1); opacity: 1; } +} +``` + + + +Set `transform-origin` to match the trigger point: + +```css +/* Dropdown from right-aligned button */ +.dropdown { transform-origin: top right; } + +/* Popover from bottom */ +.popover { transform-origin: bottom center; } +``` + + + +- Add 300-500ms delay for first tooltip to prevent accidental activation +- Subsequent tooltips appear instantly while user is exploring +- Prevents tooltip "flickering" on mouse movement + + + +Use `clip-path` for smooth reveal animations. Hardware-accelerated, doesn't affect layout: + +```css +.overlay { + clip-path: inset(0px 100% 0px 0px); /* Hidden */ + transition: clip-path 200ms ease-out; +} +.overlay.revealed { + clip-path: inset(0px 0px 0px 0px); /* Visible */ +} +``` + +**Hold to Delete Pattern:** + +```jsx + +``` + +```css +.hold-overlay { + position: absolute; + inset: 0; + clip-path: inset(0px 100% 0px 0px); + transition: clip-path 200ms ease-out; /* Fast release */ + background: var(--destructive); +} +.button:active .hold-overlay { + clip-path: inset(0px 0px 0px 0px); + transition: clip-path 2s linear; /* Slow fill on hold */ +} +``` + + + +For interactive elements, spring physics feel more natural than duration-based: + +- Springs respond to velocity (dragging fast = more bounce) +- No fixed durationโ€”they settle naturally +- Use React Native Reanimated for spring animations + + + +- **Prefer opacity & transform:** Animate exclusively `opacity` and `transform` for 60 FPS +- **Avoid** animating `width`, `height`, `padding`, `margin`โ€”they cause layout thrash +- Use `clip-path` for reveal effects instead of changing dimensions +- Use `will-change` sparinglyโ€”only on elements about to animate and only if experiencing performance issues +- **SVG:** When opacity and transform aren't enough, SVG provides smoother sub-pixel interpolation +- **Inlined assets:** Inline SVG illustrations to reduce HTTP requests and improve perceived performance + + + +- Transforms are GPU-accelerated, no layout recalculation +- Prefer `transform` over `top`/`left`/`width`/`height` for animations +- Combine in single property: `transform: translateX(10px) scale(0.95) rotate(2deg)` +- Order matters: transforms applied right to left + + + +- Use `transform: translateX()` or `translateY()` for slide animations +- Add backdrop with fade animation +- Handle swipe-to-dismiss with velocity detection +- Snap to open/closed states based on drag distance and velocity + + + +- Stack multiple toasts with staggered positioning +- Enter animations from screen edge +- Exit faster than enter +- Consider hover-to-pause auto-dismiss behavior + + + +**Respect user's reduced motion preferences using React Native Reanimated:** + +- `ReduceMotion` enum (`System`, `Always`, `Never`) for configuring animation behavior +- `reduceMotion` option in animation functions (`withTiming`, `withSpring`, `withDelay`, etc.) +- `.reduceMotion()` method on layout animations (entering/exiting) +- `useReducedMotion()` hook for conditional animation logic + +**Reference:** [React Native Reanimated Accessibility Guide](https://docs.swmansion.com/react-native-reanimated/docs/guides/accessibility/) + + + +| Good | Great | +|---|---| +| Generic easing | Custom easing curves | +| Center origin | Origin-aware (from trigger) | +| Same speed in/out | Fast exit, slower enter | +| Abrupt start/end | Smooth acceleration | +| Single property | Orchestrated multiple properties | + + + +- Trays adapt to current context (dark-themed flows = darker trays) +- Maintain visual consistency across the experience +- Let the interface feel alive and responsive to its environment + diff --git a/.agents/skills/create-ui-components/references/component-architecture.md b/.agents/skills/create-ui-components/references/component-architecture.md new file mode 100644 index 000000000..ce76aaeed --- /dev/null +++ b/.agents/skills/create-ui-components/references/component-architecture.md @@ -0,0 +1,134 @@ + +Component architecture patterns for building composable, accessible, reusable UI in React Native. Follows the components.build specification and Radix composition pattern. + + + +Understand the hierarchy: + +1. **Primitive** - Lowest-level building block providing behavior and accessibility without styling (e.g., Radix UI Primitives) +2. **Component** - Styled, reusable UI unit that adds visual design to primitives (e.g., shadcn/ui components) +3. **Pattern** - Specific composition solving a UI/UX problem (e.g., form validation with inline errors) + + + +**Decision order when building features:** + +1. **Check existing UI components** (in order): + - [React Native Reusables](https://reactnativereusables.com/docs) - UI components + - [React Native Primitives](https://rn-primitives.vercel.app/) - Radix primitives + - [RNR Community Resources](https://github.com/founded-labs/react-native-reusables/blob/main/COMMUNITY_RESOURCES.md) + +2. **Check Expo SDK** - [Expo SDK docs](https://docs.expo.dev/versions/latest/) for native APIs + +3. **Only then** consider third-party libraries or custom components. + + + + + +- **Children** (implicit slot): JSX between opening/closing tags +- **Named slots**: Props like `icon`, `footer`, or `` subcomponents +- **Slot forwarding**: Pass DOM attributes/className/refs through to underlying element + + + +Use when parent must own data/behavior but consumer controls markup: + +```tsx + + {(item) => } + +``` + + + +Use separate component imports to compose complex UI (shadcn-style): + +```tsx +import { + Card, + CardHeader, + CardContent, + CardFooter +} from '@/components/ui/card'; + + + Title + Body + Actions +; +``` + + + +- **Controlled**: Value driven by props, emits `onChange` (source of truth is parent) +- **Uncontrolled**: Holds internal state, may expose `defaultValue` and imperative reset +- Many inputs should support both patterns + + + +Use `asChild` prop to render as a different element: + +```tsx + +``` + +Renders as `` instead of `