diff --git a/.eslintrc.js b/.eslintrc.js index dcf0be0..e1ab5cb 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,12 +5,17 @@ module.exports = { plugins: ['@typescript-eslint'], overrides: [ { - files: ['*.ts', '*.tsx'], + files: ['*.ts', '*.tsx', '*.js'], rules: { '@typescript-eslint/no-shadow': ['error'], 'no-shadow': 'off', 'no-undef': 'off', + semi: 'off', + curly: 'off', + 'react/react-in-jsx-scope': 'off', + 'react-native/no-inline-styles': 'off', + 'no-spaced-func': 'off', }, }, ], -}; +} diff --git a/.prettierrc.js b/.prettierrc.js index 2b54074..a6271df 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -4,4 +4,5 @@ module.exports = { bracketSpacing: false, singleQuote: true, trailingComma: 'all', + semi: false, }; diff --git a/App.tsx b/App.tsx index 7e5ce15..8b62db0 100644 --- a/App.tsx +++ b/App.tsx @@ -2,23 +2,22 @@ import { DarkTheme as NavigationDarkTheme, DefaultTheme as NavigationDefaultTheme, NavigationContainer, -} from '@react-navigation/native'; -import React, {useEffect, useMemo, useState} from 'react'; -import {useColorScheme} from 'react-native'; +} from '@react-navigation/native' +import {useEffect, useMemo, useState} from 'react' +import {DeviceEventEmitter, useColorScheme} from 'react-native' +import React from 'react' import { DarkTheme as PaperDarkTheme, DefaultTheme as PaperDefaultTheme, - Provider, -} from 'react-native-paper'; -import MaterialIcon from 'react-native-vector-icons/MaterialIcons'; -import {Color} from './color'; -import {lightColors} from './colors'; -import {runMigrations} from './db'; -import MassiveSnack from './MassiveSnack'; -import Routes from './Routes'; -import Settings from './settings'; -import {getSettings} from './settings.service'; -import {SettingsContext} from './use-settings'; + Provider as PaperProvider, + Snackbar, +} from 'react-native-paper' +import MaterialIcon from 'react-native-vector-icons/MaterialIcons' +import {AppDataSource} from './data-source' +import {settingsRepo} from './db' +import Routes from './Routes' +import {TOAST} from './toast' +import {ThemeContext} from './use-theme' export const CombinedDefaultTheme = { ...NavigationDefaultTheme, @@ -27,7 +26,7 @@ export const CombinedDefaultTheme = { ...NavigationDefaultTheme.colors, ...PaperDefaultTheme.colors, }, -}; +} export const CombinedDarkTheme = { ...NavigationDarkTheme, @@ -35,61 +34,85 @@ export const CombinedDarkTheme = { colors: { ...NavigationDarkTheme.colors, ...PaperDarkTheme.colors, - primary: lightColors[0].hex, - background: '#0E0E0E', }, -}; +} const App = () => { - const isDark = useColorScheme() === 'dark'; - const [settings, setSettings] = useState(); - const [color, setColor] = useState( + const isDark = useColorScheme() === 'dark' + const [initialized, setInitialized] = useState(false) + const [snackbar, setSnackbar] = useState('') + const [theme, setTheme] = useState('system') + + const [color, setColor] = useState( isDark - ? CombinedDarkTheme.colors.primary.toUpperCase() - : CombinedDefaultTheme.colors.primary.toUpperCase(), - ); + ? CombinedDarkTheme.colors.primary + : CombinedDefaultTheme.colors.primary, + ) useEffect(() => { - runMigrations().then(async () => { - const gotSettings = await getSettings(); - console.log(`${App.name}.runMigrations:`, {gotSettings}); - setSettings(gotSettings); - if (gotSettings.color) setColor(gotSettings.color); - }); - }, [setColor]); + DeviceEventEmitter.addListener(TOAST, ({value}: {value: string}) => { + console.log(`${Routes.name}.toast:`, {value}) + setSnackbar(value) + }) + if (AppDataSource.isInitialized) return setInitialized(true) + AppDataSource.initialize().then(async () => { + const settings = await settingsRepo.findOne({where: {}}) + console.log(`${App.name}.useEffect:`, {gotSettings: settings}) + setTheme(settings.theme) + setColor(settings.color) + setInitialized(true) + }) + }, []) - const theme = useMemo(() => { - const darkTheme = { - ...CombinedDarkTheme, - colors: {...CombinedDarkTheme.colors, primary: color}, - }; - const lightTheme = { - ...CombinedDefaultTheme, - colors: {...CombinedDefaultTheme.colors, primary: color}, - }; - let value = isDark ? darkTheme : lightTheme; - if (settings?.theme === 'dark') value = darkTheme; - else if (settings?.theme === 'light') value = lightTheme; - return value; - }, [color, isDark, settings]); + const paperTheme = useMemo(() => { + const darkTheme = color + ? { + ...CombinedDarkTheme, + colors: {...CombinedDarkTheme.colors, primary: color}, + } + : CombinedDarkTheme + const lightTheme = color + ? { + ...CombinedDefaultTheme, + colors: {...CombinedDefaultTheme.colors, primary: color}, + } + : CombinedDefaultTheme + let value = isDark ? darkTheme : lightTheme + if (theme === 'dark') value = darkTheme + else if (theme === 'light') value = lightTheme + return value + }, [isDark, theme, color]) + + const action = useMemo( + () => ({ + label: 'Close', + onPress: () => setSnackbar(''), + color: paperTheme.colors.background, + }), + [paperTheme.colors.background], + ) return ( - - }}> - - - {settings && ( - - - - )} - - - - - ); -}; + }}> + + {initialized && ( + + + + )} + -export default App; + setSnackbar('')} + visible={!!snackbar} + action={action}> + {snackbar} + + + ) +} + +export default App diff --git a/BestList.tsx b/BestList.tsx index 6e982f3..6118c3e 100644 --- a/BestList.tsx +++ b/BestList.tsx @@ -2,45 +2,70 @@ import { NavigationProp, useFocusEffect, useNavigation, -} from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; -import {FlatList, Image} from 'react-native'; -import {List} from 'react-native-paper'; -import {getBestReps, getBestWeights} from './best.service'; -import {BestPageParams} from './BestPage'; -import DrawerHeader from './DrawerHeader'; -import Page from './Page'; -import Set from './set'; -import {useSettings} from './use-settings'; +} from '@react-navigation/native' +import {useCallback, useState} from 'react' +import {FlatList, Image} from 'react-native' +import {List} from 'react-native-paper' +import {BestPageParams} from './BestPage' +import {setRepo, settingsRepo} from './db' +import DrawerHeader from './DrawerHeader' +import GymSet from './gym-set' +import Page from './Page' +import Settings from './settings' export default function BestList() { - const [bests, setBests] = useState(); - const [search, setSearch] = useState(''); - const navigation = useNavigation>(); - const {settings} = useSettings(); - - const refresh = useCallback(async () => { - const weights = await getBestWeights(search); - console.log(`${BestList.name}.refresh:`, {length: weights.length}); - let newBest: Set[] = []; - for (const set of weights) { - const reps = await getBestReps(set.name, set.weight); - newBest.push(...reps); - } - setBests(newBest); - }, [search]); + const [bests, setBests] = useState() + const [term, setTerm] = useState('') + const navigation = useNavigation>() + const [settings, setSettings] = useState() useFocusEffect( useCallback(() => { - refresh(); - }, [refresh]), - ); + settingsRepo.findOne({where: {}}).then(setSettings) + }, []), + ) - useEffect(() => { - refresh(); - }, [search, refresh]); + const refresh = useCallback(async (value: string) => { + const weights = await setRepo + .createQueryBuilder() + .select() + .addSelect('MAX(weight)', 'weight') + .where('name LIKE :name', {name: `%${value}%`}) + .andWhere('NOT hidden') + .groupBy('name') + .getMany() + console.log(`${BestList.name}.refresh:`, {length: weights.length}) + let newBest: GymSet[] = [] + for (const set of weights) { + const reps = await setRepo + .createQueryBuilder() + .select() + .addSelect('MAX(reps)', 'reps') + .where('name = :name', {name: set.name}) + .andWhere('weight = :weight', {weight: set.weight}) + .andWhere('NOT hidden') + .groupBy('name') + .getMany() + newBest.push(...reps) + } + setBests(newBest) + }, []) - const renderItem = ({item}: {item: Set}) => ( + useFocusEffect( + useCallback(() => { + refresh(term) + }, [refresh, term]), + ) + + const search = useCallback( + (value: string) => { + setTerm(value) + refresh(value) + }, + [refresh], + ) + + const renderItem = ({item}: {item: GymSet}) => ( - ); + ) return ( <> - + {bests?.length === 0 ? ( - ); + ) } diff --git a/BestPage.tsx b/BestPage.tsx index f3af6b1..697b20f 100644 --- a/BestPage.tsx +++ b/BestPage.tsx @@ -1,16 +1,15 @@ -import {createStackNavigator} from '@react-navigation/stack'; -import React from 'react'; -import BestList from './BestList'; -import Set from './set'; -import ViewBest from './ViewBest'; +import {createStackNavigator} from '@react-navigation/stack' +import BestList from './BestList' +import GymSet from './gym-set' +import ViewBest from './ViewBest' -const Stack = createStackNavigator(); +const Stack = createStackNavigator() export type BestPageParams = { - BestList: {}; + BestList: {} ViewBest: { - best: Set; - }; -}; + best: GymSet + } +} export default function BestPage() { return ( @@ -19,5 +18,5 @@ export default function BestPage() { - ); + ) } diff --git a/Chart.tsx b/Chart.tsx index 35db05f..75fe5ec 100644 --- a/Chart.tsx +++ b/Chart.tsx @@ -1,12 +1,11 @@ -import * as shape from 'd3-shape'; -import React from 'react'; -import {View} from 'react-native'; -import {Grid, LineChart, XAxis, YAxis} from 'react-native-svg-charts'; -import {CombinedDarkTheme, CombinedDefaultTheme} from './App'; -import {useColor} from './color'; -import {MARGIN, PADDING} from './constants'; -import Set from './set'; -import useDark from './use-dark'; +import {useTheme} from '@react-navigation/native' +import * as shape from 'd3-shape' +import {View} from 'react-native' +import {Grid, LineChart, XAxis, YAxis} from 'react-native-svg-charts' +import {CombinedDarkTheme, CombinedDefaultTheme} from './App' +import {MARGIN, PADDING} from './constants' +import GymSet from './gym-set' +import useDark from './use-dark' export default function Chart({ yData, @@ -14,21 +13,21 @@ export default function Chart({ xData, yFormat, }: { - yData: number[]; - xData: Set[]; - xFormat: (value: any, index: number) => string; - yFormat: (value: any) => string; + yData: number[] + xData: GymSet[] + xFormat: (value: any, index: number) => string + yFormat: (value: any) => string }) { - const {color} = useColor(); - const dark = useDark(); + const {colors} = useTheme() + const dark = useDark() const axesSvg = { fontSize: 10, fill: dark ? CombinedDarkTheme.colors.text : CombinedDefaultTheme.colors.text, - }; - const verticalContentInset = {top: 10, bottom: 10}; - const xAxisHeight = 30; + } + const verticalContentInset = {top: 10, bottom: 10} + const xAxisHeight = 30 return ( <> @@ -47,7 +46,7 @@ export default function Chart({ contentInset={verticalContentInset} curve={shape.curveBasis} svg={{ - stroke: color, + stroke: colors.primary, }}> @@ -61,5 +60,5 @@ export default function Chart({ - ); + ) } diff --git a/ConfirmDialog.tsx b/ConfirmDialog.tsx index adb08da..7b68b97 100644 --- a/ConfirmDialog.tsx +++ b/ConfirmDialog.tsx @@ -1,5 +1,4 @@ -import React from 'react'; -import {Button, Dialog, Portal, Text} from 'react-native-paper'; +import {Button, Dialog, Portal, Text} from 'react-native-paper' export default function ConfirmDialog({ title, @@ -8,11 +7,11 @@ export default function ConfirmDialog({ show, setShow, }: { - title: string; - children: JSX.Element | JSX.Element[] | string; - onOk: () => void; - show: boolean; - setShow: (show: boolean) => void; + title: string + children: JSX.Element | JSX.Element[] | string + onOk: () => void + show: boolean + setShow: (show: boolean) => void }) { return ( @@ -27,5 +26,5 @@ export default function ConfirmDialog({ - ); + ) } diff --git a/DrawerHeader.tsx b/DrawerHeader.tsx index 34c90d3..3f41d3a 100644 --- a/DrawerHeader.tsx +++ b/DrawerHeader.tsx @@ -1,18 +1,23 @@ -import {DrawerNavigationProp} from '@react-navigation/drawer'; -import {useNavigation} from '@react-navigation/native'; -import React from 'react'; -import {Appbar, IconButton} from 'react-native-paper'; -import {DrawerParamList} from './drawer-param-list'; -import DrawerMenu from './DrawerMenu'; +import {DrawerNavigationProp} from '@react-navigation/drawer' +import {useNavigation} from '@react-navigation/native' +import {Appbar, IconButton} from 'react-native-paper' +import {DrawerParamList} from './drawer-param-list' +import DrawerMenu from './DrawerMenu' +import useDark from './use-dark' export default function DrawerHeader({name}: {name: keyof DrawerParamList}) { - const navigation = useNavigation>(); + const navigation = useNavigation>() + const dark = useDark() return ( - + - ); + ) } diff --git a/DrawerMenu.tsx b/DrawerMenu.tsx index 2c8734c..0189025 100644 --- a/DrawerMenu.tsx +++ b/DrawerMenu.tsx @@ -1,67 +1,75 @@ -import {NavigationProp, useNavigation} from '@react-navigation/native'; -import React, {useCallback, useState} from 'react'; -import DocumentPicker from 'react-native-document-picker'; -import {FileSystem} from 'react-native-file-access'; -import {Divider, IconButton, Menu} from 'react-native-paper'; -import ConfirmDialog from './ConfirmDialog'; -import {DrawerParamList} from './drawer-param-list'; -import {useSnackbar} from './MassiveSnack'; -import {Plan} from './plan'; -import {addPlans, deletePlans, getAllPlans} from './plan.service'; -import {addSets, deleteSets, getAllSets} from './set.service'; -import {write} from './write'; +import {NavigationProp, useNavigation} from '@react-navigation/native' +import {useCallback, useState} from 'react' +import DocumentPicker from 'react-native-document-picker' +import {FileSystem} from 'react-native-file-access' +import {Divider, IconButton, Menu} from 'react-native-paper' +import ConfirmDialog from './ConfirmDialog' +import {AppDataSource} from './data-source' +import {planRepo} from './db' +import {DrawerParamList} from './drawer-param-list' +import GymSet from './gym-set' +import {Plan} from './plan' +import {toast} from './toast' +import useDark from './use-dark' +import {write} from './write' -const setFields = - 'id,name,reps,weight,created,unit,hidden,sets,minutes,seconds'; -const planFields = 'id,days,workouts'; +const setFields = 'id,name,reps,weight,created,unit,hidden,sets,minutes,seconds' +const planFields = 'id,days,workouts' +const setRepo = AppDataSource.manager.getRepository(GymSet) export default function DrawerMenu({name}: {name: keyof DrawerParamList}) { - const [showMenu, setShowMenu] = useState(false); - const [showRemove, setShowRemove] = useState(false); - const {toast} = useSnackbar(); - const {reset} = useNavigation>(); + const [showMenu, setShowMenu] = useState(false) + const [showRemove, setShowRemove] = useState(false) + const {reset} = useNavigation>() + const dark = useDark() const exportSets = useCallback(async () => { - const sets = await getAllSets(); + const sets = await setRepo.find({}) const data = [setFields] .concat( - sets.map( - set => - `${set.id},${set.name},${set.reps},${set.weight},${set.created},${set.unit},${set.hidden},${set.sets},${set.minutes},${set.seconds}`, + sets.map(set => + setFields + .split(',') + .map(fieldString => { + const field = fieldString as keyof GymSet + if (field === 'unit') return set[field] || 'kg' + return set[field] + }) + .join(','), ), ) - .join('\n'); - console.log(`${DrawerMenu.name}.exportSets`, {length: sets.length}); - await write('sets.csv', data); - }, []); + .join('\n') + console.log(`${DrawerMenu.name}.exportSets`, {length: sets.length}) + await write('sets.csv', data) + }, []) const exportPlans = useCallback(async () => { - const plans: Plan[] = await getAllPlans(); + const plans = await planRepo.find({}) const data = [planFields] .concat(plans.map(set => `"${set.id}","${set.days}","${set.workouts}"`)) - .join('\n'); - console.log(`${DrawerMenu.name}.exportPlans`, {length: plans.length}); - await write('plans.csv', data); - }, []); + .join('\n') + console.log(`${DrawerMenu.name}.exportPlans`, {length: plans.length}) + await write('plans.csv', data) + }, []) const download = useCallback(async () => { - setShowMenu(false); - if (name === 'Home') exportSets(); - else if (name === 'Plans') exportPlans(); - }, [name, exportSets, exportPlans]); + setShowMenu(false) + if (name === 'Home') exportSets() + else if (name === 'Plans') exportPlans() + }, [name, exportSets, exportPlans]) const uploadSets = useCallback(async () => { - const result = await DocumentPicker.pickSingle(); - const file = await FileSystem.readFile(result.uri); - console.log(`${DrawerMenu.name}.${uploadSets.name}:`, file.length); - const lines = file.split('\n'); - console.log(lines[0]); - if (!setFields.includes(lines[0])) return toast('Invalid csv.', 3000); + const result = await DocumentPicker.pickSingle() + const file = await FileSystem.readFile(result.uri) + console.log(`${DrawerMenu.name}.uploadSets:`, file.length) + const lines = file.split('\n') + console.log(lines[0]) + if (!setFields.includes(lines[0])) return toast('Invalid csv.') const values = lines .slice(1) .filter(line => line) - .map(set => { - const [ + .map(line => { + let [ , setName, reps, @@ -72,23 +80,33 @@ export default function DrawerMenu({name}: {name: keyof DrawerParamList}) { sets, minutes, seconds, - ] = set.split(','); - return `('${setName}',${reps},${weight},'${created}','${unit}',${hidden},${ - sets ?? 3 - },${minutes ?? 3},${seconds ?? 30})`; + ] = line.split(',') + const set: GymSet = { + name: setName, + reps: +reps, + weight: +weight, + created, + unit: unit ?? 'kg', + hidden: !!Number(hidden), + sets: +sets, + minutes: +minutes, + seconds: +seconds, + image: '', + } + return set }) - .join(','); - await addSets(setFields.split(',').slice(1).join(','), values); - toast('Data imported.', 3000); - reset({index: 0, routes: [{name}]}); - }, [reset, name, toast]); + console.log(`${DrawerMenu.name}.uploadSets:`, {values}) + await setRepo.insert(values) + toast('Data imported.') + reset({index: 0, routes: [{name}]}) + }, [reset, name]) const uploadPlans = useCallback(async () => { - const result = await DocumentPicker.pickSingle(); - const file = await FileSystem.readFile(result.uri); - console.log(`${DrawerMenu.name}.uploadPlans:`, file.length); - const lines = file.split('\n'); - if (lines[0] != planFields) return toast('Invalid csv.', 3000); + const result = await DocumentPicker.pickSingle() + const file = await FileSystem.readFile(result.uri) + console.log(`${DrawerMenu.name}.uploadPlans:`, file.length) + const lines = file.split('\n') + if (lines[0] !== planFields) return toast('Invalid csv.') const values = file .split('\n') .slice(1) @@ -96,29 +114,32 @@ export default function DrawerMenu({name}: {name: keyof DrawerParamList}) { .map(set => { const [, days, workouts] = set .split('","') - .map(cell => cell.replace(/"/g, '')); - return `('${days}','${workouts}')`; + .map(cell => cell.replace(/"/g, '')) + const plan: Plan = { + days, + workouts, + } + return plan }) - .join(','); - await addPlans(values); - toast('Data imported.', 3000); - }, [toast]); + await planRepo.insert(values) + toast('Data imported.') + }, []) const upload = useCallback(async () => { - setShowMenu(false); - if (name === 'Home') await uploadSets(); - else if (name === 'Plans') await uploadPlans(); - reset({index: 0, routes: [{name}]}); - }, [name, uploadPlans, uploadSets, reset]); + setShowMenu(false) + if (name === 'Home') await uploadSets() + else if (name === 'Plans') await uploadPlans() + reset({index: 0, routes: [{name}]}) + }, [name, uploadPlans, uploadSets, reset]) const remove = useCallback(async () => { - setShowMenu(false); - setShowRemove(false); - if (name === 'Home') await deleteSets(); - else if (name === 'Plans') await deletePlans(); - toast('All data has been deleted.', 4000); - reset({index: 0, routes: [{name}]}); - }, [reset, name, toast]); + setShowMenu(false) + setShowRemove(false) + if (name === 'Home') await setRepo.delete({}) + else if (name === 'Plans') await planRepo.delete({}) + toast('All data has been deleted.') + reset({index: 0, routes: [{name}]}) + }, [reset, name]) if (name === 'Home' || name === 'Plans') return ( @@ -126,7 +147,11 @@ export default function DrawerMenu({name}: {name: keyof DrawerParamList}) { visible={showMenu} onDismiss={() => setShowMenu(false)} anchor={ - setShowMenu(true)} icon="more-vert" /> + setShowMenu(true)} + icon="more-vert" + /> }> @@ -144,7 +169,7 @@ export default function DrawerMenu({name}: {name: keyof DrawerParamList}) { This irreversibly deletes all data from the app. Are you sure? - ); + ) - return null; + return null } diff --git a/EditPlan.tsx b/EditPlan.tsx index 0e65214..c86a374 100644 --- a/EditPlan.tsx +++ b/EditPlan.tsx @@ -3,75 +3,72 @@ import { RouteProp, useNavigation, useRoute, -} from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; -import {ScrollView, StyleSheet, View} from 'react-native'; -import {Button, Text} from 'react-native-paper'; -import {MARGIN, PADDING} from './constants'; -import {DrawerParamList} from './drawer-param-list'; -import {PlanPageParams} from './plan-page-params'; -import {addPlan, updatePlan} from './plan.service'; -import {getNames} from './set.service'; -import StackHeader from './StackHeader'; -import Switch from './Switch'; -import {DAYS} from './time'; +} from '@react-navigation/native' +import {useCallback, useEffect, useState} from 'react' +import {ScrollView, StyleSheet, View} from 'react-native' +import {Button, Text} from 'react-native-paper' +import {MARGIN, PADDING} from './constants' +import {planRepo, setRepo} from './db' +import {DrawerParamList} from './drawer-param-list' +import {PlanPageParams} from './plan-page-params' +import StackHeader from './StackHeader' +import Switch from './Switch' +import {DAYS} from './time' export default function EditPlan() { - const {params} = useRoute>(); - const {plan} = params; + const {params} = useRoute>() + const {plan} = params const [days, setDays] = useState( plan.days ? plan.days.split(',') : [], - ); + ) const [workouts, setWorkouts] = useState( plan.workouts ? plan.workouts.split(',') : [], - ); - const [names, setNames] = useState([]); - const navigation = useNavigation>(); + ) + const [names, setNames] = useState([]) + const navigation = useNavigation>() useEffect(() => { - getNames().then(n => { - console.log(EditPlan.name, {n}); - setNames(n); - }); - }, []); + setRepo + .createQueryBuilder() + .select('name') + .distinct(true) + .getRawMany() + .then(values => { + console.log(EditPlan.name, {values}) + setNames(values.map(value => value.name)) + }) + }, []) const save = useCallback(async () => { - console.log(`${EditPlan.name}.save`, {days, workouts, plan}); - if (!days || !workouts) return; - const newWorkouts = workouts.filter(workout => workout).join(','); - const newDays = days.filter(day => day).join(','); - if (typeof plan.id === 'undefined') - await addPlan({days: newDays, workouts: newWorkouts}); - else - await updatePlan({ - days: newDays, - workouts: newWorkouts, - id: plan.id, - }); - navigation.goBack(); - }, [days, workouts, plan, navigation]); + console.log(`${EditPlan.name}.save`, {days, workouts, plan}) + if (!days || !workouts) return + const newWorkouts = workouts.filter(workout => workout).join(',') + const newDays = days.filter(day => day).join(',') + await planRepo.save({days: newDays, workouts: newWorkouts, id: plan.id}) + navigation.goBack() + }, [days, workouts, plan, navigation]) const toggleWorkout = useCallback( (on: boolean, name: string) => { if (on) { - setWorkouts([...workouts, name]); + setWorkouts([...workouts, name]) } else { - setWorkouts(workouts.filter(workout => workout !== name)); + setWorkouts(workouts.filter(workout => workout !== name)) } }, [setWorkouts, workouts], - ); + ) const toggleDay = useCallback( (on: boolean, day: string) => { if (on) { - setDays([...days, day]); + setDays([...days, day]) } else { - setDays(days.filter(d => d !== day)); + setDays(days.filter(d => d !== day)) } }, [setDays, days], - ); + ) return ( <> @@ -110,11 +107,11 @@ export default function EditPlan() { disabled={workouts.length === 0 && days.length === 0} mode="contained" onPress={() => { - navigation.goBack(); + navigation.goBack() navigation.navigate('Workouts', { screen: 'EditWorkout', params: {value: {name: ''}}, - }); + }) }}> Add workout @@ -130,7 +127,7 @@ export default function EditPlan() { )} - ); + ) } const styles = StyleSheet.create({ @@ -138,4 +135,4 @@ const styles = StyleSheet.create({ fontSize: 20, marginBottom: MARGIN, }, -}); +}) diff --git a/EditSet.tsx b/EditSet.tsx index df85154..6a8e73a 100644 --- a/EditSet.tsx +++ b/EditSet.tsx @@ -1,81 +1,78 @@ -import {RouteProp, useNavigation, useRoute} from '@react-navigation/native'; -import React, {useCallback} from 'react'; -import {NativeModules, View} from 'react-native'; -import {PADDING} from './constants'; -import {HomePageParams} from './home-page-params'; -import {useSnackbar} from './MassiveSnack'; -import Set from './set'; -import {addSet, getSet, updateSet} from './set.service'; -import SetForm from './SetForm'; -import {updateSettings} from './settings.service'; -import StackHeader from './StackHeader'; -import {useSettings} from './use-settings'; +import { + RouteProp, + useFocusEffect, + useNavigation, + useRoute, +} from '@react-navigation/native' +import {useCallback, useState} from 'react' +import {NativeModules, View} from 'react-native' +import {PADDING} from './constants' +import {setRepo, settingsRepo} from './db' +import GymSet from './gym-set' +import {HomePageParams} from './home-page-params' +import SetForm from './SetForm' +import Settings from './settings' +import StackHeader from './StackHeader' +import {toast} from './toast' export default function EditSet() { - const {params} = useRoute>(); - const {set} = params; - const navigation = useNavigation(); - const {toast} = useSnackbar(); - const {settings} = useSettings(); + const {params} = useRoute>() + const {set} = params + const navigation = useNavigation() + const [settings, setSettings] = useState() + + useFocusEffect( + useCallback(() => { + settingsRepo.findOne({where: {}}).then(setSettings) + }, []), + ) const startTimer = useCallback( async (name: string) => { - if (!settings.alarm) return; - const {minutes, seconds} = await getSet(name); - const milliseconds = (minutes ?? 3) * 60 * 1000 + (seconds ?? 0) * 1000; - console.log(`startTimer:`, `Starting timer in ${minutes}:${seconds}`); + if (!settings.alarm) return + const {minutes, seconds} = await setRepo.findOne({where: {name}}) + const milliseconds = (minutes ?? 3) * 60 * 1000 + (seconds ?? 0) * 1000 NativeModules.AlarmModule.timer( milliseconds, - !!settings.vibrate, + settings.vibrate, settings.sound, - !!settings.noSound, - ); - const nextAlarm = new Date(); - nextAlarm.setTime(nextAlarm.getTime() + milliseconds); - updateSettings({...settings, nextAlarm: nextAlarm.toISOString()}); + settings.noSound, + ) }, [settings], - ); - - const update = useCallback( - async (value: Set) => { - console.log(`${EditSet.name}.update`, value); - await updateSet(value); - navigation.goBack(); - }, - [navigation], - ); + ) const add = useCallback( - async (value: Set) => { - console.log(`${EditSet.name}.add`, {set: value}); - startTimer(value.name); - await addSet(value); - if (!settings.notify) return navigation.goBack(); + async (value: GymSet) => { + startTimer(value.name) + console.log(`${EditSet.name}.add`, {set: value}) + const result = await setRepo.save(value) + console.log({result}) + if (!settings.notify) return if ( value.weight > set.weight || (value.reps > set.reps && value.weight === set.weight) ) - toast("Great work King! That's a new record.", 3000); - navigation.goBack(); + toast("Great work King! That's a new record.") }, - [navigation, startTimer, set, toast, settings], - ); + [startTimer, set, settings], + ) const save = useCallback( - async (value: Set) => { - if (typeof set.id === 'number') return update(value); - return add(value); + async (value: GymSet) => { + if (typeof set.id === 'number') await setRepo.save(value) + else await add(value) + navigation.goBack() }, - [update, add, set.id], - ); + [add, set.id, navigation], + ) return ( <> - + {settings && } - ); + ) } diff --git a/EditWorkout.tsx b/EditWorkout.tsx index e6a90c6..89cbd55 100644 --- a/EditWorkout.tsx +++ b/EditWorkout.tsx @@ -1,56 +1,73 @@ -import {RouteProp, useNavigation, useRoute} from '@react-navigation/native'; -import React, {useCallback, useRef, useState} from 'react'; -import {ScrollView, TextInput, View} from 'react-native'; -import DocumentPicker from 'react-native-document-picker'; -import {Button, Card, TouchableRipple} from 'react-native-paper'; -import ConfirmDialog from './ConfirmDialog'; -import {MARGIN, PADDING} from './constants'; -import MassiveInput from './MassiveInput'; -import {useSnackbar} from './MassiveSnack'; -import {updatePlanWorkouts} from './plan.service'; -import {addSet, updateManySet, updateSetImage} from './set.service'; -import StackHeader from './StackHeader'; -import {useSettings} from './use-settings'; -import {WorkoutsPageParams} from './WorkoutsPage'; +import { + RouteProp, + useFocusEffect, + useNavigation, + useRoute, +} from '@react-navigation/native' +import {useCallback, useRef, useState} from 'react' +import {ScrollView, TextInput, View} from 'react-native' +import DocumentPicker from 'react-native-document-picker' +import {Button, Card, TouchableRipple} from 'react-native-paper' +import ConfirmDialog from './ConfirmDialog' +import {MARGIN, PADDING} from './constants' +import {getNow, planRepo, setRepo, settingsRepo} from './db' +import MassiveInput from './MassiveInput' +import Settings from './settings' +import StackHeader from './StackHeader' +import {toast} from './toast' +import {WorkoutsPageParams} from './WorkoutsPage' export default function EditWorkout() { - const {params} = useRoute>(); - const [removeImage, setRemoveImage] = useState(false); - const [showRemove, setShowRemove] = useState(false); - const [name, setName] = useState(params.value.name); - const [steps, setSteps] = useState(params.value.steps); - const [uri, setUri] = useState(params.value.image); + const {params} = useRoute>() + const [removeImage, setRemoveImage] = useState(false) + const [showRemove, setShowRemove] = useState(false) + const [name, setName] = useState(params.value.name) + const [steps, setSteps] = useState(params.value.steps) + const [uri, setUri] = useState(params.value.image) const [minutes, setMinutes] = useState( params.value.minutes?.toString() ?? '3', - ); + ) const [seconds, setSeconds] = useState( params.value.seconds?.toString() ?? '30', - ); - const [sets, setSets] = useState(params.value.sets?.toString() ?? '3'); - const {toast} = useSnackbar(); - const navigation = useNavigation(); - const setsRef = useRef(null); - const stepsRef = useRef(null); - const minutesRef = useRef(null); - const secondsRef = useRef(null); - const {settings} = useSettings(); + ) + const [sets, setSets] = useState(params.value.sets?.toString() ?? '3') + const navigation = useNavigation() + const setsRef = useRef(null) + const stepsRef = useRef(null) + const minutesRef = useRef(null) + const secondsRef = useRef(null) + const [settings, setSettings] = useState() + + useFocusEffect( + useCallback(() => { + settingsRepo.findOne({where: {}}).then(setSettings) + }, []), + ) const update = async () => { - await updateManySet({ - oldName: params.value.name, - newName: name || params.value.name, - sets: sets ?? '3', - seconds: seconds?.toString() ?? '30', - minutes: minutes?.toString() ?? '3', - steps, - }); - await updatePlanWorkouts(params.value.name, name || params.value.name); - if (uri || removeImage) await updateSetImage(params.value.name, uri || ''); - navigation.goBack(); - }; + await setRepo.update( + {name: params.value.name}, + { + name: name || params.value.name, + sets: Number(sets), + minutes: +minutes, + seconds: +seconds, + steps, + image: removeImage ? '' : uri, + }, + ) + await planRepo.query( + `UPDATE plans + SET workouts = REPLACE(workouts, $1, $2) + WHERE workouts LIKE $3`, + [params.value.name, name, `%${params.value.name}%`], + ) + navigation.goBack() + } const add = async () => { - await addSet({ + const [{now}] = await getNow() + await setRepo.save({ name, reps: 0, weight: 0, @@ -60,45 +77,46 @@ export default function EditWorkout() { seconds: seconds ? +seconds : 30, sets: sets ? +sets : 3, steps, - }); - navigation.goBack(); - }; + created: now, + }) + navigation.goBack() + } const save = async () => { - if (params.value.name) return update(); - return add(); - }; + if (params.value.name) return update() + return add() + } const changeImage = useCallback(async () => { const {fileCopyUri} = await DocumentPicker.pickSingle({ type: 'image/*', copyTo: 'documentDirectory', - }); - if (fileCopyUri) setUri(fileCopyUri); - }, []); + }) + if (fileCopyUri) setUri(fileCopyUri) + }, []) const handleRemove = useCallback(async () => { - setUri(''); - setRemoveImage(true); - setShowRemove(false); - }, []); + setUri('') + setRemoveImage(true) + setShowRemove(false) + }, []) const handleName = (value: string) => { - setName(value.replace(/,|'/g, '')); + setName(value.replace(/,|'/g, '')) if (value.match(/,|'/)) - toast('Commas and single quotes would break CSV exports', 6000); - }; + toast('Commas and single quotes would break CSV exports') + } const handleSteps = (value: string) => { - setSteps(value.replace(/,|'/g, '')); + setSteps(value.replace(/,|'/g, '')) if (value.match(/,|'/)) - toast('Commas and single quotes would break CSV exports', 6000); - }; + toast('Commas and single quotes would break CSV exports') + } const submitName = () => { - if (settings.steps) stepsRef.current?.focus(); - else setsRef.current?.focus(); - }; + if (settings.steps) stepsRef.current?.focus() + else setsRef.current?.focus() + } return ( <> @@ -112,7 +130,7 @@ export default function EditWorkout() { onChangeText={handleName} onSubmitEditing={submitName} /> - {!!settings.steps && ( + {settings?.steps && ( setsRef.current?.focus()} /> )} - {!!settings.showSets && ( + {settings?.showSets && ( minutesRef.current?.focus()} /> )} - {!!settings.alarm && ( + {settings?.alarm && ( <> )} - {!!settings.images && uri && ( + {settings?.images && uri && ( )} - {!!settings.images && !uri && ( + {settings?.images && !uri && ( )} @@ -256,12 +237,12 @@ export default function SettingsPage() { show={battery} setShow={setBattery} onOk={() => { - NativeModules.AlarmModule.ignoreBattery(); - setBattery(false); + NativeModules.AlarmModule.ignoreBattery() + setBattery(false) }}> Disable battery optimizations for Massive to use rest timers. - ); + ) } diff --git a/StackHeader.tsx b/StackHeader.tsx index aa45a5d..3b0562a 100644 --- a/StackHeader.tsx +++ b/StackHeader.tsx @@ -1,30 +1,36 @@ -import {useNavigation} from '@react-navigation/native'; -import React from 'react'; -import Share from 'react-native-share'; -import {FileSystem} from 'react-native-file-access'; -import {Appbar, IconButton} from 'react-native-paper'; -import {captureScreen} from 'react-native-view-shot'; +import {useNavigation} from '@react-navigation/native' +import Share from 'react-native-share' +import {FileSystem} from 'react-native-file-access' +import {Appbar, IconButton} from 'react-native-paper' +import {captureScreen} from 'react-native-view-shot' +import useDark from './use-dark' export default function StackHeader({title}: {title: string}) { - const navigation = useNavigation(); + const navigation = useNavigation() + const dark = useDark() return ( - + captureScreen().then(async uri => { - const base64 = await FileSystem.readFile(uri, 'base64'); - const url = `data:image/jpeg;base64,${base64}`; + const base64 = await FileSystem.readFile(uri, 'base64') + const url = `data:image/jpeg;base64,${base64}` Share.open({ type: 'image/jpeg', url, - }); + }) }) } icon="share" /> - ); + ) } diff --git a/StartPlan.tsx b/StartPlan.tsx index 4be2e9c..e98a187 100644 --- a/StartPlan.tsx +++ b/StartPlan.tsx @@ -1,108 +1,120 @@ -import {RouteProp, useFocusEffect, useRoute} from '@react-navigation/native'; -import React, {useCallback, useMemo, useRef, useState} from 'react'; -import {NativeModules, TextInput, View} from 'react-native'; -import {FlatList} from 'react-native-gesture-handler'; -import {Button, List, RadioButton} from 'react-native-paper'; -import {getBestSet} from './best.service'; -import {useColor} from './color'; -import {PADDING} from './constants'; -import CountMany from './count-many'; -import MassiveInput from './MassiveInput'; -import {useSnackbar} from './MassiveSnack'; -import {PlanPageParams} from './plan-page-params'; -import Set from './set'; -import {addSet, countMany} from './set.service'; -import SetForm from './SetForm'; -import StackHeader from './StackHeader'; -import {useSettings} from './use-settings'; +import {RouteProp, useRoute} from '@react-navigation/native' +import {useCallback, useEffect, useMemo, useRef, useState} from 'react' +import {NativeModules, TextInput, View} from 'react-native' +import {FlatList} from 'react-native-gesture-handler' +import {Button} from 'react-native-paper' +import {getBestSet} from './best.service' +import {PADDING} from './constants' +import CountMany from './count-many' +import {AppDataSource} from './data-source' +import {getNow, setRepo, settingsRepo} from './db' +import GymSet from './gym-set' +import MassiveInput from './MassiveInput' +import {PlanPageParams} from './plan-page-params' +import SetForm from './SetForm' +import Settings from './settings' +import StackHeader from './StackHeader' +import StartPlanItem from './StartPlanItem' +import {toast} from './toast' export default function StartPlan() { - const {params} = useRoute>(); - const {set} = params; - const [name, setName] = useState(set.name); - const [reps, setReps] = useState(set.reps.toString()); - const [weight, setWeight] = useState(set.weight.toString()); - const [unit, setUnit] = useState(); - const {toast} = useSnackbar(); - const [minutes, setMinutes] = useState(set.minutes); - const [seconds, setSeconds] = useState(set.seconds); - const [best, setBest] = useState(set); - const [selected, setSelected] = useState(0); - const {settings} = useSettings(); - const [counts, setCounts] = useState(); - const weightRef = useRef(null); - const repsRef = useRef(null); - const unitRef = useRef(null); - const workouts = useMemo(() => params.plan.workouts.split(','), [params]); - const {color} = useColor(); + const {params} = useRoute>() + const [reps, setReps] = useState('') + const [weight, setWeight] = useState('') + const [unit, setUnit] = useState('kg') + const [best, setBest] = useState() + const [selected, setSelected] = useState(0) + const [settings, setSettings] = useState() + const [counts, setCounts] = useState() + const weightRef = useRef(null) + const repsRef = useRef(null) + const unitRef = useRef(null) + const workouts = useMemo(() => params.plan.workouts.split(','), [params]) const [selection, setSelection] = useState({ start: 0, - end: set.reps.toString().length, - }); + end: 0, + }) - useFocusEffect( - useCallback(() => { - countMany(workouts).then(newCounts => { - setCounts(newCounts); - console.log(`${StartPlan.name}.focus:`, {newCounts}); - }); - }, [params]), - ); + const refresh = useCallback(() => { + const questions = workouts + .map((workout, index) => `('${workout}',${index})`) + .join(',') + console.log({questions, workouts}) + const select = ` + SELECT workouts.name, COUNT(sets.id) as total + FROM (select 0 as name, 0 as sequence union values ${questions}) as workouts + LEFT JOIN sets ON sets.name = workouts.name + AND sets.created LIKE STRFTIME('%Y-%m-%d%%', 'now', 'localtime') + AND NOT sets.hidden + GROUP BY workouts.name + ORDER BY workouts.sequence + LIMIT -1 + OFFSET 1 + ` + return AppDataSource.manager.query(select).then(newCounts => { + setCounts(newCounts) + console.log(`${StartPlan.name}.focus:`, {newCounts}) + return newCounts + }) + }, [workouts]) + + const select = useCallback( + async (index: number, newCounts?: CountMany[]) => { + setSelected(index) + console.log(`${StartPlan.name}.next:`, {best, index}) + if (!counts && !newCounts) return + const workout = counts ? counts[index] : newCounts[index] + console.log(`${StartPlan.name}.next:`, {workout}) + const newBest = await getBestSet(workout.name) + delete newBest.id + console.log(`${StartPlan.name}.next:`, {newBest}) + setReps(newBest.reps.toString()) + setWeight(newBest.weight.toString()) + setUnit(newBest.unit) + setBest(newBest) + }, + [counts, best], + ) + + useEffect(() => { + refresh().then(newCounts => select(0, newCounts)) + settingsRepo.findOne({where: {}}).then(setSettings) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [refresh]) const handleSubmit = async () => { - console.log(`${SetForm.name}.handleSubmit:`, {reps, weight, unit, best}); - await addSet({ - name, + console.log(`${SetForm.name}.handleSubmit:`, {reps, weight, unit, best}) + const [{now}] = await getNow() + await setRepo.save({ + ...best, weight: +weight, reps: +reps, - minutes: set.minutes, - seconds: set.seconds, - steps: set.steps, - image: set.image, unit, - }); - countMany(workouts).then(setCounts); + created: now, + hidden: false, + }) + await refresh() if ( settings.notify && (+weight > best.weight || (+reps > best.reps && +weight === best.weight)) ) - toast("Great work King! That's a new record.", 5000); - else if (settings.alarm) toast('Resting...', 3000); - else toast('Added set', 3000); - if (!settings.alarm) return; - const milliseconds = Number(minutes) * 60 * 1000 + Number(seconds) * 1000; - const args = [milliseconds, !!settings.vibrate, settings.sound]; - NativeModules.AlarmModule.timer(...args); - }; + toast("Great work King! That's a new record.") + else if (settings.alarm) toast('Resting...') + else toast('Added set') + if (!settings.alarm) return + const milliseconds = + Number(best.minutes) * 60 * 1000 + Number(best.seconds) * 1000 + const {vibrate, sound, noSound} = settings + const args = [milliseconds, vibrate, sound, noSound] + NativeModules.AlarmModule.timer(...args) + } - const handleUnit = useCallback( - (value: string) => { - setUnit(value.replace(/,|'/g, '')); - if (value.match(/,|'/)) - toast('Commas and single quotes would break CSV exports', 6000); - }, - [toast], - ); - - const select = useCallback( - async (index: number) => { - setSelected(index); - console.log(`${StartPlan.name}.next:`, {name}); - if (!counts) return; - const workout = counts[index]; - console.log(`${StartPlan.name}.next:`, {workout}); - const newBest = await getBestSet(workout.name); - setMinutes(newBest.minutes); - setSeconds(newBest.seconds); - setName(newBest.name); - setReps(newBest.reps.toString()); - setWeight(newBest.weight.toString()); - setUnit(newBest.unit); - setBest(newBest); - }, - [name, workouts], - ); + const handleUnit = useCallback((value: string) => { + setUnit(value.replace(/,|'/g, '')) + if (value.match(/,|'/)) + toast('Commas and single quotes would break CSV exports') + }, []) return ( <> @@ -128,7 +140,7 @@ export default function StartPlan() { innerRef={weightRef} blurOnSubmit /> - {!!settings.showUnit && ( + {settings?.showUnit && ( ( - select(index)} - left={() => ( - - select(index)} - value={index.toString()} - status={selected === index ? 'checked' : 'unchecked'} - color={color} - /> - - )} + renderItem={props => ( + )} /> @@ -170,5 +168,5 @@ export default function StartPlan() { - ); + ) } diff --git a/StartPlanItem.tsx b/StartPlanItem.tsx new file mode 100644 index 0000000..4b97e50 --- /dev/null +++ b/StartPlanItem.tsx @@ -0,0 +1,94 @@ +import {NavigationProp, useNavigation} from '@react-navigation/native' +import React, {useCallback, useState} from 'react' +import {GestureResponderEvent, ListRenderItemInfo, View} from 'react-native' +import {List, Menu, RadioButton, useTheme} from 'react-native-paper' +import {Like} from 'typeorm' +import CountMany from './count-many' +import {getNow, setRepo} from './db' +import {PlanPageParams} from './plan-page-params' +import {toast} from './toast' + +interface Props extends ListRenderItemInfo { + onSelect: (index: number) => void + selected: number + onUndo: () => void +} + +export default function StartPlanItem(props: Props) { + const {index, item, onSelect, selected, onUndo} = props + const {colors} = useTheme() + const [anchor, setAnchor] = useState({x: 0, y: 0}) + const [showMenu, setShowMenu] = useState(false) + const {navigate} = useNavigation>() + + const undo = useCallback(async () => { + const [{now}] = await getNow() + const created = now.split('T')[0] + const first = await setRepo.findOne({ + where: { + name: item.name, + hidden: 0 as any, + created: Like(`${created}%`), + }, + order: {created: 'desc'}, + }) + setShowMenu(false) + if (!first) return toast('Nothing to undo.') + await setRepo.delete(first.id) + onUndo() + }, [setShowMenu, onUndo, item.name]) + + const longPress = useCallback( + (e: GestureResponderEvent) => { + setAnchor({x: e.nativeEvent.pageX, y: e.nativeEvent.pageY}) + setShowMenu(true) + }, + [setShowMenu, setAnchor], + ) + + const edit = async () => { + const [{now}] = await getNow() + const created = now.split('T')[0] + const first = await setRepo.findOne({ + where: { + name: item.name, + hidden: 0 as any, + created: Like(`${created}%`), + }, + order: {created: 'desc'}, + }) + setShowMenu(false) + if (!first) return toast('Nothing to edit.') + navigate('EditSet', {set: first}) + } + + return ( + onSelect(index)} + left={() => ( + + onSelect(index)} + value={index.toString()} + status={selected === index ? 'checked' : 'unchecked'} + color={colors.primary} + /> + + )} + right={() => ( + <> + setShowMenu(false)}> + + + + + )} + /> + ) +} diff --git a/Switch.tsx b/Switch.tsx index 7f940a4..2c86b50 100644 --- a/Switch.tsx +++ b/Switch.tsx @@ -1,11 +1,10 @@ -import React, {useMemo} from 'react'; -import {Pressable} from 'react-native'; -import {Switch as PaperSwitch, Text} from 'react-native-paper'; -import {CombinedDarkTheme, CombinedDefaultTheme} from './App'; -import {useColor} from './color'; -import {colorShade} from './colors'; -import {MARGIN} from './constants'; -import useDark from './use-dark'; +import {useMemo} from 'react' +import {Pressable} from 'react-native' +import {Switch as PaperSwitch, Text, useTheme} from 'react-native-paper' +import {CombinedDarkTheme, CombinedDefaultTheme} from './App' +import {colorShade} from './colors' +import {MARGIN} from './constants' +import useDark from './use-dark' export default function Switch({ value, @@ -13,25 +12,25 @@ export default function Switch({ onPress, children, }: { - value?: boolean; - onValueChange: (value: boolean) => void; - onPress: () => void; - children: string; + value?: boolean + onValueChange: (value: boolean) => void + onPress: () => void + children: string }) { - const {color} = useColor(); - const dark = useDark(); + const {colors} = useTheme() + const dark = useDark() const track = useMemo(() => { if (dark) return { false: CombinedDarkTheme.colors.placeholder, - true: colorShade(color, -40), - }; + true: colorShade(colors.primary, -40), + } return { false: CombinedDefaultTheme.colors.placeholder, - true: colorShade(color, -40), - }; - }, [dark, color]); + true: colorShade(colors.primary, -40), + } + }, [dark, colors.primary]) return ( {children} - ); + ) } diff --git a/ViewBest.tsx b/ViewBest.tsx index 492e5f7..5c0d8ae 100644 --- a/ViewBest.tsx +++ b/ViewBest.tsx @@ -1,41 +1,67 @@ -import {Picker} from '@react-native-picker/picker'; -import {RouteProp, useRoute} from '@react-navigation/native'; -import React, {useEffect, useState} from 'react'; -import {View} from 'react-native'; -import {getOneRepMax, getVolumes, getWeightsBy} from './best.service'; -import {BestPageParams} from './BestPage'; -import Chart from './Chart'; -import {PADDING} from './constants'; -import {Metrics} from './metrics'; -import {Periods} from './periods'; -import Set from './set'; -import StackHeader from './StackHeader'; -import {formatMonth} from './time'; -import useDark from './use-dark'; -import Volume from './volume'; +import {Picker} from '@react-native-picker/picker' +import {RouteProp, useRoute} from '@react-navigation/native' +import {useEffect, useState} from 'react' +import {View} from 'react-native' +import {BestPageParams} from './BestPage' +import Chart from './Chart' +import {PADDING} from './constants' +import {setRepo} from './db' +import GymSet from './gym-set' +import {Metrics} from './metrics' +import {Periods} from './periods' +import StackHeader from './StackHeader' +import {formatMonth} from './time' +import useDark from './use-dark' +import Volume from './volume' export default function ViewBest() { - const {params} = useRoute>(); - const dark = useDark(); - const [weights, setWeights] = useState([]); - const [volumes, setVolumes] = useState([]); - const [metric, setMetric] = useState(Metrics.Weight); - const [period, setPeriod] = useState(Periods.Monthly); + const {params} = useRoute>() + const dark = useDark() + const [weights, setWeights] = useState([]) + const [volumes, setVolumes] = useState([]) + const [metric, setMetric] = useState(Metrics.Weight) + const [period, setPeriod] = useState(Periods.Monthly) useEffect(() => { - console.log(`${ViewBest.name}.useEffect`, {metric}); - console.log(`${ViewBest.name}.useEffect`, {period}); + console.log(`${ViewBest.name}.useEffect`, {metric}) + console.log(`${ViewBest.name}.useEffect`, {period}) + let difference = '-7 days' + if (period === Periods.Monthly) difference = '-1 months' + else if (period === Periods.Yearly) difference = '-1 years' + let group = '%Y-%m-%d' + if (period === Periods.Yearly) group = '%Y-%m' + const builder = setRepo + .createQueryBuilder() + .select("STRFTIME('%Y-%m-%d', created)", 'created') + .addSelect('unit') + .where('name = :name', {name: params.best.name}) + .andWhere('NOT hidden') + .andWhere("DATE(created) >= DATE('now', 'weekday 0', :difference)", { + difference, + }) + .groupBy('name') + .addGroupBy(`STRFTIME('${group}', created)`) switch (metric) { case Metrics.Weight: - getWeightsBy(params.best.name, period).then(setWeights); - break; + builder.addSelect('MAX(weight)', 'weight').getRawMany().then(setWeights) + break case Metrics.Volume: - getVolumes(params.best.name, period).then(setVolumes); - break; + builder + .addSelect('SUM(weight * reps)', 'value') + .getRawMany() + .then(setVolumes) + break default: - getOneRepMax({name: params.best.name, period}).then(setWeights); + // Brzycki formula https://en.wikipedia.org/wiki/One-repetition_maximum#Brzycki + builder + .addSelect('MAX(weight / (1.0278 - 0.0278 * reps))', 'weight') + .getRawMany() + .then(newWeights => { + console.log({weights: newWeights}) + setWeights(newWeights) + }) } - }, [params.best.name, metric, period]); + }, [params.best.name, metric, period]) return ( <> @@ -80,5 +106,5 @@ export default function ViewBest() { )} - ); + ) } diff --git a/WorkoutItem.tsx b/WorkoutItem.tsx index ad001e6..8098c93 100644 --- a/WorkoutItem.tsx +++ b/WorkoutItem.tsx @@ -1,48 +1,44 @@ -import {NavigationProp, useNavigation} from '@react-navigation/native'; -import React, {useCallback, useMemo, useState} from 'react'; -import {GestureResponderEvent, Image} from 'react-native'; -import {List, Menu, Text} from 'react-native-paper'; -import ConfirmDialog from './ConfirmDialog'; -import Set from './set'; -import {deleteSetsBy} from './set.service'; -import {useSettings} from './use-settings'; -import {WorkoutsPageParams} from './WorkoutsPage'; +import {NavigationProp, useNavigation} from '@react-navigation/native' +import {useCallback, useMemo, useState} from 'react' +import {GestureResponderEvent, Image} from 'react-native' +import {List, Menu, Text} from 'react-native-paper' +import ConfirmDialog from './ConfirmDialog' +import {setRepo} from './db' +import GymSet from './gym-set' +import {WorkoutsPageParams} from './WorkoutsPage' export default function WorkoutItem({ item, - onRemoved, + onRemove, + images, }: { - item: Set; - onRemoved: () => void; + item: GymSet + onRemove: () => void + images: boolean }) { - const [showMenu, setShowMenu] = useState(false); - const [anchor, setAnchor] = useState({x: 0, y: 0}); - const [showRemove, setShowRemove] = useState(''); - const {settings} = useSettings(); - const navigation = useNavigation>(); + const [showMenu, setShowMenu] = useState(false) + const [anchor, setAnchor] = useState({x: 0, y: 0}) + const [showRemove, setShowRemove] = useState('') + const navigation = useNavigation>() const remove = useCallback(async () => { - await deleteSetsBy(item.name); - setShowMenu(false); - onRemoved(); - }, [setShowMenu, onRemoved, item.name]); + await setRepo.delete({name: item.name}) + setShowMenu(false) + onRemove() + }, [setShowMenu, onRemove, item.name]) const longPress = useCallback( (e: GestureResponderEvent) => { - setAnchor({x: e.nativeEvent.pageX, y: e.nativeEvent.pageY}); - setShowMenu(true); + setAnchor({x: e.nativeEvent.pageX, y: e.nativeEvent.pageY}) + setShowMenu(true) }, [setShowMenu, setAnchor], - ); + ) const description = useMemo(() => { - const seconds = item.seconds?.toString().padStart(2, '0'); - if (settings.alarm && settings.showSets) - return `${item.sets} x ${item.minutes || 0}:${seconds}`; - else if (settings.alarm && !settings.showSets) - return `${item.minutes || 0}:${seconds}`; - return `${item.sets}`; - }, [item, settings]); + const seconds = item.seconds?.toString().padStart(2, '0') + return `${item.sets} x ${item.minutes || 0}:${seconds}` + }, [item]) return ( <> @@ -52,7 +48,7 @@ export default function WorkoutItem({ description={description} onLongPress={longPress} left={() => - !!settings.images && + images && item.image && ( ) @@ -69,8 +65,8 @@ export default function WorkoutItem({ { - setShowRemove(item.name); - setShowMenu(false); + setShowRemove(item.name) + setShowMenu(false) }} title="Delete" /> @@ -87,5 +83,5 @@ export default function WorkoutItem({ sure? - ); + ) } diff --git a/WorkoutList.tsx b/WorkoutList.tsx index 493439c..834b83c 100644 --- a/WorkoutList.tsx +++ b/WorkoutList.tsx @@ -2,87 +2,106 @@ import { NavigationProp, useFocusEffect, useNavigation, -} from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; -import {FlatList} from 'react-native'; -import {List} from 'react-native-paper'; -import DrawerHeader from './DrawerHeader'; -import Page from './Page'; -import Set from './set'; -import {getDistinctSets} from './set.service'; -import SetList from './SetList'; -import WorkoutItem from './WorkoutItem'; -import {WorkoutsPageParams} from './WorkoutsPage'; +} from '@react-navigation/native' +import {useCallback, useState} from 'react' +import {FlatList} from 'react-native' +import {List} from 'react-native-paper' +import DrawerHeader from './DrawerHeader' +import Page from './Page' +import GymSet from './gym-set' +import SetList from './SetList' +import WorkoutItem from './WorkoutItem' +import {WorkoutsPageParams} from './WorkoutsPage' +import {setRepo, settingsRepo} from './db' +import Settings from './settings' -const limit = 15; +const limit = 15 export default function WorkoutList() { - const [workouts, setWorkouts] = useState(); - const [offset, setOffset] = useState(0); - const [search, setSearch] = useState(''); - const [end, setEnd] = useState(false); - const navigation = useNavigation>(); + const [workouts, setWorkouts] = useState() + const [offset, setOffset] = useState(0) + const [term, setTerm] = useState('') + const [end, setEnd] = useState(false) + const [settings, setSettings] = useState() + const navigation = useNavigation>() - const refresh = useCallback(async () => { - const newWorkouts = await getDistinctSets({ - search: `%${search}%`, - limit, - offset: 0, - }); - console.log(`${WorkoutList.name}`, {newWorkout: newWorkouts[0]}); - setWorkouts(newWorkouts); - setOffset(0); - setEnd(false); - }, [search]); - - useEffect(() => { - refresh(); - }, [search, refresh]); + const refresh = useCallback(async (value: string) => { + const newWorkouts = await setRepo + .createQueryBuilder() + .select() + .where('name LIKE :name', {name: `%${value}%`}) + .groupBy('name') + .orderBy('name') + .limit(limit) + .getMany() + console.log(`${WorkoutList.name}`, {newWorkout: newWorkouts[0]}) + setWorkouts(newWorkouts) + setOffset(0) + setEnd(false) + }, []) useFocusEffect( useCallback(() => { - refresh(); - }, [refresh]), - ); + refresh(term) + settingsRepo.findOne({where: {}}).then(setSettings) + }, [refresh, term]), + ) const renderItem = useCallback( - ({item}: {item: Set}) => ( - + ({item}: {item: GymSet}) => ( + refresh(term)} + /> ), - [refresh], - ); + [refresh, term, settings?.images], + ) const next = useCallback(async () => { - if (end) return; - const newOffset = offset + limit; + if (end) return + const newOffset = offset + limit console.log(`${SetList.name}.next:`, { offset, limit, newOffset, - search, - }); - const newWorkouts = await getDistinctSets({ - search: `%${search}%`, - limit, - offset: newOffset, - }); - if (newWorkouts.length === 0) return setEnd(true); - if (!workouts) return; - setWorkouts([...workouts, ...newWorkouts]); - if (newWorkouts.length < limit) return setEnd(true); - setOffset(newOffset); - }, [search, end, offset, workouts]); + term, + }) + const newWorkouts = await setRepo + .createQueryBuilder() + .select() + .where('name LIKE :name', {name: `%${term}%`}) + .groupBy('name') + .orderBy('name') + .limit(limit) + .offset(newOffset) + .getMany() + if (newWorkouts.length === 0) return setEnd(true) + if (!workouts) return + setWorkouts([...workouts, ...newWorkouts]) + if (newWorkouts.length < limit) return setEnd(true) + setOffset(newOffset) + }, [term, end, offset, workouts]) const onAdd = useCallback(async () => { navigation.navigate('EditWorkout', { - value: {name: '', sets: 3, image: '', steps: '', reps: 0, weight: 0}, - }); - }, [navigation]); + value: new GymSet(), + }) + }, [navigation]) + + const search = useCallback( + (value: string) => { + setTerm(value) + refresh(value) + }, + [refresh], + ) return ( <> - + {workouts?.length === 0 ? ( - ); + ) } diff --git a/WorkoutsPage.tsx b/WorkoutsPage.tsx index 06b132f..8419b1d 100644 --- a/WorkoutsPage.tsx +++ b/WorkoutsPage.tsx @@ -1,17 +1,16 @@ -import {createStackNavigator} from '@react-navigation/stack'; -import React from 'react'; -import EditWorkout from './EditWorkout'; -import Set from './set'; -import WorkoutList from './WorkoutList'; +import {createStackNavigator} from '@react-navigation/stack' +import EditWorkout from './EditWorkout' +import GymSet from './gym-set' +import WorkoutList from './WorkoutList' export type WorkoutsPageParams = { - WorkoutList: {}; + WorkoutList: {} EditWorkout: { - value: Set; - }; -}; + value: GymSet + } +} -const Stack = createStackNavigator(); +const Stack = createStackNavigator() export default function WorkoutsPage() { return ( @@ -20,5 +19,5 @@ export default function WorkoutsPage() { - ); + ) } diff --git a/android/app/build.gradle b/android/app/build.gradle index 6191837..14a3f87 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -4,7 +4,7 @@ apply plugin: "kotlin-android" import com.android.build.OutputFile project.ext.react = [ - enableHermes: false, // clean and rebuild if changing + enableHermes: true, // clean and rebuild if changing ] project.ext.vectoricons = [ @@ -17,7 +17,7 @@ apply from: "../../node_modules/react-native-vector-icons/fonts.gradle" def enableSeparateBuildPerCPUArchitecture = true def enableProguardInReleaseBuilds = true def jscFlavor = 'org.webkit:android-jsc:+' -def enableHermes = project.ext.react.get("enableHermes", false); +def enableHermes = project.ext.react.get("enableHermes", true); def reactNativeArchitectures() { def value = project.getProperties().get("reactNativeArchitectures") @@ -43,8 +43,8 @@ android { missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 36071 - versionName "1.45" + versionCode 36082 + versionName "1.56" buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() if (isNewArchitectureEnabled()) { diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index b691e04..a249924 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -44,3 +44,6 @@ -dontwarn java.nio.file.* -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -dontwarn okio.** + +-keep class com.facebook.hermes.unicode.** { *; } +-keep class com.facebook.jni.** { *; } diff --git a/babel.config.js b/babel.config.js index 232b6fc..f67d31d 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,9 +1,15 @@ module.exports = { presets: ['module:metro-react-native-babel-preset'], - plugins: ['react-native-reanimated/plugin', 'react-native-paper/babel'], + plugins: [ + '@babel/plugin-transform-flow-strip-types', + ['@babel/plugin-proposal-decorators', {legacy: true}], + ['@babel/plugin-proposal-class-properties', {loose: true}], + 'react-native-reanimated/plugin', + 'react-native-paper/babel', + ], env: { production: { plugins: ['transform-remove-console'], }, }, -}; +} diff --git a/best.service.ts b/best.service.ts index 8ff71af..92450fb 100644 --- a/best.service.ts +++ b/best.service.ts @@ -1,117 +1,15 @@ -import {db} from './db'; -import {Periods} from './periods'; -import Set from './set'; -import {defaultSet} from './set.service'; -import Volume from './volume'; +import {setRepo} from './db' +import GymSet from './gym-set' -export const getOneRepMax = async ({ - name, - period, -}: { - name: string; - period: Periods; -}) => { - // Brzycki formula https://en.wikipedia.org/wiki/One-repetition_maximum#Brzycki - const select = ` - SELECT max(weight / (1.0278 - 0.0278 * reps)) AS weight, - STRFTIME('%Y-%m-%d', created) as created, unit - FROM sets - WHERE name = ? AND NOT hidden - AND DATE(created) >= DATE('now', 'weekday 0', ?) - GROUP BY name, STRFTIME(?, created) - `; - let difference = '-7 days'; - if (period === Periods.Monthly) difference = '-1 months'; - else if (period === Periods.Yearly) difference = '-1 years'; - let group = '%Y-%m-%d'; - if (period === Periods.Yearly) group = '%Y-%m'; - const [result] = await db.executeSql(select, [name, difference, group]); - return result.rows.raw(); -}; - -export const getBestSet = async (name: string): Promise => { - const bestWeight = ` - SELECT name, reps, unit, MAX(weight) AS weight - FROM sets - WHERE name = ? - GROUP BY name; - `; - const bestReps = ` - SELECT name, MAX(reps) as reps, unit, weight, sets, minutes, seconds, image - FROM sets - WHERE name = ? AND weight = ? - GROUP BY name; - `; - const [weightResult] = await db.executeSql(bestWeight, [name]); - if (!weightResult.rows.length) return {...defaultSet}; - const [repsResult] = await db.executeSql(bestReps, [ - name, - weightResult.rows.item(0).weight, - ]); - return repsResult.rows.item(0); -}; - -export const getWeightsBy = async ( - name: string, - period: Periods, -): Promise => { - const select = ` - SELECT max(weight) AS weight, - STRFTIME('%Y-%m-%d', created) as created, unit - FROM sets - WHERE name = ? AND NOT hidden - AND DATE(created) >= DATE('now', 'weekday 0', ?) - GROUP BY name, STRFTIME(?, created) - `; - let difference = '-7 days'; - if (period === Periods.Monthly) difference = '-1 months'; - else if (period === Periods.Yearly) difference = '-1 years'; - let group = '%Y-%m-%d'; - if (period === Periods.Yearly) group = '%Y-%m'; - const [result] = await db.executeSql(select, [name, difference, group]); - return result.rows.raw(); -}; - -export const getVolumes = async ( - name: string, - period: Periods, -): Promise => { - const select = ` - SELECT sum(weight * reps) AS value, - STRFTIME('%Y-%m-%d', created) as created, unit - FROM sets - WHERE name = ? AND NOT hidden - AND DATE(created) >= DATE('now', 'weekday 0', ?) - GROUP BY name, STRFTIME('%Y-%m-%d', created) - `; - let difference = '-7 days'; - if (period === Periods.Monthly) difference = '-1 months'; - else if (period === Periods.Yearly) difference = '-1 years'; - const [result] = await db.executeSql(select, [name, difference]); - return result.rows.raw(); -}; - -export const getBestWeights = async (search: string): Promise => { - const select = ` - SELECT name, reps, unit, MAX(weight) AS weight - FROM sets - WHERE name LIKE ? AND NOT hidden - GROUP BY name; - `; - const [result] = await db.executeSql(select, [`%${search}%`]); - return result.rows.raw(); -}; - -export const getBestReps = async ( - name: string, - weight: number, -): Promise => { - const select = ` - SELECT name, MAX(reps) as reps, unit, weight, image - FROM sets - WHERE name = ? AND weight = ? AND NOT hidden - GROUP BY name; - `; - const [result] = await db.executeSql(select, [name, weight]); - return result.rows.raw(); -}; +export const getBestSet = async (name: string): Promise => { + return setRepo + .createQueryBuilder() + .select() + .addSelect('MAX(weight)', 'weight') + .where('name = :name', {name}) + .groupBy('name') + .addGroupBy('reps') + .orderBy('weight', 'DESC') + .addOrderBy('reps', 'DESC') + .getOne() +} diff --git a/color.ts b/color.ts deleted file mode 100644 index 2f5f353..0000000 --- a/color.ts +++ /dev/null @@ -1,11 +0,0 @@ -import React, {useContext} from 'react'; - -export const Color = React.createContext({ - color: '', - setColor: (_value: string) => {}, -}); - -export const useColor = () => { - const context = useContext(Color); - return context; -}; diff --git a/colors.ts b/colors.ts index 3491c72..ad24629 100644 --- a/colors.ts +++ b/colors.ts @@ -1,36 +1,32 @@ export const lightColors = [ - {hex: '#FA8072', name: 'Salmon'}, - {hex: '#B3E5FC', name: 'Cyan'}, - {hex: '#FFC0CB', name: 'Pink'}, - {hex: '#E9DCC9', name: 'Linen'}, -]; + '#B3E5FC', + '#FA8072', + '#FFC0CB', + '#E9DCC9', + '#BBA1CE', +] -export const darkColors = [ - {hex: '#8156A7', name: 'Purple'}, - {hex: '#007AFF', name: 'Blue'}, - {hex: '#000000', name: 'Black'}, - {hex: '#CD5C5C', name: 'Red'}, -]; +export const darkColors = ['#8156A7', '#007AFF', '#000000', '#CD5C5C'] export const colorShade = (color: any, amount: number) => { - color = color.replace(/^#/, ''); + color = color.replace(/^#/, '') if (color.length === 3) - color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2]; + color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2] - let [r, g, b] = color.match(/.{2}/g); - [r, g, b] = [ + let [r, g, b] = color.match(/.{2}/g) + ;[r, g, b] = [ parseInt(r, 16) + amount, parseInt(g, 16) + amount, parseInt(b, 16) + amount, - ]; + ] - r = Math.max(Math.min(255, r), 0).toString(16); - g = Math.max(Math.min(255, g), 0).toString(16); - b = Math.max(Math.min(255, b), 0).toString(16); + r = Math.max(Math.min(255, r), 0).toString(16) + g = Math.max(Math.min(255, g), 0).toString(16) + b = Math.max(Math.min(255, b), 0).toString(16) - const rr = (r.length < 2 ? '0' : '') + r; - const gg = (g.length < 2 ? '0' : '') + g; - const bb = (b.length < 2 ? '0' : '') + b; + const rr = (r.length < 2 ? '0' : '') + r + const gg = (g.length < 2 ? '0' : '') + g + const bb = (b.length < 2 ? '0' : '') + b - return `#${rr}${gg}${bb}`; -}; + return `#${rr}${gg}${bb}` +} diff --git a/constants.ts b/constants.ts index ae645e4..f8c3a3a 100644 --- a/constants.ts +++ b/constants.ts @@ -1,2 +1,2 @@ -export const MARGIN = 10; -export const PADDING = 10; +export const MARGIN = 10 +export const PADDING = 10 diff --git a/count-many.ts b/count-many.ts index 0fbcafd..cf82397 100644 --- a/count-many.ts +++ b/count-many.ts @@ -1,5 +1,5 @@ export default interface CountMany { - name: string; - total: number; - sets?: number; + name: string + total: number + sets?: number } diff --git a/data-source.ts b/data-source.ts new file mode 100644 index 0000000..e8b78fb --- /dev/null +++ b/data-source.ts @@ -0,0 +1,61 @@ +import {DataSource} from 'typeorm' +import GymSet from './gym-set' +import {Sets1667185586014 as sets1667185586014} from './migrations/1667185586014-sets' +import {plans1667186124792} from './migrations/1667186124792-plans' +import {settings1667186130041} from './migrations/1667186130041-settings' +import {addSound1667186139844} from './migrations/1667186139844-add-sound' +import {addHidden1667186159379} from './migrations/1667186159379-add-hidden' +import {addNotify1667186166140} from './migrations/1667186166140-add-notify' +import {addImage1667186171548} from './migrations/1667186171548-add-image' +import {addImages1667186179488} from './migrations/1667186179488-add-images' +import {insertSettings1667186203827} from './migrations/1667186203827-insert-settings' +import {addSteps1667186211251} from './migrations/1667186211251-add-steps' +import {addSets1667186250618} from './migrations/1667186250618-add-sets' +import {addMinutes1667186255650} from './migrations/1667186255650-add-minutes' +import {addSeconds1667186259174} from './migrations/1667186259174-add-seconds' +import {addShowUnit1667186265588} from './migrations/1667186265588-add-show-unit' +import {addColor1667186320954} from './migrations/1667186320954-add-color' +import {addSteps1667186348425} from './migrations/1667186348425-add-steps' +import {addDate1667186431804} from './migrations/1667186431804-add-date' +import {addShowDate1667186435051} from './migrations/1667186435051-add-show-date' +import {addTheme1667186439366} from './migrations/1667186439366-add-theme' +import {addShowSets1667186443614} from './migrations/1667186443614-add-show-sets' +import {addSetsCreated1667186451005} from './migrations/1667186451005-add-sets-created' +import {addNoSound1667186456118} from './migrations/1667186456118-add-no-sound' +import {dropMigrations1667190214743} from './migrations/1667190214743-drop-migrations' +import {Plan} from './plan' +import Settings from './settings' + +export const AppDataSource = new DataSource({ + type: 'react-native', + database: 'massive.db', + location: 'default', + entities: [GymSet, Plan, Settings], + migrationsRun: true, + migrationsTableName: 'typeorm_migrations', + migrations: [ + sets1667185586014, + plans1667186124792, + settings1667186130041, + addSound1667186139844, + addHidden1667186159379, + addNotify1667186166140, + addImage1667186171548, + addImages1667186179488, + insertSettings1667186203827, + addSteps1667186211251, + addSets1667186250618, + addMinutes1667186255650, + addSeconds1667186259174, + addShowUnit1667186265588, + addColor1667186320954, + addSteps1667186348425, + addDate1667186431804, + addShowDate1667186435051, + addTheme1667186439366, + addShowSets1667186443614, + addSetsCreated1667186451005, + addNoSound1667186456118, + dropMigrations1667190214743, + ], +}) diff --git a/db.ts b/db.ts index d0f2e22..8b90b3d 100644 --- a/db.ts +++ b/db.ts @@ -1,151 +1,14 @@ -import { - enablePromise, - openDatabase, - SQLiteDatabase, -} from 'react-native-sqlite-storage'; +import {AppDataSource} from './data-source' +import GymSet from './gym-set' +import {Plan} from './plan' +import Settings from './settings' -enablePromise(true); +export const setRepo = AppDataSource.manager.getRepository(GymSet) +export const planRepo = AppDataSource.manager.getRepository(Plan) +export const settingsRepo = AppDataSource.manager.getRepository(Settings) -const migrations = [ - ` - CREATE TABLE IF NOT EXISTS sets ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - name TEXT NOT NULL, - reps INTEGER NOT NULL, - weight INTEGER NOT NULL, - created TEXT NOT NULL, - unit TEXT DEFAULT 'kg' - ) -`, - ` - CREATE TABLE IF NOT EXISTS plans ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - days TEXT NOT NULL, - workouts TEXT NOT NULL - ) -`, - ` - CREATE TABLE IF NOT EXISTS settings ( - minutes INTEGER NOT NULL DEFAULT 3, - seconds INTEGER NOT NULL DEFAULT 30, - alarm BOOLEAN NOT NULL DEFAULT 0, - vibrate BOOLEAN NOT NULL DEFAULT 1, - sets INTEGER NOT NULL DEFAULT 3 - ) -`, - `ALTER TABLE settings ADD COLUMN sound TEXT NULL`, - ` - CREATE TABLE IF NOT EXISTS workouts( - name TEXT PRIMARY KEY, - sets INTEGER DEFAULT 3 - ) - `, - ` - ALTER TABLE sets ADD COLUMN hidden DEFAULT false - `, - ` - ALTER TABLE settings ADD COLUMN notify DEFAULT false - `, - ` - ALTER TABLE sets ADD COLUMN image TEXT NULL - `, - ` - ALTER TABLE settings ADD COLUMN images BOOLEAN DEFAULT true - `, - ` - SELECT * FROM settings LIMIT 1 - `, - ` - INSERT INTO settings(minutes) VALUES(3) - `, - ` - ALTER TABLE workouts ADD COLUMN steps TEXT NULL - `, - ` - INSERT OR IGNORE INTO workouts (name) SELECT DISTINCT name FROM sets - `, - ` - ALTER TABLE sets ADD COLUMN sets INTEGER NOT NULL DEFAULT 3 - `, - ` - ALTER TABLE sets ADD COLUMN minutes INTEGER NOT NULL DEFAULT 3 - `, - ` - ALTER TABLE sets ADD COLUMN seconds INTEGER NOT NULL DEFAULT 30 - `, - ` - ALTER TABLE settings ADD COLUMN showUnit BOOLEAN DEFAULT true - `, - ` - ALTER TABLE sets ADD COLUMN steps TEXT NULL - `, - ` - UPDATE sets SET steps = ( - SELECT workouts.steps FROM workouts WHERE workouts.name = sets.name - ) - `, - ` - DROP TABLE workouts - `, - ` - ALTER TABLE settings ADD COLUMN color TEXT NULL - `, - ` - UPDATE settings SET showUnit = 1 - `, - ` - ALTER TABLE settings ADD COLUMN workouts BOOLEAN DEFAULT true - `, - ` - ALTER TABLE settings ADD COLUMN steps BOOLEAN DEFAULT true - `, - ` - ALTER TABLE settings ADD COLUMN nextAlarm TEXT NULL - `, - ` - ALTER TABLE settings ADD COLUMN newSet TEXT NULL - `, - ` - ALTER TABLE settings ADD COLUMN date TEXT NULL - `, - ` - ALTER TABLE settings ADD COLUMN showDate BOOLEAN DEFAULT false - `, - ` - ALTER TABLE settings ADD COLUMN theme TEXT - `, - ` - ALTER TABLE settings ADD COLUMN showSets BOOLEAN DEFAULT true - `, - ` - CREATE INDEX sets_created ON sets(created) - `, - ` - ALTER TABLE settings ADD COLUMN noSound BOOLEAN DEFAULT false - `, - ` - CREATE INDEX sets_created ON sets(created) - `, -]; - -export let db: SQLiteDatabase; - -export const runMigrations = async () => { - db = await openDatabase({name: 'massive.db'}); - await db.executeSql(` - CREATE TABLE IF NOT EXISTS migrations( - id INTEGER PRIMARY KEY AUTOINCREMENT, - command TEXT NOT NULL - ) - `); - const [result] = await db.executeSql(`SELECT * FROM migrations`); - const missing = migrations.slice(result.rows.length); - for (const command of missing) { - await db.executeSql(command).catch(console.error); - const insert = ` - INSERT INTO migrations (command) - VALUES (?) - `; - await db.executeSql(insert, [command]); - } -}; +export const getNow = (): Promise<{now: string}[]> => { + return AppDataSource.manager.query( + "SELECT STRFTIME('%Y-%m-%dT%H:%M:%S','now','localtime') AS now", + ) +} diff --git a/deploy.sh b/deploy.sh index 5008c23..d7cb00f 100755 --- a/deploy.sh +++ b/deploy.sh @@ -1,7 +1,11 @@ #!/bin/sh set -ex -git push origin HEAD > /dev/null & + +yarn tsc +yarn lint +git push origin HEAD + cd android || exit 1 build=app/build.gradle versionCode=$( diff --git a/drawer-param-list.ts b/drawer-param-list.ts index 8fea9ed..a7e8ac5 100644 --- a/drawer-param-list.ts +++ b/drawer-param-list.ts @@ -1,8 +1,7 @@ export type DrawerParamList = { - Home: {}; - Settings: {}; - Best: {}; - Plans: {}; - Workouts: {}; - Timer: {}; -}; + Home: {} + Settings: {} + Best: {} + Plans: {} + Workouts: {} +} diff --git a/gym-set.ts b/gym-set.ts new file mode 100644 index 0000000..4bab6f6 --- /dev/null +++ b/gym-set.ts @@ -0,0 +1,40 @@ +import {Column, Entity, PrimaryGeneratedColumn} from 'typeorm' + +@Entity('sets') +export default class GymSet { + @PrimaryGeneratedColumn() + id?: number + + @Column('text') + name: string + + @Column('int') + reps: number + + @Column('int') + weight: number + + @Column('int') + sets = 3 + + @Column('int') + minutes = 3 + + @Column('int') + seconds = 30 + + @Column('boolean') + hidden = false + + @Column('text') + created: string + + @Column('text') + unit: string + + @Column('text') + image: string + + @Column('text') + steps?: string +} diff --git a/home-page-params.ts b/home-page-params.ts index 50bcefe..7d7c907 100644 --- a/home-page-params.ts +++ b/home-page-params.ts @@ -1,8 +1,8 @@ -import Set from './set'; +import GymSet from './gym-set' export type HomePageParams = { - Sets: {}; + Sets: {} EditSet: { - set: Set; - }; -}; + set: GymSet + } +} diff --git a/index.js b/index.js index 5a97e4a..870f5b8 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,6 @@ -import {AppRegistry} from 'react-native'; -import 'react-native-gesture-handler'; -import 'react-native-sqlite-storage'; -import App from './App'; -import {name as appName} from './app.json'; +import {AppRegistry} from 'react-native' +import 'react-native-gesture-handler' +import App from './App' +import {name as appName} from './app.json' -AppRegistry.registerComponent(appName, () => App); +AppRegistry.registerComponent(appName, () => App) diff --git a/input.ts b/input.ts index 15a2cff..22e7fde 100644 --- a/input.ts +++ b/input.ts @@ -1,5 +1,5 @@ export default interface Input { - name: string; - value?: T; - onChange: (value: T) => void; + name: string + value?: T + onChange: (value: T) => void } diff --git a/install.sh b/install.sh index d47dc98..3ddc739 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,6 @@ #!/bin/sh -cd android || exit 1 -./gradlew assembleRelease +set -ex +cd android +[ "$1" != "--nobuild" ] && ./gradlew assembleRelease adb -d install app/build/outputs/apk/release/app-arm64-v8a-release.apk diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..619f6bf --- /dev/null +++ b/jest.config.js @@ -0,0 +1,14 @@ +module.exports = { + preset: 'react-native', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + transform: { + '^.+\\.(js|jsx)$': 'babel-jest', + }, + transformIgnorePatterns: [ + 'node_modules/(?!(jest-)?@?react-native|@react-native-community|@react-navigation)', + ], + setupFiles: [ + './node_modules/react-native-gesture-handler/jestSetup', + './jestSetup.ts', + ], +} diff --git a/jestSetup.ts b/jestSetup.ts new file mode 100644 index 0000000..64d7f6f --- /dev/null +++ b/jestSetup.ts @@ -0,0 +1,29 @@ +import 'react-native-gesture-handler/jestSetup' +import {NativeModules as RNNativeModules} from 'react-native' + +//RNNativeModules.UIManager = RNNativeModules.UIManager || {}; +//RNNativeModules.UIManager.RCTView = RNNativeModules.UIManager.RCTView || {}; +//RNNativeModules.RNGestureHandlerModule = +// RNNativeModules.RNGestureHandlerModule || { +// State: {BEGAN: 'BEGAN', FAILED: 'FAILED', ACTIVE: 'ACTIVE', END: 'END'}, +// attachGestureHandler: jest.fn(), +// createGestureHandler: jest.fn(), +// dropGestureHandler: jest.fn(), +// updateGestureHandler: jest.fn(), +// }; +//RNNativeModules.PlatformConstants = RNNativeModules.PlatformConstants || { +// forceTouchAvailable: false, +//}; +RNNativeModules.RNViewShot = RNNativeModules.RNViewShot || { + captureScreen: jest.fn(), +} + +jest.mock('react-native-file-access', () => jest.fn()) +jest.mock('react-native-share', () => jest.fn()) +jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper') +jest.useFakeTimers() +jest.mock('react-native-reanimated', () => { + const Reanimated = require('react-native-reanimated/mock') + Reanimated.default.call = () => {} + return Reanimated +}) diff --git a/metadata/en-US/images/phoneScreenshots/best-view.png b/metadata/en-US/images/phoneScreenshots/best-view.png index 6499727..2f9547a 100644 Binary files a/metadata/en-US/images/phoneScreenshots/best-view.png and b/metadata/en-US/images/phoneScreenshots/best-view.png differ diff --git a/metadata/en-US/images/phoneScreenshots/drawer.png b/metadata/en-US/images/phoneScreenshots/drawer.png index e460cc4..fb41699 100644 Binary files a/metadata/en-US/images/phoneScreenshots/drawer.png and b/metadata/en-US/images/phoneScreenshots/drawer.png differ diff --git a/metadata/en-US/images/phoneScreenshots/edit.png b/metadata/en-US/images/phoneScreenshots/edit.png index 6fc180b..5a0242c 100644 Binary files a/metadata/en-US/images/phoneScreenshots/edit.png and b/metadata/en-US/images/phoneScreenshots/edit.png differ diff --git a/metadata/en-US/images/phoneScreenshots/home.png b/metadata/en-US/images/phoneScreenshots/home.png index 834cdd5..c0ffb94 100644 Binary files a/metadata/en-US/images/phoneScreenshots/home.png and b/metadata/en-US/images/phoneScreenshots/home.png differ diff --git a/metadata/en-US/images/phoneScreenshots/plan-edit.png b/metadata/en-US/images/phoneScreenshots/plan-edit.png index 1bbd081..747a9e8 100644 Binary files a/metadata/en-US/images/phoneScreenshots/plan-edit.png and b/metadata/en-US/images/phoneScreenshots/plan-edit.png differ diff --git a/metadata/en-US/images/phoneScreenshots/plan-start.png b/metadata/en-US/images/phoneScreenshots/plan-start.png index a6f443d..0de9f9e 100644 Binary files a/metadata/en-US/images/phoneScreenshots/plan-start.png and b/metadata/en-US/images/phoneScreenshots/plan-start.png differ diff --git a/metadata/en-US/images/phoneScreenshots/plans.png b/metadata/en-US/images/phoneScreenshots/plans.png index 224aa05..e5311a4 100644 Binary files a/metadata/en-US/images/phoneScreenshots/plans.png and b/metadata/en-US/images/phoneScreenshots/plans.png differ diff --git a/metadata/en-US/images/phoneScreenshots/settings.png b/metadata/en-US/images/phoneScreenshots/settings.png index 99a4211..b00d134 100644 Binary files a/metadata/en-US/images/phoneScreenshots/settings.png and b/metadata/en-US/images/phoneScreenshots/settings.png differ diff --git a/metro.config.js b/metro.config.js index e91aba9..c81b3ca 100644 --- a/metro.config.js +++ b/metro.config.js @@ -14,4 +14,4 @@ module.exports = { }, }), }, -}; +} diff --git a/migrations/1667185586014-sets.ts b/migrations/1667185586014-sets.ts new file mode 100644 index 0000000..9e2fd40 --- /dev/null +++ b/migrations/1667185586014-sets.ts @@ -0,0 +1,20 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class Sets1667185586014 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + CREATE TABLE IF NOT EXISTS sets ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + reps INTEGER NOT NULL, + weight INTEGER NOT NULL, + created TEXT NOT NULL, + unit TEXT DEFAULT 'kg' + ) + `) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query('DROP TABLE sets') + } +} diff --git a/migrations/1667186124792-plans.ts b/migrations/1667186124792-plans.ts new file mode 100644 index 0000000..81fa4cc --- /dev/null +++ b/migrations/1667186124792-plans.ts @@ -0,0 +1,17 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class plans1667186124792 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + CREATE TABLE IF NOT EXISTS plans ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + days TEXT NOT NULL, + workouts TEXT NOT NULL + ) +`) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable('plans') + } +} diff --git a/migrations/1667186130041-settings.ts b/migrations/1667186130041-settings.ts new file mode 100644 index 0000000..0c25756 --- /dev/null +++ b/migrations/1667186130041-settings.ts @@ -0,0 +1,19 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class settings1667186130041 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + CREATE TABLE IF NOT EXISTS settings ( + minutes INTEGER NOT NULL DEFAULT 3, + seconds INTEGER NOT NULL DEFAULT 30, + alarm BOOLEAN NOT NULL DEFAULT 0, + vibrate BOOLEAN NOT NULL DEFAULT 1, + sets INTEGER NOT NULL DEFAULT 3 + ) + `) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable('settings') + } +} diff --git a/migrations/1667186139844-add-sound.ts b/migrations/1667186139844-add-sound.ts new file mode 100644 index 0000000..c13ec23 --- /dev/null +++ b/migrations/1667186139844-add-sound.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addSound1667186139844 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN sound TEXT NULL') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'sound') + } +} diff --git a/migrations/1667186159379-add-hidden.ts b/migrations/1667186159379-add-hidden.ts new file mode 100644 index 0000000..7600949 --- /dev/null +++ b/migrations/1667186159379-add-hidden.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addHidden1667186159379 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE sets ADD COLUMN hidden DEFAULT false') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('sets', 'hidden') + } +} diff --git a/migrations/1667186166140-add-notify.ts b/migrations/1667186166140-add-notify.ts new file mode 100644 index 0000000..603073c --- /dev/null +++ b/migrations/1667186166140-add-notify.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addNotify1667186166140 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN notify DEFAULT false') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'notify') + } +} diff --git a/migrations/1667186171548-add-image.ts b/migrations/1667186171548-add-image.ts new file mode 100644 index 0000000..29965ce --- /dev/null +++ b/migrations/1667186171548-add-image.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addImage1667186171548 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE sets ADD COLUMN image TEXT NULL') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('sets', 'image') + } +} diff --git a/migrations/1667186179488-add-images.ts b/migrations/1667186179488-add-images.ts new file mode 100644 index 0000000..2b4eeb9 --- /dev/null +++ b/migrations/1667186179488-add-images.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addImages1667186179488 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN images BOOLEAN DEFAULT true') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'images') + } +} diff --git a/migrations/1667186203827-insert-settings.ts b/migrations/1667186203827-insert-settings.ts new file mode 100644 index 0000000..b303228 --- /dev/null +++ b/migrations/1667186203827-insert-settings.ts @@ -0,0 +1,11 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class insertSettings1667186203827 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query('INSERT INTO settings(minutes) VALUES(3)') + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query('DELETE FROM settings') + } +} diff --git a/migrations/1667186211251-add-steps.ts b/migrations/1667186211251-add-steps.ts new file mode 100644 index 0000000..88ddb92 --- /dev/null +++ b/migrations/1667186211251-add-steps.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addSteps1667186211251 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN steps BOOLEAN DEFAULT true') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'steps') + } +} diff --git a/migrations/1667186250618-add-sets.ts b/migrations/1667186250618-add-sets.ts new file mode 100644 index 0000000..31fda27 --- /dev/null +++ b/migrations/1667186250618-add-sets.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addSets1667186250618 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE sets ADD COLUMN sets INTEGER NOT NULL DEFAULT 3') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('sets', 'sets') + } +} diff --git a/migrations/1667186255650-add-minutes.ts b/migrations/1667186255650-add-minutes.ts new file mode 100644 index 0000000..a66c212 --- /dev/null +++ b/migrations/1667186255650-add-minutes.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addMinutes1667186255650 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE sets ADD COLUMN minutes INTEGER NOT NULL DEFAULT 3') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('sets', 'minutes') + } +} diff --git a/migrations/1667186259174-add-seconds.ts b/migrations/1667186259174-add-seconds.ts new file mode 100644 index 0000000..e7166ed --- /dev/null +++ b/migrations/1667186259174-add-seconds.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addSeconds1667186259174 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE sets ADD COLUMN seconds INTEGER NOT NULL DEFAULT 30') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('sets', 'seconds') + } +} diff --git a/migrations/1667186265588-add-show-unit.ts b/migrations/1667186265588-add-show-unit.ts new file mode 100644 index 0000000..adc8b3c --- /dev/null +++ b/migrations/1667186265588-add-show-unit.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addShowUnit1667186265588 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN showUnit BOOLEAN DEFAULT true') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'showUnit') + } +} diff --git a/migrations/1667186320954-add-color.ts b/migrations/1667186320954-add-color.ts new file mode 100644 index 0000000..52534a9 --- /dev/null +++ b/migrations/1667186320954-add-color.ts @@ -0,0 +1,22 @@ +import {MigrationInterface, QueryRunner, TableColumn} from 'typeorm' +import {darkColors} from '../colors' + +export class addColor1667186320954 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .addColumn( + 'settings', + new TableColumn({ + name: 'color', + type: 'text', + isNullable: false, + default: `'${darkColors[0]}'`, + }), + ) + .catch(console.error) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'color') + } +} diff --git a/migrations/1667186348425-add-steps.ts b/migrations/1667186348425-add-steps.ts new file mode 100644 index 0000000..cfb6436 --- /dev/null +++ b/migrations/1667186348425-add-steps.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addSteps1667186348425 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE sets ADD COLUMN steps TEXT NULL') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('sets', 'steps') + } +} diff --git a/migrations/1667186431804-add-date.ts b/migrations/1667186431804-add-date.ts new file mode 100644 index 0000000..6998e10 --- /dev/null +++ b/migrations/1667186431804-add-date.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addDate1667186431804 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN date TEXT NULL') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'date') + } +} diff --git a/migrations/1667186435051-add-show-date.ts b/migrations/1667186435051-add-show-date.ts new file mode 100644 index 0000000..540cdef --- /dev/null +++ b/migrations/1667186435051-add-show-date.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addShowDate1667186435051 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN showDate BOOLEAN DEFAULT false') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'showDate') + } +} diff --git a/migrations/1667186439366-add-theme.ts b/migrations/1667186439366-add-theme.ts new file mode 100644 index 0000000..7d45952 --- /dev/null +++ b/migrations/1667186439366-add-theme.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addTheme1667186439366 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN theme TEXT') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'theme') + } +} diff --git a/migrations/1667186443614-add-show-sets.ts b/migrations/1667186443614-add-show-sets.ts new file mode 100644 index 0000000..455a35b --- /dev/null +++ b/migrations/1667186443614-add-show-sets.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addShowSets1667186443614 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN showSets BOOLEAN DEFAULT true') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'showSets') + } +} diff --git a/migrations/1667186451005-add-sets-created.ts b/migrations/1667186451005-add-sets-created.ts new file mode 100644 index 0000000..5a5b246 --- /dev/null +++ b/migrations/1667186451005-add-sets-created.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addSetsCreated1667186451005 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('CREATE INDEX sets_created ON sets(created)') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropIndex('sets', 'sets_created') + } +} diff --git a/migrations/1667186456118-add-no-sound.ts b/migrations/1667186456118-add-no-sound.ts new file mode 100644 index 0000000..2362578 --- /dev/null +++ b/migrations/1667186456118-add-no-sound.ts @@ -0,0 +1,13 @@ +import {MigrationInterface, QueryRunner} from 'typeorm' + +export class addNoSound1667186456118 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner + .query('ALTER TABLE settings ADD COLUMN noSound BOOLEAN DEFAULT false') + .catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('settings', 'noSound') + } +} diff --git a/migrations/1667190214743-drop-migrations.ts b/migrations/1667190214743-drop-migrations.ts new file mode 100644 index 0000000..ea475e4 --- /dev/null +++ b/migrations/1667190214743-drop-migrations.ts @@ -0,0 +1,19 @@ +import {MigrationInterface, QueryRunner, Table, TableColumn} from 'typeorm' + +export class dropMigrations1667190214743 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable('migrations').catch(() => null) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.createTable( + new Table({ + name: 'migrations', + columns: [ + new TableColumn({name: 'id', type: 'integer'}), + new TableColumn({name: 'command', type: 'text'}), + ], + }), + ) + } +} diff --git a/mock-providers.tsx b/mock-providers.tsx new file mode 100644 index 0000000..ea5f90c --- /dev/null +++ b/mock-providers.tsx @@ -0,0 +1,24 @@ +import {NavigationContainer} from '@react-navigation/native' +import React from 'react' +import {DefaultTheme, Provider as PaperProvider} from 'react-native-paper' +import MaterialIcon from 'react-native-vector-icons/MaterialIcons' +import {ThemeContext} from './use-theme' + +export const theme = { + theme: 'system', + setTheme: jest.fn(), + color: DefaultTheme.colors.primary, + setColor: jest.fn(), +} + +export const MockProviders = ({ + children, +}: { + children: JSX.Element | JSX.Element[] +}) => ( + }}> + + {children} + + +) diff --git a/package.json b/package.json index 8ee1ee7..ace1fd7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "massive", - "version": "1.45", + "version": "1.56", "private": true, "license": "GPL-3.0-only", "scripts": { @@ -8,20 +8,27 @@ "release": "react-native run-android --variant=release", "start": "react-native start", "test": "jest", - "lint": "eslint . --ext .js,.jsx,.ts,.tsx --quiet" + "lint": "eslint . --ext .js,.jsx,.ts,.tsx" }, "dependencies": { + "@babel/plugin-transform-flow-strip-types": "^7.19.0", "@babel/preset-env": "^7.19.1", "@react-native-masked-view/masked-view": "^0.2.7", "@react-native-picker/picker": "^2.4.4", "@react-navigation/drawer": "^6.5.0", "@react-navigation/native": "^6.0.13", "@react-navigation/stack": "^6.3.0", + "@testing-library/jest-native": "^5.1.2", + "@testing-library/react-native": "^11.3.0", "@types/d3-shape": "^3.1.0", + "@types/jest": "^29.2.0", "@types/react-native-sqlite-storage": "^5.0.2", "@types/react-native-svg-charts": "^5.0.12", "@types/react-native-vector-icons": "^6.4.12", + "babel-jest": "^29.2.2", "babel-plugin-transform-remove-console": "^6.9.4", + "eslint-plugin-flowtype": "^8.0.3", + "jest": "^29.2.2", "react": "^18.2.0", "react-native": "^0.70.4", "react-native-document-picker": "^8.1.2", @@ -38,12 +45,16 @@ "react-native-svg": "^13.4.0", "react-native-svg-charts": "^5.4.0", "react-native-vector-icons": "^9.2.0", - "react-native-view-shot": "^3.4.0" + "react-native-view-shot": "^3.4.0", + "react-test-renderer": "^18.2.0", + "typeorm": "^0.3.10" }, "devDependencies": { "@babel/core": "^7.12.9", + "@babel/plugin-proposal-decorators": "^7.20.0", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^2.0.0", + "@types/node": "^18.11.7", "@types/react-native": "^0.69.0", "@types/react-test-renderer": "^18.0.0", "@typescript-eslint/eslint-plugin": "^5.29.0", diff --git a/plan-page-params.ts b/plan-page-params.ts index 4861a8d..cf4b2e8 100644 --- a/plan-page-params.ts +++ b/plan-page-params.ts @@ -1,13 +1,15 @@ -import {Plan} from './plan'; -import Set from './set'; +import GymSet from './gym-set' +import {Plan} from './plan' export type PlanPageParams = { - PlanList: {}; + PlanList: {} EditPlan: { - plan: Plan; - }; + plan: Plan + } StartPlan: { - plan: Plan; - set: Set; - }; -}; + plan: Plan + } + EditSet: { + set: GymSet + } +} diff --git a/plan.service.ts b/plan.service.ts deleted file mode 100644 index 0062fc7..0000000 --- a/plan.service.ts +++ /dev/null @@ -1,60 +0,0 @@ -import {db} from './db'; -import {Plan} from './plan'; -import {DAYS} from './time'; - -export const getPlans = async (search: string): Promise => { - const select = ` - SELECT * from plans - WHERE days LIKE ? OR workouts LIKE ? - `; - const [result] = await db.executeSql(select, [`%${search}%`, `%${search}%`]); - return result.rows.raw(); -}; - -export const getTodaysPlan = async (): Promise => { - const today = DAYS[new Date().getDay()]; - const [result] = await db.executeSql( - `SELECT * FROM plans WHERE days LIKE ? LIMIT 1`, - [`%${today}%`], - ); - return result.rows.raw(); -}; - -export const updatePlanWorkouts = async (oldName: string, newName: string) => { - const update = ` - UPDATE plans SET workouts = REPLACE(workouts, ?, ?) - WHERE workouts LIKE ? - `; - return db.executeSql(update, [oldName, newName, `%${oldName}%`]); -}; - -export const updatePlan = async (value: Plan) => { - const update = `UPDATE plans SET days = ?, workouts = ? WHERE id = ?`; - return db.executeSql(update, [value.days, value.workouts, value.id]); -}; - -export const addPlan = async (value: Plan) => { - const insert = `INSERT INTO plans(days, workouts) VALUES (?, ?)`; - return db.executeSql(insert, [value.days, value.workouts]); -}; - -export const addPlans = async (values: string) => { - const insert = ` - INSERT INTO plans(days,workouts) VALUES ${values} - `; - return db.executeSql(insert); -}; - -export const deletePlans = async () => { - return db.executeSql(`DELETE FROM plans`); -}; - -export const deletePlan = async (id: number) => { - return db.executeSql(`DELETE FROM plans WHERE id = ?`, [id]); -}; - -export const getAllPlans = async (): Promise => { - const select = `SELECT * from plans`; - const [result] = await db.executeSql(select); - return result.rows.raw(); -}; diff --git a/plan.ts b/plan.ts index bc46c99..ce258e6 100644 --- a/plan.ts +++ b/plan.ts @@ -1,5 +1,13 @@ -export interface Plan { - id?: number; - days: string; - workouts: string; +import {Column, Entity, PrimaryGeneratedColumn} from 'typeorm' + +@Entity('plans') +export class Plan { + @PrimaryGeneratedColumn() + id?: number + + @Column('text') + days: string + + @Column('text') + workouts: string } diff --git a/route.ts b/route.ts index b8d37c1..8d09a3e 100644 --- a/route.ts +++ b/route.ts @@ -1,7 +1,7 @@ -import {DrawerParamList} from './drawer-param-list'; +import {DrawerParamList} from './drawer-param-list' export default interface Route { - name: keyof DrawerParamList; - component: React.ComponentType; - icon: string; + name: keyof DrawerParamList + component: React.ComponentType + icon: string } diff --git a/set.service.ts b/set.service.ts deleted file mode 100644 index 44f32d6..0000000 --- a/set.service.ts +++ /dev/null @@ -1,197 +0,0 @@ -import CountMany from './count-many'; -import {db} from './db'; -import Set from './set'; - -export const updateSet = async (value: Set) => { - const update = ` - UPDATE sets - SET name = ?, reps = ?, weight = ?, unit = ?, image = ? - WHERE id = ? - `; - return db.executeSql(update, [ - value.name, - value.reps, - value.weight, - value.unit, - value.image, - value.id, - ]); -}; - -export const addSets = async (columns: string, values: string) => { - console.log({columns, values}); - const insert = ` - INSERT INTO sets(${columns}) - VALUES ${values} - `; - return db.executeSql(insert); -}; - -export const addSet = async (value: Set) => { - const keys = Object.keys(value) as (keyof Set)[]; - const questions = keys.map(() => '?').join(','); - const insert = ` - INSERT INTO sets(${keys.join(',')},created) - VALUES (${questions},strftime('%Y-%m-%dT%H:%M:%S','now','localtime')) - `; - const values = keys.map(key => value[key]); - return db.executeSql(insert, values); -}; - -export const deleteSets = async () => { - return db.executeSql(`DELETE FROM sets`); -}; - -export const deleteSet = async (id: number) => { - return db.executeSql(`DELETE FROM sets WHERE id = ?`, [id]); -}; - -export const deleteSetsBy = async (name: string) => { - return db.executeSql(`DELETE FROM sets WHERE name = ?`, [name]); -}; - -export const getAllSets = async (): Promise => { - const select = `SELECT * from sets`; - const [result] = await db.executeSql(select); - return result.rows.raw(); -}; - -interface PageParams { - search: string; - limit: number; - offset: number; - format?: string; -} - -export const getSet = async (name: string): Promise => { - const select = ` - SELECT * - FROM sets - WHERE name = ? - LIMIT 1 - `; - const [result] = await db.executeSql(select, [name]); - return result.rows.item(0); -}; - -export const getSets = async ({ - search, - limit, - offset, - format, -}: PageParams): Promise => { - const select = ` - SELECT id, name, reps, weight, sets, minutes, seconds, - created, unit, image, steps - FROM sets - WHERE name LIKE ? AND NOT hidden - ORDER BY STRFTIME('%Y-%m-%d %H:%M', created) DESC - LIMIT ? OFFSET ? - `; - const [result] = await db.executeSql(select, [`%${search}%`, limit, offset]); - return result.rows.raw(); -}; - -export const defaultSet: Set = { - name: '', - reps: 10, - weight: 20, - unit: 'kg', -}; - -export const updateManySet = async ({ - oldName, - newName, - minutes, - seconds, - sets, - steps, -}: { - oldName: string; - newName: string; - minutes: string; - seconds: string; - sets: string; - steps?: string; -}) => { - const update = ` - UPDATE sets SET name = ?, minutes = ?, seconds = ?, sets = ?, steps = ? - WHERE name = ? - `; - return db.executeSql(update, [ - newName, - minutes, - seconds, - sets, - steps, - oldName, - ]); -}; - -export const updateSetImage = async (name: string, image: string) => { - const update = `UPDATE sets SET image = ? WHERE name = ?`; - return db.executeSql(update, [image, name]); -}; - -export const getNames = async (): Promise => { - const [result] = await db.executeSql('SELECT DISTINCT name FROM sets'); - const values: {name: string}[] = result.rows.raw(); - return values.map(value => value.name); -}; - -export const getToday = async (): Promise => { - const select = ` - SELECT name, reps, weight, sets, minutes, seconds, unit, image FROM sets - WHERE NOT hidden - AND created LIKE strftime('%Y-%m-%d%%', 'now', 'localtime') - ORDER BY created DESC - LIMIT 1 - `; - const [result] = await db.executeSql(select); - return result.rows.item(0); -}; - -export const countToday = async (name: string): Promise => { - const select = ` - SELECT COUNT(*) as total FROM sets - WHERE created LIKE strftime('%Y-%m-%d%%', 'now', 'localtime') - AND name = ? AND NOT hidden - `; - const [result] = await db.executeSql(select, [name]); - return Number(result.rows.item(0)?.total); -}; - -export const countMany = async (names: string[]): Promise => { - const questions = names.map(_ => '?').join(','); - console.log({questions, names}); - const select = ` - SELECT workouts.name, COUNT(sets.id) as total, workouts.sets - FROM ( - SELECT distinct name, sets FROM sets - WHERE name IN (${questions}) - ) workouts - LEFT JOIN sets ON sets.name = workouts.name - AND sets.created LIKE STRFTIME('%Y-%m-%d%%', 'now', 'localtime') - AND NOT sets.hidden - GROUP BY workouts.name; - `; - const [result] = await db.executeSql(select, names); - return result.rows.raw(); -}; - -export const getDistinctSets = async ({ - search, - limit, - offset, -}: PageParams): Promise => { - const select = ` - SELECT name, image, sets, minutes, seconds, steps - FROM sets - WHERE sets.name LIKE ? - GROUP BY sets.name - ORDER BY sets.name - LIMIT ? OFFSET ? - `; - const [result] = await db.executeSql(select, [search, limit, offset]); - return result.rows.raw(); -}; diff --git a/set.ts b/set.ts deleted file mode 100644 index 4d7be6d..0000000 --- a/set.ts +++ /dev/null @@ -1,14 +0,0 @@ -export default interface Set { - id?: number; - name: string; - reps: number; - weight: number; - sets?: number; - minutes?: number; - seconds?: number; - created?: string; - unit?: string; - hidden?: boolean; - image?: string; - steps?: string; -} diff --git a/settings.service.ts b/settings.service.ts deleted file mode 100644 index 7aafb18..0000000 --- a/settings.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import {db} from './db'; -import Settings from './settings'; - -export const getSettings = async (): Promise => { - const [result] = await db.executeSql(`SELECT * FROM settings LIMIT 1`); - return result.rows.item(0); -}; - -export const updateSettings = async (value: Settings) => { - console.log(`${updateSettings.name}`, {value}); - const keys = Object.keys(value) as (keyof Settings)[]; - const sets = keys.map(key => `${key}=?`).join(','); - const update = `UPDATE settings SET ${sets}`; - const values = keys.map(key => value[key]); - return db.executeSql(update, values); -}; - -export const getNext = async (): Promise => { - const [result] = await db.executeSql( - `SELECT nextAlarm FROM settings LIMIT 1`, - ); - return result.rows.item(0)?.nextAlarm; -}; diff --git a/settings.ts b/settings.ts index 4c4715f..f925efc 100644 --- a/settings.ts +++ b/settings.ts @@ -1,15 +1,43 @@ -export default interface Settings { - alarm: number; - vibrate: number; - sound: string; - notify: number; - images: number; - showUnit: number; - color: string; - steps: number; - date: string; - showDate: number; - theme: 'system' | 'dark' | 'light'; - showSets: number; - noSound: number; +import {Column, Entity, PrimaryColumn} from 'typeorm' + +@Entity() +export default class Settings { + @PrimaryColumn('boolean') + alarm: boolean + + @Column('boolean') + vibrate: boolean + + @Column('text') + sound: string + + @Column('boolean') + notify: boolean + + @Column('boolean') + images: boolean + + @Column('boolean') + showUnit: boolean + + @Column('text') + color: string + + @Column('boolean') + steps: boolean + + @Column('text') + date: string + + @Column('boolean') + showDate: boolean + + @Column('text') + theme: string + + @Column('boolean') + showSets: boolean + + @Column('boolean') + noSound: boolean } diff --git a/time.ts b/time.ts index 48b1b0e..465658b 100644 --- a/time.ts +++ b/time.ts @@ -6,26 +6,26 @@ export const DAYS = [ 'Thursday', 'Friday', 'Saturday', -]; +] export function formatMonth(iso: string) { - const date = new Date(iso); - const dd = date.getDate().toString(); - const mm = (date.getMonth() + 1).toString(); - return `${dd}/${mm}`; + const date = new Date(iso) + const dd = date.getDate().toString() + const mm = (date.getMonth() + 1).toString() + return `${dd}/${mm}` } function twelveHour(twentyFourHour: string) { - const [hourString, minute] = twentyFourHour.split(':'); - const hour = +hourString % 24; - return (hour % 12 || 12) + ':' + minute + (hour < 12 ? ' AM' : ' PM'); + const [hourString, minute] = twentyFourHour.split(':') + const hour = +hourString % 24 + return (hour % 12 || 12) + ':' + minute + (hour < 12 ? ' AM' : ' PM') } function dayOfWeek(iso: string) { - const date = new Date(iso); - const day = date.getDay(); - const target = DAYS[day === 0 ? 0 : day - 1]; - return target.slice(0, 3); + const date = new Date(iso) + const day = date.getDay() + const target = DAYS[day] + return target.slice(0, 3) } /** @@ -33,29 +33,29 @@ function dayOfWeek(iso: string) { * @param kind Intended format for the date, e.g. '%Y-%m-%d %H:%M' */ export function format(iso: string, kind: string) { - const split = iso.split('T'); - const [year, month, day] = split[0].split('-'); - const time = twelveHour(split[1]); + const split = iso.split('T') + const [year, month, day] = split[0].split('-') + const time = twelveHour(split[1]) switch (kind) { case '%Y-%m-%d %H:%M': - return iso.replace('T', ' ').replace(/:\d{2}/, ''); + return iso.replace('T', ' ').replace(/:\d{2}/, '') case '%Y-%m-%d': - return split[0]; + return split[0] case '%H:%M': - return split[1].replace(/:\d{2}/, ''); + return split[1].replace(/:\d{2}/, '') case '%d/%m/%y %h:%M %p': - return `${day}/${month}/${year} ${time}`; + return `${day}/${month}/${year} ${time}` case '%d/%m %h:%M %p': - return `${day}/${month} ${time}`; + return `${day}/${month} ${time}` case '%d/%m/%y': - return `${day}/${month}/${year}`; + return `${day}/${month}/${year}` case '%d/%m': - return `${day}/${month}`; + return `${day}/${month}` case '%h:%M %p': - return time; + return time case '%A %h:%M %p': - return dayOfWeek(iso) + ' ' + time; + return dayOfWeek(iso) + ' ' + time default: - return iso; + return iso } } diff --git a/toast.ts b/toast.ts new file mode 100644 index 0000000..8227283 --- /dev/null +++ b/toast.ts @@ -0,0 +1,7 @@ +import {DeviceEventEmitter} from 'react-native' + +export const TOAST = 'toast' + +export function toast(value: string) { + DeviceEventEmitter.emit(TOAST, {value}) +} diff --git a/tsconfig.json b/tsconfig.json index fcc5211..20e816c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "jsx": "react-native", "module": "CommonJS", "moduleResolution": "node", - "types": ["react-native"], + "types": ["react-native", "jest"], "resolveJsonModule": true, "allowJs": true, "noEmit": true, @@ -13,8 +13,15 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true + "strict": false, + "skipLibCheck": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true }, - "exclude": ["node_modules", "babel.config.js", "metro.config.js"] + "exclude": [ + "node_modules", + "babel.config.js", + "metro.config.js", + "jest.config.js" + ] } diff --git a/use-dark.ts b/use-dark.ts index 5629c3f..2e0a581 100644 --- a/use-dark.ts +++ b/use-dark.ts @@ -1,11 +1,11 @@ -import {useColorScheme} from 'react-native'; -import {useSettings} from './use-settings'; +import {useColorScheme} from 'react-native' +import {useTheme} from './use-theme' export default function useDark() { - const dark = useColorScheme() === 'dark'; - const {settings} = useSettings(); + const dark = useColorScheme() === 'dark' + const {theme} = useTheme() - if (settings.theme === 'dark') return true; - if (settings.theme === 'light') return false; - return dark; + if (theme === 'dark') return true + if (theme === 'light') return false + return dark } diff --git a/use-settings.ts b/use-settings.ts deleted file mode 100644 index 5cd0336..0000000 --- a/use-settings.ts +++ /dev/null @@ -1,27 +0,0 @@ -import React, {useContext} from 'react'; -import Settings from './settings'; - -export const SettingsContext = React.createContext<{ - settings: Settings; - setSettings: (value: Settings) => void; -}>({ - settings: { - alarm: 0, - color: '', - date: '', - images: 1, - notify: 0, - showDate: 0, - showSets: 1, - showUnit: 1, - sound: '', - steps: 0, - theme: 'system', - vibrate: 1, - }, - setSettings: () => null, -}); - -export function useSettings() { - return useContext(SettingsContext); -} diff --git a/use-theme.ts b/use-theme.ts new file mode 100644 index 0000000..e875140 --- /dev/null +++ b/use-theme.ts @@ -0,0 +1,17 @@ +import {createContext, useContext} from 'react' + +export const ThemeContext = createContext<{ + theme: string + color: string + setTheme: (value: string) => void + setColor: (value: string) => void +}>({ + theme: '', + color: '', + setTheme: () => null, + setColor: () => null, +}) + +export function useTheme() { + return useContext(ThemeContext) +} diff --git a/volume.ts b/volume.ts index 786b73e..d019f36 100644 --- a/volume.ts +++ b/volume.ts @@ -1,6 +1,6 @@ export default interface Volume { - name: string; - created: string; - value: number; - unit: string; + name: string + created: string + value: number + unit: string } diff --git a/write.ts b/write.ts index 679acf7..16d9387 100644 --- a/write.ts +++ b/write.ts @@ -1,18 +1,18 @@ -import {NativeModules, PermissionsAndroid} from 'react-native'; -import {Dirs, FileSystem} from 'react-native-file-access'; +import {NativeModules, PermissionsAndroid} from 'react-native' +import {Dirs, FileSystem} from 'react-native-file-access' export const write = async (name: string, data: string) => { - const filePath = `${Dirs.DocumentDir}/${name}`; + const filePath = `${Dirs.DocumentDir}/${name}` const permission = async () => { const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, - ); - return granted === PermissionsAndroid.RESULTS.GRANTED; - }; - const granted = await permission(); - if (!granted) return; - await FileSystem.writeFile(filePath, data); - if (!FileSystem.exists(filePath)) return; - await FileSystem.cpExternal(filePath, name, 'downloads'); - NativeModules.DownloadModule.show(name); -}; + ) + return granted === PermissionsAndroid.RESULTS.GRANTED + } + const granted = await permission() + if (!granted) return + await FileSystem.writeFile(filePath, data) + if (!FileSystem.exists(filePath)) return + await FileSystem.cpExternal(filePath, name, 'downloads') + NativeModules.DownloadModule.show(name) +} diff --git a/yarn.lock b/yarn.lock index b67f830..c3a9b47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,7 +15,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.18.6": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6": version: 7.18.6 resolution: "@babel/code-frame@npm:7.18.6" dependencies: @@ -24,62 +24,44 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/compat-data@npm:7.18.6" - checksum: fd73a1bd7bc29be5528d2ef78248929ed3ee72e0edb69cef6051e0aad0bf8087594db6cd9e981f0d7f5bfc274fdbb77306d8abea8ceb71e95c18afc3ebd81828 +"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.19.4, @babel/compat-data@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/compat-data@npm:7.20.0" + checksum: 325148e2961edcfc17d53ec4b27f85ebdd6be1aa33d1d297acf84fb5879f58c0a18bfb6418f9f108b4c84a98606adb1668250a15fd4fab2cc84c537b454b9a42 languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.18.8, @babel/compat-data@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/compat-data@npm:7.19.1" - checksum: f985887ea08a140e4af87a94d3fb17af0345491eb97f5a85b1840255c2e2a97429f32a8fd12a7aae9218af5f1024f1eb12a5cd280d2d69b2337583c17ea506ba - languageName: node - linkType: hard - -"@babel/core@npm:^7.12.9, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0": - version: 7.18.6 - resolution: "@babel/core@npm:7.18.6" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.12.9, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0": + version: 7.19.6 + resolution: "@babel/core@npm:7.19.6" dependencies: "@ampproject/remapping": ^2.1.0 "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.18.6 - "@babel/helper-compilation-targets": ^7.18.6 - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helpers": ^7.18.6 - "@babel/parser": ^7.18.6 - "@babel/template": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 + "@babel/generator": ^7.19.6 + "@babel/helper-compilation-targets": ^7.19.3 + "@babel/helper-module-transforms": ^7.19.6 + "@babel/helpers": ^7.19.4 + "@babel/parser": ^7.19.6 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.19.6 + "@babel/types": ^7.19.4 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.1 semver: ^6.3.0 - checksum: 711459ebf7afab7b8eff88b7155c3f4a62690545f1c8c2eb6ba5ebaed01abeecb984cf9657847a2151ad24a5645efce765832aa343ce0f0386f311b67b59589a + checksum: 85c0bd38d0ef180aa2d23c3db6840a0baec88d2e05c30e7ffc3dfeb6b2b89d6e4864922f04997a1f4ce55f9dd469bf2e76518d5c7ae744b98516709d32769b73 languageName: node linkType: hard -"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.6": - version: 7.18.7 - resolution: "@babel/generator@npm:7.18.7" +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.19.6, @babel/generator@npm:^7.20.0, @babel/generator@npm:^7.7.2": + version: 7.20.0 + resolution: "@babel/generator@npm:7.20.0" dependencies: - "@babel/types": ^7.18.7 + "@babel/types": ^7.20.0 "@jridgewell/gen-mapping": ^0.3.2 jsesc: ^2.5.1 - checksum: aad4b6873130165e9483af2888bce5a3a5ad9cca0757fc90ae11a0396757d0b295a3bff49282c8df8ab01b31972cc855ae88fd9ddc9ab00d9427dc0e01caeea9 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/generator@npm:7.19.0" - dependencies: - "@babel/types": ^7.19.0 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: aa3d5785cf8f8e81672dcc61aef351188efeadb20d9f66d79113d82cbcf3bbbdeb829989fa14582108572ddbc4e4027bdceb06ccaf5ec40fa93c2dda8fbcd4aa + checksum: df2fef0ac305cf031013e311d4582b15b5c297fd538bec71e6cae3b689189ac4be6055482487b06da1be2f007b8985d5162a84e14e43a20435b8c89551910509 languageName: node linkType: hard @@ -93,73 +75,47 @@ __metadata: linkType: hard "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.6" + version: 7.18.9 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" dependencies: "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: c4d71356e0adbc20ce9fe7c1e1181ff65a78603f8bba7615745f0417fed86bad7dc0a54a840bc83667c66709b3cb3721edcb9be0d393a298ce4e9eb6d085f3c1 + "@babel/types": ^7.18.9 + checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-compilation-targets@npm:7.18.6" +"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.19.0, @babel/helper-compilation-targets@npm:^7.19.3": + version: 7.20.0 + resolution: "@babel/helper-compilation-targets@npm:7.20.0" dependencies: - "@babel/compat-data": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.20.2 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f09ddaddc83c241cb7a040025e2ba558daa1c950ce878604d91230aed8d8a90f10dfd5bb0b67bc5b3db8af1576a0d0dac1d65959a06a17259243dbb5730d0ed1 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.19.0, @babel/helper-compilation-targets@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-compilation-targets@npm:7.19.1" - dependencies: - "@babel/compat-data": ^7.19.1 + "@babel/compat-data": ^7.20.0 "@babel/helper-validator-option": ^7.18.6 browserslist: ^4.21.3 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: c2d3039265e498b341a6b597f855f2fcef02659050fefedf36ad4e6815e6aafe1011a761214cc80d98260ed07ab15a8cbe959a0458e97bec5f05a450e1b1741b + checksum: bc183f2109648849c8fde0b3c5cf08adf2f7ad6dc617b546fd20f34c8ef574ee5ee293c8d1bd0ed0221212e8f5907cdc2c42097870f1dcc769a654107d82c95b languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-create-class-features-plugin@npm:7.18.6" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.19.0" dependencies: "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-function-name": ^7.18.6 - "@babel/helper-member-expression-to-functions": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.19.0 + "@babel/helper-member-expression-to-functions": ^7.18.9 "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 + "@babel/helper-replace-supers": ^7.18.9 "@babel/helper-split-export-declaration": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: 4d6da441ce329867338825c044c143f0b273cbfc6a20b9099e824a46f916584f44eabab073f78f02047d86719913e8f1a8bd72f42099ebe52691c29fabb992e4 + checksum: f0c6fb77b6f113d70f308e7093f60dd465b697818badf5df0519d8dd12b6bfb1f4ad300b923207ce9f9c1c940ef58bff12ac4270c0863eadf9e303b7dd6d01b6 languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.1.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 2d76e660cbfd0bfcb01ca9f177f0e9091c871a6b99f68ece6bcf4ab4a9df073485bdc2d87ecdfbde44b7f3723b26d13085d0f92082adb3ae80d31b246099f10a - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.19.0": +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.19.0": version: 7.19.0 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.19.0" dependencies: @@ -171,24 +127,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.3.1": - version: 0.3.1 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.1" - dependencies: - "@babel/helper-compilation-targets": ^7.13.0 - "@babel/helper-module-imports": ^7.12.13 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/traverse": ^7.13.0 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: e3e93cb22febfc0449a210cdafb278e5e1a038af2ca2b02f5dee71c7a49e8ba26e469d631ee11a4243885961a62bb2e5b0a4deb3ec1d7918a33c953d05c3e584 - languageName: node - linkType: hard - "@babel/helper-define-polyfill-provider@npm:^0.3.3": version: 0.3.3 resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" @@ -205,13 +143,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-environment-visitor@npm:7.18.6" - checksum: 64fce65a26efb50d2496061ab2de669dc4c42175a8e05c82279497127e5c542538ed22b38194f6f5a4e86bed6ef5a4890aed23408480db0555728b4ca660fc9c - languageName: node - linkType: hard - "@babel/helper-environment-visitor@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-environment-visitor@npm:7.18.9" @@ -228,16 +159,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-function-name@npm:7.18.6" - dependencies: - "@babel/template": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: bf84c2e0699aa07c3559d4262d199d4a9d0320037c2932efe3246866c3e01ce042c9c2131b5db32ba2409a9af01fb468171052819af759babc8ca93bdc6c9aeb - languageName: node - linkType: hard - "@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0": version: 7.19.0 resolution: "@babel/helper-function-name@npm:7.19.0" @@ -257,15 +178,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-member-expression-to-functions@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 20c8e82d2375534dfe4d4adeb01d94906e5e616143bb2775e9f1d858039d87a0f79220e0a5c2ed410c54ccdeda47a4c09609b396db1f98fe8ce9e420894ac2f3 - languageName: node - linkType: hard - "@babel/helper-member-expression-to-functions@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" @@ -275,7 +187,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.18.6": +"@babel/helper-module-imports@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-module-imports@npm:7.18.6" dependencies: @@ -284,35 +196,19 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-transforms@npm:7.18.6" - dependencies: - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.18.6 - "@babel/template": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: 75d90be9ecd314fe2f1b668ce065d7e8b3dff82eddea88480259c5d4bd54f73a909d0998909ffe734a44ba8be85ba233359033071cc800db209d37173bd26db2 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-module-transforms@npm:7.19.0" +"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.19.6": + version: 7.19.6 + resolution: "@babel/helper-module-transforms@npm:7.19.6" dependencies: "@babel/helper-environment-visitor": ^7.18.9 "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.18.6 + "@babel/helper-simple-access": ^7.19.4 "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.18.6 + "@babel/helper-validator-identifier": ^7.19.1 "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.0 - "@babel/types": ^7.19.0 - checksum: 4483276c66f56cf3b5b063634092ad9438c2593725de5c143ba277dda82f1501e6d73b311c1b28036f181dbe36eaeff29f24726cde37a599d4e735af294e5359 + "@babel/traverse": ^7.19.6 + "@babel/types": ^7.19.4 + checksum: c28692b37d4b5abacc775bcab52a74f44a493f38c58cb72b56a6c6d67a97485dd8aff6f26905abd1a924d3261a171d0214a9fb76f48d8598f1e35b8b29284792 languageName: node linkType: hard @@ -325,35 +221,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.18.6 - resolution: "@babel/helper-plugin-utils@npm:7.18.6" - checksum: 3dbfceb6c10fdf6c78a0e57f24e991ff8967b8a0bd45fe0314fb4a8ccf7c8ad4c3778c319a32286e7b1f63d507173df56b4e69fb31b71e1b447a73efa1ca723e - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.19.0 resolution: "@babel/helper-plugin-utils@npm:7.19.0" checksum: eedc996c633c8c207921c26ec2989eae0976336ecd9b9f1ac526498f52b5d136f7cd03c32b6fdf8d46a426f907c142de28592f383c42e5fba1e904cbffa05345 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-wrap-function": ^7.18.6 - "@babel/types": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 83e890624da9413c74a8084f6b5f7bfe93abad8a6e1a33464f3086e2a1336751672e6ac6d74dddd35b641d19584cc0f93d02c52a4f33385b3be5b40942fe30da - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.18.9": +"@babel/helper-remap-async-to-generator@npm:^7.18.6, @babel/helper-remap-async-to-generator@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" dependencies: @@ -367,20 +242,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-replace-supers@npm:7.18.6" - dependencies: - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-member-expression-to-functions": ^7.18.6 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: 48e869dc8d3569136d239cd6354687e49c3225b114cb2141ed3a5f31cff5278f463eb25913df3345489061f377ad5d6e49778bddedd098fa8ee3adcec07cc1d3 - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.9": +"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.18.9, @babel/helper-replace-supers@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-replace-supers@npm:7.19.1" dependencies: @@ -393,30 +255,21 @@ __metadata: languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-simple-access@npm:7.18.6" +"@babel/helper-simple-access@npm:^7.19.4": + version: 7.19.4 + resolution: "@babel/helper-simple-access@npm:7.19.4" dependencies: - "@babel/types": ^7.18.6 - checksum: 37cd36eef199e0517845763c1e6ff6ea5e7876d6d707a6f59c9267c547a50aa0e84260ba9285d49acfaf2cfa0a74a772d92967f32ac1024c961517d40b6c16a5 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 069750f9690b2995617c42be4b7848a4490cd30f1edc72401d9d2ae362bc186d395b7d8c1e171c1b6c09751642ab1bba578cccf8c0dfc82b4541f8627965aea7 + "@babel/types": ^7.19.4 + checksum: 964cb1ec36b69aabbb02f8d5ee1d680ebbb628611a6740958d9b05107ab16c0492044e430618ae42b1f8ea73e4e1bafe3750e8ebc959d6f3277d9cfbe1a94880 languageName: node linkType: hard "@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.18.9" + version: 7.20.0 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" dependencies: - "@babel/types": ^7.18.9 - checksum: 6e93ccd10248293082606a4b3e30eed32c6f796d378f6b662796c88f462f348aa368aadeb48eb410cfcc8250db93b2d6627c2e55662530f08fc25397e588d68a + "@babel/types": ^7.20.0 + checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd languageName: node linkType: hard @@ -429,17 +282,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/helper-string-parser@npm:7.18.10" - checksum: d554a4393365b624916b5c00a4cc21c990c6617e7f3fe30be7d9731f107f12c33229a7a3db9d829bfa110d2eb9f04790745d421640e3bd245bb412dc0ea123c1 +"@babel/helper-string-parser@npm:^7.19.4": + version: 7.19.4 + resolution: "@babel/helper-string-parser@npm:7.19.4" + checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-identifier@npm:7.18.6" - checksum: e295254d616bbe26e48c196a198476ab4d42a73b90478c9842536cf910ead887f5af6b5c4df544d3052a25ccb3614866fa808dc1e3a5a4291acd444e243c0648 +"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": + version: 7.19.1 + resolution: "@babel/helper-validator-identifier@npm:7.19.1" + checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a languageName: node linkType: hard @@ -450,18 +303,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-wrap-function@npm:7.18.6" - dependencies: - "@babel/helper-function-name": ^7.18.6 - "@babel/template": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: b7a4f59b302ed77407e5c2005d8677ebdeabbfa69230e15f80b5e06cc532369c1e48399ec3e67dd3341e7ab9b3f84f17a255e2c1ec4e0d42bb571a4dac5472d6 - languageName: node - linkType: hard - "@babel/helper-wrap-function@npm:^7.18.9": version: 7.19.0 resolution: "@babel/helper-wrap-function@npm:7.19.0" @@ -474,14 +315,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helpers@npm:7.18.6" +"@babel/helpers@npm:^7.19.4": + version: 7.20.0 + resolution: "@babel/helpers@npm:7.20.0" dependencies: - "@babel/template": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: 5dea4fa53776703ae4190cacd3f81464e6e00cf0b6908ea9b0af2b3d9992153f3746dd8c33d22ec198f77a8eaf13a273d83cd8847f7aef983801e7bfafa856ec + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.20.0 + "@babel/types": ^7.20.0 + checksum: a68f271474eabc06d64db3d22f435068c3451ba55828f22b72db0e392dff911a6813de3c7bb783e6e4756fd97f8910904d6d647de92a3dc3bfae14688a1a907a languageName: node linkType: hard @@ -496,21 +337,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.18.6, @babel/parser@npm:^7.7.0": - version: 7.18.6 - resolution: "@babel/parser@npm:7.18.6" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.6, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.7.0": + version: 7.20.0 + resolution: "@babel/parser@npm:7.20.0" bin: parser: ./bin/babel-parser.js - checksum: 533ffc26667b7e2e0d87ae11368d90b6a3a468734d6dfe9c4697c24f48373cf9cc35ee08e416728f087fc56531b68022f752097941feddc60e0223d69a4d4cad - languageName: node - linkType: hard - -"@babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/parser@npm:7.19.1" - bin: - parser: ./bin/babel-parser.js - checksum: b1e0acb346b2a533c857e1e97ac0886cdcbd76aafef67835a2b23f760c10568eb53ad8a27dd5f862d8ba4e583742e6067f107281ccbd68959d61bc61e4ddaa51 + checksum: d54d68e45ff1b9a0c50a3f79d9031f482eb58f18928525949dc20da5b1658ee79167e756129371fd75d3e8fc7e218ab707727145a68958636be9672c7b71768e languageName: node linkType: hard @@ -538,21 +370,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.18.6" - dependencies: - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-remap-async-to-generator": ^7.18.6 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3f708808ba6f8a9bd18805b1b22ab90ec0b362d949111a776e0bade5391f143f55479dcc444b2cec25fc89ac21035ee92e9a5ec37c02c610639197a0c2f7dcb0 - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.19.1": +"@babel/plugin-proposal-async-generator-functions@npm:^7.0.0, @babel/plugin-proposal-async-generator-functions@npm:^7.19.1": version: 7.19.1 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.19.1" dependencies: @@ -591,6 +409,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-decorators@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/plugin-proposal-decorators@npm:7.20.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.19.0 + "@babel/helper-plugin-utils": ^7.19.0 + "@babel/helper-replace-supers": ^7.19.1 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/plugin-syntax-decorators": ^7.19.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b882bf758c9e098ead68a05e3e912f427a5b286c7174a582ccf38cf02a679ce1372282a45fb1987b2ffd7e9923fc38e6913fa54e165f5640c334c2c6a74e761f + languageName: node + linkType: hard + "@babel/plugin-proposal-dynamic-import@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" @@ -604,14 +437,14 @@ __metadata: linkType: hard "@babel/plugin-proposal-export-default-from@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-proposal-export-default-from@npm:7.18.6" + version: 7.18.10 + resolution: "@babel/plugin-proposal-export-default-from@npm:7.18.10" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.9 "@babel/plugin-syntax-export-default-from": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fc5c9d6c05d4c9970c7b1915698b456f23bcd492f0ba16a297429c4fb1ef03dea2ba6eb489805d8e882c4cdb3195ae18c29cfce4a9e99400e6e02b5f3d552d21 + checksum: 2a12387e095ccd02a1560e5dd40812a83befe581d319685ae2a95f0650a4500381c1d9c710e6e29b34a1b053f9632ee2d3827b937e1cc5c9d2555280da22df53 languageName: node linkType: hard @@ -675,33 +508,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.18.6" +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.19.4": + version: 7.19.4 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.19.4" dependencies: - "@babel/compat-data": ^7.18.6 - "@babel/helper-compilation-targets": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9b7516bad285a8706beb5e619cf505364bfbe79e219ae86d2139b32010d238d146301c1424488926a57f6d729556e21cfccab29f28c26ecd0dda05e53d7160b1 - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.18.9" - dependencies: - "@babel/compat-data": ^7.18.8 - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/compat-data": ^7.19.4 + "@babel/helper-compilation-targets": ^7.19.3 + "@babel/helper-plugin-utils": ^7.19.0 "@babel/plugin-syntax-object-rest-spread": ^7.8.3 "@babel/plugin-transform-parameters": ^7.18.8 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 66b9bae741d46edf1c96776d26dfe5d335981e57164ec2450583e3d20dfaa08a5137ffebb897e443913207789f9816bfec4ae845f38762c0196a60949eaffdba + checksum: 90a2a59da305e6c8c83831e16079193df33d727a77a90972e286af2c8c0295fddb91b0978b88f16f63080d08a82b08ce3ee82a88b0488b3c51decc73c1d35786 languageName: node linkType: hard @@ -717,20 +535,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.0.0, @babel/plugin-proposal-optional-chaining@npm:^7.13.12": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.6 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9c3bf80cfb41ee53a2a5d0f316ef5d125bb0d400ede1ee1a68a9b7dfc998036cca20c3901cb5c9e24fdd9f08c0056030e042f4637bc9bbc36b682384b38e2d96 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.18.9": +"@babel/plugin-proposal-optional-chaining@npm:^7.0.0, @babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.9" dependencies: @@ -792,7 +597,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13": +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -814,6 +630,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-decorators@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/plugin-syntax-decorators@npm:7.19.0" + dependencies: + "@babel/helper-plugin-utils": ^7.19.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 105a13d581a8643ba145d4d0d31f34a492b352defa5b155e785702da6ce9c3ff0c1843ba9bee176e35f6e38afa19dc7bd12c120220af0495de4b128f1dd27f6e + languageName: node + linkType: hard + "@babel/plugin-syntax-dynamic-import@npm:^7.0.0, @babel/plugin-syntax-dynamic-import@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" @@ -859,13 +686,24 @@ __metadata: linkType: hard "@babel/plugin-syntax-import-assertions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.18.6" + version: 7.20.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 54918a05375325ba0c60bc81abfb261e6f118bed2de94e4c17dca9a2006fc25e13b1a8b5504b9a881238ea394fd2f098f60b2eb3a392585d6348874565445e7b + checksum: 6a86220e0aae40164cd3ffaf80e7c076a1be02a8f3480455dddbae05fda8140f429290027604df7a11b3f3f124866e8a6d69dbfa1dda61ee7377b920ad144d5b + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b languageName: node linkType: hard @@ -880,7 +718,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.18.6": +"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.18.6 resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" dependencies: @@ -891,7 +729,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: @@ -913,7 +751,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: @@ -968,7 +806,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": +"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": version: 7.14.5 resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: @@ -979,14 +817,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.18.6" +"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.20.0 + resolution: "@babel/plugin-syntax-typescript@npm:7.20.0" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2cde73725ec51118ebf410bf02d78781c03fa4d3185993fcc9d253b97443381b621c44810084c5dd68b92eb8bdfae0e5b163e91b32bebbb33852383d1815c05d + checksum: 6189c0b5c32ba3c9a80a42338bd50719d783b20ef29b853d4f03929e971913d3cefd80184e924ae98ad6db09080be8fe6f1ffde9a6db8972523234f0274d36f7 languageName: node linkType: hard @@ -1025,47 +863,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoping@npm:7.18.6" +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.19.4": + version: 7.20.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.20.0" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b117a005a9d5aedacc4a899a4d504b7f46e4c1e852b62d34a7f1cb06caecb1f69507b6a07d0ba6c6241ddd8f470bc6f483513d87637e49f6c508aadf23cf391a + checksum: ff5ba1a2c481047e3a1fd880e78a4942ad05c0ead1424e2db150fa4009b86707d66e945173abb14451ed5ca605a19620a2b9414d16407d296326ab26219ef511 languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-block-scoping@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f8064ea431eb7aa349dc5b6be87a650f912b48cd65afde917e8644f6f840d7f9d2ce4795f2aa3955aa5b23a73d4ad38abd03386ae109b4b8702b746c6d35bda3 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-classes@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-function-name": ^7.18.6 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 661e37037912a25a77fe8bef7e9d480c24ff4ba4000a3137243b098c86cf5ddc970af66c5c245f828c7dcfafc24e80d260f31274e2f2d6dce49a0964a7648a0c - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.19.0": +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.19.0": version: 7.19.0 resolution: "@babel/plugin-transform-classes@npm:7.19.0" dependencies: @@ -1084,18 +893,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-computed-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 686d7b9d03192959684de11ddf9c616ecfb314b199e9191f2ebbbfe0e0c9d6a3a5245668cde620e949e5891ca9a9d90a224fbf605dfb94d05b81aff127c5ae60 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.18.9": +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-computed-properties@npm:7.18.9" dependencies: @@ -1106,25 +904,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-destructuring@npm:7.18.6" +"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.19.4": + version: 7.20.0 + resolution: "@babel/plugin-transform-destructuring@npm:7.20.0" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 256573bd2712e292784befb82fcb88b070c16b4d129469ea886885d8fbafdbb072c9fcf7f82039d2c61b05f2005db34e5068b2a6e813941c41ce709249f357c1 - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.18.13": - version: 7.18.13 - resolution: "@babel/plugin-transform-destructuring@npm:7.18.13" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 83e44ec93a4cfbf69376db8836d00ec803820081bf0f8b6cea73a9b3cd320b8285768d5b385744af4a27edda4b6502245c52d3ed026ea61356faf57bfe78effb + checksum: ce43dfcc36254ac2aef386465942f46f9901cec5d14e8aef68ebced71d46fed7d9ec88046fe2e47a57a769a26cc20ec61c4c4f13efb733ad3a82edea52aa7bdf languageName: node linkType: hard @@ -1163,30 +950,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.18.6" +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.18.6, @babel/plugin-transform-flow-strip-types@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.19.0" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.19.0 "@babel/plugin-syntax-flow": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: aff87510c4f66f8fdc72bd2b3a2ccf18cb7b94a36f1ab92029b4f7eafe54b4edcf2de4f017504325c5212adefc60a5e1548cf4b5b374d52f2be9a9a854113cfc + checksum: c35339bf80c2a2b9abb9e2ce0382e1d9cc3ef7db2af127f4ec3d184bad2aec3269f3fcac5fdcd565439732803acad72eb9e7d5a18e439221526fdc041c9e8e1e languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-for-of@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fd92e18d6cd90063c4d5c7562d8b6ed1c7bd6c13a9451966ebfcc5f0f5645f306de615207322eafd06e297ea2339e28ba664e3ed276759dde8e14fbdce4cf108 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.18.8": +"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.18.8": version: 7.18.8 resolution: "@babel/plugin-transform-for-of@npm:7.18.8" dependencies: @@ -1197,20 +973,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-function-name@npm:7.18.6" - dependencies: - "@babel/helper-compilation-targets": ^7.18.6 - "@babel/helper-function-name": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d15d36f52d11a1b6dde3cfc0975eb9c030d66207875a722860bc0637f7515f94107b35320306967faaaa896523097e8f5c3dd6982d926f52016525ceaa9e3e42 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.18.9": +"@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-function-name@npm:7.18.9" dependencies: @@ -1223,18 +986,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 859e2405d51931c8c0ea39890c0bcf6c7c01793fe99409844fe122e4c342528f87cd13b8210dd2873ecf5c643149b310c4bc5eb9a4c45928de142063ab04b2b8 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.18.9": +"@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-literals@npm:7.18.9" dependencies: @@ -1257,44 +1009,41 @@ __metadata: linkType: hard "@babel/plugin-transform-modules-amd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-amd@npm:7.18.6" + version: 7.19.6 + resolution: "@babel/plugin-transform-modules-amd@npm:7.19.6" dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - babel-plugin-dynamic-import-node: ^2.3.3 + "@babel/helper-module-transforms": ^7.19.6 + "@babel/helper-plugin-utils": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f60c4c4e0eaec41e42c003cbab44305da7a8e05b2c9bdfc2b3fe0f9e1d7441c959ff5248aa03e350abe530e354028cbf3aa20bf07067b11510997dad8dd39be0 + checksum: 4236aad970025bc10c772c1589b1e2eab8b7681933bb5ffa6e395d4c1a52532b28c47c553e3011b4272ea81e5ab39fe969eb5349584e8390e59771055c467d42 languageName: node linkType: hard "@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.18.6" + version: 7.19.6 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.19.6" dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-simple-access": ^7.18.6 - babel-plugin-dynamic-import-node: ^2.3.3 + "@babel/helper-module-transforms": ^7.19.6 + "@babel/helper-plugin-utils": ^7.19.0 + "@babel/helper-simple-access": ^7.19.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7e356e3df8a6a8542cced7491ec5b1cc1093a88d216a59e63a5d2b9fe9d193cbea864f680a41429e41a4f9ecec930aa5b0b8f57e2b17b3b4d27923bb12ba5d14 + checksum: 85d46945ab5ba3fff89e962d560a5d40253f228b9659a697683db3de07c0236e8cd60e5eb41958007359951a42bc268bf32350fcdb5b4a86f58dff1e032c096e languageName: node linkType: hard "@babel/plugin-transform-modules-systemjs@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.19.0" + version: 7.19.6 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.19.6" dependencies: "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.19.0 + "@babel/helper-module-transforms": ^7.19.6 "@babel/helper-plugin-utils": ^7.19.0 - "@babel/helper-validator-identifier": ^7.18.6 - babel-plugin-dynamic-import-node: ^2.3.3 + "@babel/helper-validator-identifier": ^7.19.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a0742deee4a076d6fc303d036c1ea2bea9b7d91af390483fe91fc415f9cb43925bb5dd930fdcb8fcdc9d4c7a22774a3cec521c67f1422a9b473debcb85ee57f9 + checksum: 8526431cc81ea3eb232ad50862d0ed1cbb422b5251d14a8d6610d0ca0617f6e75f35179e98eb1235d0cccb980120350b9f112594e5646dd45378d41eaaf87342 languageName: node linkType: hard @@ -1310,19 +1059,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 6ef64aa3dad68df139eeaa7b6e9bb626be8f738ed5ed4db765d516944b1456d513b6bad3bb60fff22babe73de26436fd814a4228705b2d3d2fdb272c31da35e2 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.19.1": +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.19.1": version: 7.19.1 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.19.1" dependencies: @@ -1368,18 +1105,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-parameters@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35bfdf5b2e7f4c10b68aff317b6d47cc5b2261b85158f427696e1ce17f3da466a098ad4e57dc3deb4e7b349994313cfe459d42ecd5f4028989bcc710e62ed709 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.18.8": +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.18.8": version: 7.18.8 resolution: "@babel/plugin-transform-parameters@npm:7.18.8" dependencies: @@ -1424,28 +1150,28 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx-source@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.18.6" + version: 7.19.6 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.19.6" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7e17e631820955f158c16e9b01a96cf82e3ee81bb3c7c03f2896ee0d41da3e8a7557546893bc81792afe46b817c4e9014fd6e4de8644fcf16fd0f7c4daf66e41 + checksum: 1e9e29a4efc5b79840bd4f68e404f5ab7765ce48c7bd22f12f2b185f9c782c66933bdf54a1b21879e4e56e6b50b4e88aca82789ecb1f61123af6dfa9ab16c555 languageName: node linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx@npm:7.18.6" + version: 7.19.0 + resolution: "@babel/plugin-transform-react-jsx@npm:7.19.0" dependencies: "@babel/helper-annotate-as-pure": ^7.18.6 "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.19.0 "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.18.6 + "@babel/types": ^7.19.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 46129eaf1ab7a7a73e3e8c9d9859b630f5b381c5e19fb1559e2db7b943a7825b6715ad950623fb03fe7bd31ed618ce1d0bd539b13fa030a50c39d5a873a5ba00 + checksum: d7d6f0b8f24b1f6b7cf8062c4e91c59af82489a993e51859bd49c2d62a2d2b77fd40b02a9a1d0e6d874cf4ce56a05fa3564b964587d00c94ebc62593524052ec languageName: node linkType: hard @@ -1473,18 +1199,18 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-runtime@npm:7.18.6" + version: 7.19.6 + resolution: "@babel/plugin-transform-runtime@npm:7.19.6" dependencies: "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - babel-plugin-polyfill-corejs2: ^0.3.1 - babel-plugin-polyfill-corejs3: ^0.5.2 - babel-plugin-polyfill-regenerator: ^0.3.1 + "@babel/helper-plugin-utils": ^7.19.0 + babel-plugin-polyfill-corejs2: ^0.3.3 + babel-plugin-polyfill-corejs3: ^0.6.0 + babel-plugin-polyfill-regenerator: ^0.4.1 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ed1ee31d02c86b4cad3d38678fd9593a50478588c1ad15b0128135dfbfb463555d49335a55d1486c3a15c5791e6ef9e21a3cc124c555b250fadfd83861ac61d2 + checksum: ef93efbcbb00dcf4da6dcc55bda698a2a57fca3fb05a6a13e932ecfdb7c1c5d2f0b5b245c1c4faca0318853937caba0d82442f58b7653249f64275d08052fbd8 languageName: node linkType: hard @@ -1499,19 +1225,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-spread@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 996b139ed68503700184f709dc996f285be285282d1780227185b622d9642f5bd60996fcfe910ed0495834f1935df805e7abb36b4b587222264c61020ba4485b - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.19.0": +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.19.0": version: 7.19.0 resolution: "@babel/plugin-transform-spread@npm:7.19.0" dependencies: @@ -1534,18 +1248,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6ec354415f92850c927dd3ad90e337df8ee1aeb4cdb2c643208bc8652be91f647c137846586b14bc2b2d7ec408c2b74af2d154ba0972a4fe8b559f8c3e07a3aa - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.18.9": +"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" dependencies: @@ -1568,15 +1271,15 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.18.6, @babel/plugin-transform-typescript@npm:^7.5.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-typescript@npm:7.18.6" + version: 7.20.0 + resolution: "@babel/plugin-transform-typescript@npm:7.20.0" dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-typescript": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.19.0 + "@babel/helper-plugin-utils": ^7.19.0 + "@babel/plugin-syntax-typescript": ^7.20.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9dc070304688dd183b2abb6bdac6f4b1939df7cc8caf32c57327bf90de26abce2130c5d807e82e25287d3a3e23f7532c9f7afd44a2e7bb815cae92015d352925 + checksum: 7cc335a95374d03e09ec48fe313dccde477ab4784f26f7b24fdc7a9db3c670759c3c8177a671a68365467c0885dad82b5dda3f57ba0b6bf7459f4ae55fae4ee4 languageName: node linkType: hard @@ -1604,11 +1307,11 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/preset-env@npm:7.19.1" + version: 7.19.4 + resolution: "@babel/preset-env@npm:7.19.4" dependencies: - "@babel/compat-data": ^7.19.1 - "@babel/helper-compilation-targets": ^7.19.1 + "@babel/compat-data": ^7.19.4 + "@babel/helper-compilation-targets": ^7.19.3 "@babel/helper-plugin-utils": ^7.19.0 "@babel/helper-validator-option": ^7.18.6 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 @@ -1622,7 +1325,7 @@ __metadata: "@babel/plugin-proposal-logical-assignment-operators": ^7.18.9 "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.18.9 + "@babel/plugin-proposal-object-rest-spread": ^7.19.4 "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 "@babel/plugin-proposal-optional-chaining": ^7.18.9 "@babel/plugin-proposal-private-methods": ^7.18.6 @@ -1646,10 +1349,10 @@ __metadata: "@babel/plugin-transform-arrow-functions": ^7.18.6 "@babel/plugin-transform-async-to-generator": ^7.18.6 "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.18.9 + "@babel/plugin-transform-block-scoping": ^7.19.4 "@babel/plugin-transform-classes": ^7.19.0 "@babel/plugin-transform-computed-properties": ^7.18.9 - "@babel/plugin-transform-destructuring": ^7.18.13 + "@babel/plugin-transform-destructuring": ^7.19.4 "@babel/plugin-transform-dotall-regex": ^7.18.6 "@babel/plugin-transform-duplicate-keys": ^7.18.9 "@babel/plugin-transform-exponentiation-operator": ^7.18.6 @@ -1676,7 +1379,7 @@ __metadata: "@babel/plugin-transform-unicode-escapes": ^7.18.10 "@babel/plugin-transform-unicode-regex": ^7.18.6 "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.19.0 + "@babel/types": ^7.19.4 babel-plugin-polyfill-corejs2: ^0.3.3 babel-plugin-polyfill-corejs3: ^0.6.0 babel-plugin-polyfill-regenerator: ^0.4.1 @@ -1684,7 +1387,7 @@ __metadata: semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3fcd4f3e768b8b0c9e8f9fb2b23d694d838d3cc936c783aaa9c436b863ae24811059b6ffed80e2ac7d54e7d2c18b0a190f4de05298cf461d27b2817b617ea71f + checksum: f12af25281f3c5e7df60fa1e79ad481ddd7f6a111d4c0fabcffdabf0eaed3a01b4f8c647ae5445ed1f58df70f52083ffd283e8919ade7afa73801a49c733d22c languageName: node linkType: hard @@ -1730,8 +1433,8 @@ __metadata: linkType: hard "@babel/register@npm:^7.13.16": - version: 7.18.6 - resolution: "@babel/register@npm:7.18.6" + version: 7.18.9 + resolution: "@babel/register@npm:7.18.9" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 @@ -1740,31 +1443,20 @@ __metadata: source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2e55995a7fe45cd5394c71c4f9c5b55c948c069a3369c4d3756ad5c26e560f16f655b207c5bb70d3d0eabf2c95daf4ae3a3444977e99678e365effafab1cc8f3 + checksum: 4aeaff97e061a397f632659082ba86c539ef8194697b236d991c10d1c2ea8f73213d3b5b3b2c24625951a1ef726b7a7d2e70f70ffcb37f79ef0c1a745eebef21 languageName: node linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.8.4": - version: 7.18.6 - resolution: "@babel/runtime@npm:7.18.6" + version: 7.20.0 + resolution: "@babel/runtime@npm:7.20.0" dependencies: - regenerator-runtime: ^0.13.4 - checksum: 8b707b64ae0524db617d0c49933b258b96376a38307dc0be8fb42db5697608bcc1eba459acce541e376cff5ed5c5287d24db5780bd776b7c75ba2c2e26ff8a2c + regenerator-runtime: ^0.13.10 + checksum: 637fca51db34f3a59d329b7e0d01163769fe94915fdb04e4ac4ba62de9f1ca637ce3a564fe3b0166ccdd7f02f14b6a5707ee3e550b3e01c72327c6620d8e6a8b languageName: node linkType: hard -"@babel/template@npm:^7.0.0, @babel/template@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/template@npm:7.18.6" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: cb02ed804b7b1938dbecef4e01562013b80681843dd391933315b3dd9880820def3b5b1bff6320d6e4c6a1d63d1d5799630d658ec6b0369c5505e7e4029c38fb - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10": +"@babel/template@npm:^7.0.0, @babel/template@npm:^7.18.10, @babel/template@npm:^7.3.3": version: 7.18.10 resolution: "@babel/template@npm:7.18.10" dependencies: @@ -1775,82 +1467,51 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.18.6, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.7.4": - version: 7.18.6 - resolution: "@babel/traverse@npm:7.18.6" +"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.6, @babel/traverse@npm:^7.20.0, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.7.2, @babel/traverse@npm:^7.7.4": + version: 7.20.0 + resolution: "@babel/traverse@npm:7.20.0" dependencies: "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-function-name": ^7.18.6 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.18.6 - "@babel/types": ^7.18.6 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 5427a9db63984b2600f62b257dab18e3fc057997b69d708573bfc88eb5eacd6678fb24fddba082d6ac050734b8846ce110960be841ea1e461d66e2cde72b6b07 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/traverse@npm:7.19.1" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.0 + "@babel/generator": ^7.20.0 "@babel/helper-environment-visitor": ^7.18.9 "@babel/helper-function-name": ^7.19.0 "@babel/helper-hoist-variables": ^7.18.6 "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.1 - "@babel/types": ^7.19.0 + "@babel/parser": ^7.20.0 + "@babel/types": ^7.20.0 debug: ^4.1.0 globals: ^11.1.0 - checksum: 9d782b5089ebc989e54c2406814ed1206cb745ed2734e6602dee3e23d4b6ebbb703ff86e536276630f8de83fda6cde99f0634e3c3d847ddb40572d0303ba8800 + checksum: 19615ec2c3467f929dfa2ae98494961a2c7b333b6628e1c7643188d936abc167c41f5af541b692b1ca776a4d066291a7eb8b22f98aba3d496f362bae4c2082cd languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.7, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0": - version: 7.18.7 - resolution: "@babel/types@npm:7.18.7" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.4, @babel/types@npm:^7.20.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": + version: 7.20.0 + resolution: "@babel/types@npm:7.20.0" dependencies: - "@babel/helper-validator-identifier": ^7.18.6 + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 to-fast-properties: ^2.0.0 - checksum: 3114ce161c4ebcb70271e168aa5af5cecedf3278209161d5ba6124bd3f9cb02e3f3ace587ad1b53f7baa153b6b3714720721c72a9ef3ec451663862f9cc1f014 + checksum: 8729b1114c707a03625cd79e3ae3a28d69b36ddcf804cb0a4599af226e5e9fad71665bdc0e56c43527ecfcabc545d9c797231f5ce718ae1ab52d31a57b6c2024 languageName: node linkType: hard -"@babel/types@npm:^7.18.10, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/types@npm:7.19.0" - dependencies: - "@babel/helper-string-parser": ^7.18.10 - "@babel/helper-validator-identifier": ^7.18.6 - to-fast-properties: ^2.0.0 - checksum: 9b346715a68aeede70ba9c685a144b0b26c53bcd595d448e24c8fa8df4d5956a5712e56ebadb7c85dcc32f218ee42788e37b93d50d3295c992072224cb3ef3fe - languageName: node - linkType: hard - -"@babel/types@npm:^7.8.3": - version: 7.18.9 - resolution: "@babel/types@npm:7.18.9" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - to-fast-properties: ^2.0.0 - checksum: f0e0147267895fd8a5b82133e711ce7ce99941f3ce63647e0e3b00656a7afe48a8aa48edbae27543b701794d2b29a562a08f51f88f41df401abce7c3acc5e13a +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 languageName: node linkType: hard "@callstack/react-theme-provider@npm:^3.0.7": - version: 3.0.7 - resolution: "@callstack/react-theme-provider@npm:3.0.7" + version: 3.0.8 + resolution: "@callstack/react-theme-provider@npm:3.0.8" dependencies: deepmerge: ^3.2.0 hoist-non-react-statics: ^3.3.0 peerDependencies: react: ">=16.3.0" - checksum: a39524d2bbc29b66d77d30ab4c169ae57fa5a435a2447febb4643d7431d525ca6025acebf1fcdbebd761f54f16f1e40f6745cf60acd5776851e8c1d546a1f32f + checksum: 6077a4795aea4eb06a2a2ffe5cf299c3fdcba56530aa68eba5c3ac0728ce02be2f6e9e71278be303065cb7fbe252c35639538477d5d05ee14f6325d550c8c696 languageName: node linkType: hard @@ -1904,13 +1565,13 @@ __metadata: linkType: hard "@humanwhocodes/config-array@npm:^0.11.6": - version: 0.11.6 - resolution: "@humanwhocodes/config-array@npm:0.11.6" + version: 0.11.7 + resolution: "@humanwhocodes/config-array@npm:0.11.7" dependencies: "@humanwhocodes/object-schema": ^1.2.1 debug: ^4.1.1 - minimatch: ^3.0.4 - checksum: 2fb7288638968dfeec27f06aef52f043726edd126ac47f24b54256902fdb35b3bf9863d4a4caf0423dccca5dd1354ca5899f3ac047b56774641ca0c4cbedb104 + minimatch: ^3.0.5 + checksum: cf506dc45d9488af7fbf108ea6ac2151ba1a25e6d2b94b9b4fc36d2c1e4099b89ff560296dbfa13947e44604d4ca4a90d97a4fb167370bf8dd01a6ca2b6d83ac languageName: node linkType: hard @@ -1928,6 +1589,81 @@ __metadata: languageName: node linkType: hard +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + 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 + checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 + languageName: node + linkType: hard + +"@jest/console@npm:^29.2.1": + version: 29.2.1 + resolution: "@jest/console@npm:29.2.1" + dependencies: + "@jest/types": ^29.2.1 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^29.2.1 + jest-util: ^29.2.1 + slash: ^3.0.0 + checksum: b5f08dc60c32a0212d27782cda86dfeba6d53f24cd023e6e52257224948a17eec77db55782ba1b18e37f10b7ba2481464e6c658bafaba6f8f8f129f1e95c3496 + languageName: node + linkType: hard + +"@jest/core@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/core@npm:29.2.2" + dependencies: + "@jest/console": ^29.2.1 + "@jest/reporters": ^29.2.2 + "@jest/test-result": ^29.2.1 + "@jest/transform": ^29.2.2 + "@jest/types": ^29.2.1 + "@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.2.0 + jest-config: ^29.2.2 + jest-haste-map: ^29.2.1 + jest-message-util: ^29.2.1 + jest-regex-util: ^29.2.0 + jest-resolve: ^29.2.2 + jest-resolve-dependencies: ^29.2.2 + jest-runner: ^29.2.2 + jest-runtime: ^29.2.2 + jest-snapshot: ^29.2.2 + jest-util: ^29.2.1 + jest-validate: ^29.2.2 + jest-watcher: ^29.2.2 + micromatch: ^4.0.4 + pretty-format: ^29.2.1 + slash: ^3.0.0 + strip-ansi: ^6.0.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 47c867fce6484b9716d030e81819ef72effb23fa60ec3f46f631be7ced84fa10f50b409a933423add50a4ac917028c9b4ea7b62ba3a1fbd8b4516a2067bd1740 + languageName: node + linkType: hard + "@jest/create-cache-key-function@npm:^29.0.3": version: 29.2.1 resolution: "@jest/create-cache-key-function@npm:29.2.1" @@ -1937,6 +1673,100 @@ __metadata: languageName: node linkType: hard +"@jest/environment@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/environment@npm:29.2.2" + dependencies: + "@jest/fake-timers": ^29.2.2 + "@jest/types": ^29.2.1 + "@types/node": "*" + jest-mock: ^29.2.2 + checksum: c610e0d8d2f3d8763d6f5b5f8e146306f77c32117e8e8a169fc0d3aa6093b40c4942ef58bf3af7f6a1b4f66eed37e45097323cfe3f9100e368d49fa843b75118 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/expect-utils@npm:29.2.2" + dependencies: + jest-get-type: ^29.2.0 + checksum: 42afdd576ae55c31cbcee50f1efecd338073b88cad146b91b653ef9d67970ebcd457b0fc2236b18a7d82945be7ae0674b9e75a34f0f6067585fd5c89a89bb232 + languageName: node + linkType: hard + +"@jest/expect@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/expect@npm:29.2.2" + dependencies: + expect: ^29.2.2 + jest-snapshot: ^29.2.2 + checksum: 85735d27a49b122083171b3001fc66c804d9f7e16143544d9363389838797fdef5cbc736c560014b63cc3601ad45058a75a4a275147e43d146fde23afd6b19ce + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/fake-timers@npm:29.2.2" + dependencies: + "@jest/types": ^29.2.1 + "@sinonjs/fake-timers": ^9.1.2 + "@types/node": "*" + jest-message-util: ^29.2.1 + jest-mock: ^29.2.2 + jest-util: ^29.2.1 + checksum: aa50573ed899d14ce6afef19ea7f607fd2a091e22b37b17eec4a3b046b5236385f8221cff701329439d758badcec5a3b4d9bfc22fc6c7128d34d1b1c21333c73 + languageName: node + linkType: hard + +"@jest/globals@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/globals@npm:29.2.2" + dependencies: + "@jest/environment": ^29.2.2 + "@jest/expect": ^29.2.2 + "@jest/types": ^29.2.1 + jest-mock: ^29.2.2 + checksum: 94adec44b31b84cdd3f51abf1d824bb62acfa7e0d60b9f7a960fa8677ec5894389262bf6f7fc7fab5b4cce05e3337d0d117a2846faa27dfdff736d6a9585469d + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/reporters@npm:29.2.2" + dependencies: + "@bcoe/v8-coverage": ^0.2.3 + "@jest/console": ^29.2.1 + "@jest/test-result": ^29.2.1 + "@jest/transform": ^29.2.2 + "@jest/types": ^29.2.1 + "@jridgewell/trace-mapping": ^0.3.15 + "@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: ^5.1.0 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.1.3 + jest-message-util: ^29.2.1 + jest-util: ^29.2.1 + jest-worker: ^29.2.1 + slash: ^3.0.0 + string-length: ^4.0.1 + strip-ansi: ^6.0.0 + v8-to-istanbul: ^9.0.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: c8d8c4bd08c2f268bc2df4aba92d55b42cbec2cb0dbffcb33a455c147f80430ea962d3829225370f831e16ca66e55f31ff8e4687546dec05b520fd1ace7a8502 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.0.0": version: 29.0.0 resolution: "@jest/schemas@npm:29.0.0" @@ -1946,6 +1776,64 @@ __metadata: languageName: node linkType: hard +"@jest/source-map@npm:^29.2.0": + version: 29.2.0 + resolution: "@jest/source-map@npm:29.2.0" + dependencies: + "@jridgewell/trace-mapping": ^0.3.15 + callsites: ^3.0.0 + graceful-fs: ^4.2.9 + checksum: 09f76ab63d15dcf44b3035a79412164f43be34ec189575930f1a00c87e36ea0211ebd6a4fbe2253c2516e19b49b131f348ddbb86223ca7b6bbac9a6bc76ec96e + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.2.1": + version: 29.2.1 + resolution: "@jest/test-result@npm:29.2.1" + dependencies: + "@jest/console": ^29.2.1 + "@jest/types": ^29.2.1 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: 8f5f069dcfd54413559544f164950503d6cef587e3596a134a868c11e6b3fe6a99cc691732027500c962bdd22bc46685798b006a5b542359b30883e0d2489615 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/test-sequencer@npm:29.2.2" + dependencies: + "@jest/test-result": ^29.2.1 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.2.1 + slash: ^3.0.0 + checksum: 05a9a218e7ac8f574da3a2c5a85d420d3643124bbb31374675e57c6f6a49ffd942e79514d0f2fa173542e8e5ee7ec544e908aced9958d3523c895ba6c2c03691 + languageName: node + linkType: hard + +"@jest/transform@npm:^29.2.2": + version: 29.2.2 + resolution: "@jest/transform@npm:29.2.2" + dependencies: + "@babel/core": ^7.11.6 + "@jest/types": ^29.2.1 + "@jridgewell/trace-mapping": ^0.3.15 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^1.4.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.2.1 + jest-regex-util: ^29.2.0 + jest-util: ^29.2.1 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + write-file-atomic: ^4.0.1 + checksum: ac12069100c260d1c46e5048bbad35bf0b5408592b918692b87a52c1c0c0e189c9f37ecf48dbcaa6f00ef083e1bc68201844999e1c0f66cd4d9b70127bf77537 + languageName: node + linkType: hard + "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -2007,10 +1895,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.0.8 - resolution: "@jridgewell/resolve-uri@npm:3.0.8" - checksum: 28d739f49b4a52a95843b15669dcb2daaab48f0eaef8f457b9aacd0bdebeb60468d0684f73244f613b786e9d871c25abdbe6f55991bba36814cdadc399dbb3a8 +"@jridgewell/resolve-uri@npm:3.1.0": + version: 3.1.0 + resolution: "@jridgewell/resolve-uri@npm:3.1.0" + checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 languageName: node linkType: hard @@ -2021,20 +1909,20 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10": +"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.14 - resolution: "@jridgewell/trace-mapping@npm:0.3.14" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.17 + resolution: "@jridgewell/trace-mapping@npm:0.3.17" dependencies: - "@jridgewell/resolve-uri": ^3.0.3 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: b9537b9630ffb631aef9651a085fe361881cde1772cd482c257fe3c78c8fd5388d681f504a9c9fe1081b1c05e8f75edf55ee10fdb58d92bbaa8dbf6a7bd6b18c + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 languageName: node linkType: hard @@ -2066,22 +1954,22 @@ __metadata: linkType: hard "@npmcli/fs@npm:^2.1.0": - version: 2.1.0 - resolution: "@npmcli/fs@npm:2.1.0" + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" dependencies: "@gar/promisify": ^1.1.3 semver: ^7.3.5 - checksum: 6ec6d678af6da49f9dac50cd882d7f661934dd278972ffbaacde40d9eaa2871292d634000a0cca9510f6fc29855fbd4af433e1adbff90a524ec3eaf140f1219b + checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 languageName: node linkType: hard "@npmcli/move-file@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/move-file@npm:2.0.0" + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" dependencies: mkdirp: ^1.0.4 rimraf: ^3.0.2 - checksum: 1388777b507b0c592d53f41b9d182e1a8de7763bc625fc07999b8edbc22325f074e5b3ec90af79c89d6987fdb2325bc66d59f483258543c14a43661621f841b0 + checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 languageName: node linkType: hard @@ -2303,22 +2191,22 @@ __metadata: linkType: hard "@react-native-masked-view/masked-view@npm:^0.2.7": - version: 0.2.7 - resolution: "@react-native-masked-view/masked-view@npm:0.2.7" + version: 0.2.8 + resolution: "@react-native-masked-view/masked-view@npm:0.2.8" peerDependencies: react: ">=16" react-native: ">=0.57" - checksum: 65fe8c86c5b0f7519fc1ce6748818ecddb56d9b6e0268a113b409b589cbb46fa632790231e3620f64061bc7ce63bb871c2803a6fa6261cfb3c8655348a595e9b + checksum: b8985511eabfb5d7c89cf3c6beaa45c0f02b1688cd0172787595f7c7374f3d6965d93847f830e7cdca94bd79167e4a5cf3e4914ba8a80d08c2730349cc2d58c2 languageName: node linkType: hard "@react-native-picker/picker@npm:^2.4.4": - version: 2.4.4 - resolution: "@react-native-picker/picker@npm:2.4.4" + version: 2.4.8 + resolution: "@react-native-picker/picker@npm:2.4.8" peerDependencies: react: ">=16" react-native: ">=0.57" - checksum: 8a122707e39f3f6a97536bd7800bdb2a326bdcff85d7e03472250454974a14789c8963c0d99397410955a9bbe31a67cef38bccfd0834b161e8a169e25ecc2304 + checksum: c2ac00b379a9a43188be53ce8e4eb849e6d02ad8a3afe18a88416d8d0d433ac33396eea34a6fdad27f8b4f8c88bc77b4a87fec146c99d987bd91244980762879 languageName: node linkType: hard @@ -2415,8 +2303,8 @@ __metadata: linkType: hard "@react-navigation/stack@npm:^6.3.0": - version: 6.3.0 - resolution: "@react-navigation/stack@npm:6.3.0" + version: 6.3.3 + resolution: "@react-navigation/stack@npm:6.3.3" dependencies: "@react-navigation/elements": ^1.3.6 color: ^4.2.3 @@ -2428,7 +2316,7 @@ __metadata: react-native-gesture-handler: ">= 1.0.0" react-native-safe-area-context: ">= 3.0.0" react-native-screens: ">= 3.0.0" - checksum: fac540297b827249317e1383b6b4d47b3f356e6d20f8e9acadfb5ce5973faf63e56b74b18846837031c15264fc37518701aae16efcf9b8131d22b66f47c19d14 + checksum: 9272c13ab81f68f4b7d4b030edd92763ac54314893836f0ae6645e3b7609f4f1100519c4aa711c0edc88547fee382bcd49770713c200879c4abe79fd62ccbd85 languageName: node linkType: hard @@ -2462,6 +2350,65 @@ __metadata: languageName: node linkType: hard +"@sinonjs/commons@npm:^1.7.0": + version: 1.8.3 + resolution: "@sinonjs/commons@npm:1.8.3" + dependencies: + type-detect: 4.0.8 + checksum: 6159726db5ce6bf9f2297f8427f7ca5b3dff45b31e5cee23496f1fa6ef0bb4eab878b23fb2c5e6446381f6a66aba4968ef2fc255c1180d753d4b8c271636a2e5 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^9.1.2": + version: 9.1.2 + resolution: "@sinonjs/fake-timers@npm:9.1.2" + dependencies: + "@sinonjs/commons": ^1.7.0 + checksum: 7d3aef54e17c1073101cb64d953157c19d62a40e261a30923fa1ee337b049c5f29cc47b1f0c477880f42b5659848ba9ab897607ac8ea4acd5c30ddcfac57fca6 + languageName: node + linkType: hard + +"@sqltools/formatter@npm:^1.2.2": + version: 1.2.5 + resolution: "@sqltools/formatter@npm:1.2.5" + checksum: 9b8354e715467d660daa5afe044860b5686bbb1a5cb67a60866b932effafbf5e8b429f19a8ae67cd412065a4f067161f227e182f3664a0245339d5eb1e26e355 + languageName: node + linkType: hard + +"@testing-library/jest-native@npm:^5.1.2": + version: 5.1.2 + resolution: "@testing-library/jest-native@npm:5.1.2" + dependencies: + chalk: ^4.1.2 + jest-diff: ^29.0.1 + jest-matcher-utils: ^29.0.1 + pretty-format: ^29.0.3 + redent: ^3.0.0 + peerDependencies: + react: ">=16.0.0" + react-native: ">=0.59" + react-test-renderer: ">=16.0.0" + checksum: 3d54035dc4ff30fa2058c1a7c3a7f732048735b7fcc565c21f65134594dfae8c4df86d84594dd9802b6471273552cb648240a4f488db3a83493321fc626f9b12 + languageName: node + linkType: hard + +"@testing-library/react-native@npm:^11.3.0": + version: 11.3.0 + resolution: "@testing-library/react-native@npm:11.3.0" + dependencies: + pretty-format: ^29.0.3 + peerDependencies: + jest: ">=28.0.0" + react: ">=16.0.0" + react-native: ">=0.59" + react-test-renderer: ">=16.0.0" + peerDependenciesMeta: + jest: + optional: true + checksum: fb028396b52e9b27e5151366b67fe4ecdb632504cc1f569e39e84debc216ed50f659abdd0e2e592fc7149cbf25f86e71927d84b239d51ab97e83c4444a80ebde + languageName: node + linkType: hard + "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -2469,6 +2416,47 @@ __metadata: languageName: node linkType: hard +"@types/babel__core@npm:^7.1.14": + version: 7.1.19 + resolution: "@types/babel__core@npm:7.1.19" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: 8c9fa87a1c2224cbec251683a58bebb0d74c497118034166aaa0491a4e2627998a6621fc71f8a60ffd27d9c0c52097defedf7637adc6618d0331c15adb302338 + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.4 + resolution: "@types/babel__generator@npm:7.6.4" + dependencies: + "@babel/types": ^7.0.0 + checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.1 + resolution: "@types/babel__template@npm:7.4.1" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.18.2 + resolution: "@types/babel__traverse@npm:7.18.2" + dependencies: + "@babel/types": ^7.3.0 + checksum: 05972775e21cf07753b3bec725bf76f5a9804f99f660d323040746e3c8a4fe1b4ef6df17d7a80c4e2e335382cc72c62fc5a7079af836871ff9cbf0c21804e6d9 + languageName: node + linkType: hard + "@types/d3-path@npm:*": version: 3.0.0 resolution: "@types/d3-path@npm:3.0.0" @@ -2524,6 +2512,15 @@ __metadata: languageName: node linkType: hard +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.5 + resolution: "@types/graceful-fs@npm:4.1.5" + dependencies: + "@types/node": "*" + checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a + languageName: node + linkType: hard + "@types/hammerjs@npm:^2.0.36": version: 2.0.41 resolution: "@types/hammerjs@npm:2.0.41" @@ -2538,7 +2535,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 @@ -2563,6 +2560,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^29.2.0": + version: 29.2.0 + resolution: "@types/jest@npm:29.2.0" + dependencies: + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 6779e63d8d7507b116a61b2935a200e48531849fc1ac74090212759fe17716777ca6d2c3a8d927a563e9cfa474ae91d40b1688376ae80e3a08974b3c9e9691e1 + languageName: node + linkType: hard + "@types/json-schema@npm:^7.0.3, @types/json-schema@npm:^7.0.9": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" @@ -2570,10 +2577,17 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 18.0.0 - resolution: "@types/node@npm:18.0.0" - checksum: aab2b325727a2599f6d25ebe0dedf58c40fb66a51ce4ca9c0226ceb70fcda2d3afccdca29db5942eb48b158ee8585a274a1e3750c718bbd5399d7f41d62dfdcc +"@types/node@npm:*, @types/node@npm:^18.11.7": + version: 18.11.7 + resolution: "@types/node@npm:18.11.7" + checksum: 69d630825cf6fbf580d08d76a4d4836ef8c34ed4fe0842221ade87d275f517099cbfabe8e22397208e564bd24926db97699ab9db5c091383269a432b336665e2 + languageName: node + linkType: hard + +"@types/prettier@npm:^2.1.5": + version: 2.7.1 + resolution: "@types/prettier@npm:2.7.1" + checksum: 5e3f58e229d6c73b5f5cae2e8f96c1c4a5b5805f83459e17a045ba8e96152b1d38e86b63e3172fb159dac923388699660862b75b2d37e54220805f0e691e26f1 languageName: node linkType: hard @@ -2614,12 +2628,21 @@ __metadata: languageName: node linkType: hard -"@types/react-native@npm:*, @types/react-native@npm:^0.69.0": - version: 0.69.1 - resolution: "@types/react-native@npm:0.69.1" +"@types/react-native@npm:*": + version: 0.70.6 + resolution: "@types/react-native@npm:0.70.6" dependencies: "@types/react": "*" - checksum: 10e4da83ebb8796e9864841977edd11a98b918c3f27804d185c06d0fae8380de43ad42b38e1d12c3b5b151b19c45e84dae7126b4541f66233b89f02a997d1afc + checksum: 1b620095ddf2fe85157df9d57435edc619587eacb1a4fadd91c977c200cef8008e7fec4d8c5429ce373e1a2158199f1162f9c84e8e5a7d0b71a2224f31b64dfd + languageName: node + linkType: hard + +"@types/react-native@npm:^0.69.0": + version: 0.69.15 + resolution: "@types/react-native@npm:0.69.15" + dependencies: + "@types/react": "*" + checksum: 0bc47a051de4710f3c19f42c3c66dda3552489c65d8db24e3ca1a908790934fb722aaeb0a8a673bf2acba8f7a0ff0cc93b358d60662d4a8bfc8a2ad1017113dd languageName: node linkType: hard @@ -2633,13 +2656,13 @@ __metadata: linkType: hard "@types/react@npm:^18": - version: 18.0.14 - resolution: "@types/react@npm:18.0.14" + version: 18.0.24 + resolution: "@types/react@npm:18.0.24" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 608eb57a383eedc54c79949673e5e8314f6b0c61542bff58721c8c47a18c23e2832e77c656050c2c2c004b62cf25582136c7c56fe1b6263a285c065fae31dbcf + checksum: 7d06125bac61e1c6661e5dfbeeeb56d5b6d1d4c743292faebaa6b0f30f8414c7af3cadf674923fd86e4ca14e82566ff9156cd40c56786be024600c31b97d6c03 languageName: node linkType: hard @@ -2650,6 +2673,20 @@ __metadata: languageName: node linkType: hard +"@types/semver@npm:^7.3.12": + version: 7.3.13 + resolution: "@types/semver@npm:7.3.13" + checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.1 + resolution: "@types/stack-utils@npm:2.0.1" + checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": version: 21.0.0 resolution: "@types/yargs-parser@npm:21.0.0" @@ -2705,14 +2742,13 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.29.0": - version: 5.30.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.30.0" + version: 5.41.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.41.0" dependencies: - "@typescript-eslint/scope-manager": 5.30.0 - "@typescript-eslint/type-utils": 5.30.0 - "@typescript-eslint/utils": 5.30.0 + "@typescript-eslint/scope-manager": 5.41.0 + "@typescript-eslint/type-utils": 5.41.0 + "@typescript-eslint/utils": 5.41.0 debug: ^4.3.4 - functional-red-black-tree: ^1.0.1 ignore: ^5.2.0 regexpp: ^3.2.0 semver: ^7.3.7 @@ -2723,7 +2759,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: f2fe96082c69f2871439303947d6dfcd8c142e8ddcc3d1ea52cc30046f4b64280a02aec1a0d2f8344034bc7ed4fb09eecf4764df93ece467cc284225d8adaa14 + checksum: b6f08244059a8e02dbb305e914e6455a2b6bfabe6c0fd355bd3a0a732ed44a503ad47d4beb5f617e29274b5a8b8249d80cf4600babf05d8e35958ff64a546da4 languageName: node linkType: hard @@ -2761,37 +2797,38 @@ __metadata: linkType: hard "@typescript-eslint/parser@npm:^5.29.0": - version: 5.30.0 - resolution: "@typescript-eslint/parser@npm:5.30.0" + version: 5.41.0 + resolution: "@typescript-eslint/parser@npm:5.41.0" dependencies: - "@typescript-eslint/scope-manager": 5.30.0 - "@typescript-eslint/types": 5.30.0 - "@typescript-eslint/typescript-estree": 5.30.0 + "@typescript-eslint/scope-manager": 5.41.0 + "@typescript-eslint/types": 5.41.0 + "@typescript-eslint/typescript-estree": 5.41.0 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 7067ba4edea702137de3d5c866f2e4a22032bfa82556351eb8cc1088ef45cdd747cbf2a73d3904583303899de2983ef41050f3a5b5d648a2f88e687318bb6738 + checksum: ae005b603218d540dd1c3fd1f84d7f956bfca8b15d2c42115b9fc44437cb73e8284fda62153612a20809449d563edbde968d245b6c9d27b482ad0ebc2a95947f languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.30.0": - version: 5.30.0 - resolution: "@typescript-eslint/scope-manager@npm:5.30.0" +"@typescript-eslint/scope-manager@npm:5.41.0": + version: 5.41.0 + resolution: "@typescript-eslint/scope-manager@npm:5.41.0" dependencies: - "@typescript-eslint/types": 5.30.0 - "@typescript-eslint/visitor-keys": 5.30.0 - checksum: 51246d0f6c497ad98fcfb02a9da92e855cd5916cf6ea117b1f8a511e4f62d1eae28f2c7278dfe29cc823c36f3b1fe87ff56681654b68faac5dfd1b897c3c58da + "@typescript-eslint/types": 5.41.0 + "@typescript-eslint/visitor-keys": 5.41.0 + checksum: f588e7e7e953dfa19632b676f1287a7a4f5e9390282b103b3cf46cc28bb597c1229df2489eb687ab9285674076eb2569b821eac9b3110572d70fd230bdc5d703 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.30.0": - version: 5.30.0 - resolution: "@typescript-eslint/type-utils@npm:5.30.0" +"@typescript-eslint/type-utils@npm:5.41.0": + version: 5.41.0 + resolution: "@typescript-eslint/type-utils@npm:5.41.0" dependencies: - "@typescript-eslint/utils": 5.30.0 + "@typescript-eslint/typescript-estree": 5.41.0 + "@typescript-eslint/utils": 5.41.0 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -2799,7 +2836,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 6185117638ca2111b8c10fe156f7de51847f784140906ba518198d056608c7eb812248d033ac0d0b46f73647dc1202f02d9aab626ee013d273fc03df11d1f6e9 + checksum: c438d4a47f1bbd031245db31c75748a5eac9b7e5d6d3805a914a9b891b03d3d18c7509d2273b1718dcc9c239506a3627e5da34c363d2c22acca2ea64050b5bc4 languageName: node linkType: hard @@ -2810,10 +2847,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:5.30.0": - version: 5.30.0 - resolution: "@typescript-eslint/types@npm:5.30.0" - checksum: f83a506880d78419283a86e8aeb6c744b1d1a7fc3a366625125805daf0f9a7640a778537113b8865a4cdd985dcde53066820ea044a750126bc8b478eb93d4d12 +"@typescript-eslint/types@npm:5.41.0": + version: 5.41.0 + resolution: "@typescript-eslint/types@npm:5.41.0" + checksum: d7500bcc67b68032ccf19d983a69efa2750f4d82f5cc027090d2686d4e662b3a7b0b5fa55ed90710eca2528867d39964d76c207ac3c6f734505efbe21dccac7d languageName: node linkType: hard @@ -2836,12 +2873,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.30.0": - version: 5.30.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.30.0" +"@typescript-eslint/typescript-estree@npm:5.41.0": + version: 5.41.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.41.0" dependencies: - "@typescript-eslint/types": 5.30.0 - "@typescript-eslint/visitor-keys": 5.30.0 + "@typescript-eslint/types": 5.41.0 + "@typescript-eslint/visitor-keys": 5.41.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -2850,23 +2887,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: cf8caea435c4346fae9c81635864efa17ea106e3dea5cd226c096145958ff6e7918e40cdb2af06526ca43d44717eb088869f1c1db51a52aa9f72b6bf65e11db2 + checksum: cfb61b5971108807ad4b1e26e71455a0451e8b5ee06e9ae7d2e45caa8e978f0a3bb58bb877eff42a134d3ab21ad23bf138d2b829c407607e3d1fc616f0f87cc9 languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.30.0": - version: 5.30.0 - resolution: "@typescript-eslint/utils@npm:5.30.0" +"@typescript-eslint/utils@npm:5.41.0": + version: 5.41.0 + resolution: "@typescript-eslint/utils@npm:5.41.0" dependencies: "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.30.0 - "@typescript-eslint/types": 5.30.0 - "@typescript-eslint/typescript-estree": 5.30.0 + "@types/semver": ^7.3.12 + "@typescript-eslint/scope-manager": 5.41.0 + "@typescript-eslint/types": 5.41.0 + "@typescript-eslint/typescript-estree": 5.41.0 eslint-scope: ^5.1.1 eslint-utils: ^3.0.0 + semver: ^7.3.7 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 176eda46292398c0fe069d96f51d0083a9b978d4c6e2ca92f10e9ebad83910d67754bcb2c1667cf4c40e06c112558ff1ad973d6f82719cfe4de7c72f89a3df29 + checksum: 293a0de39639983048b7fe203a4191b97cfc3c868866c1e485ec63c6eab9013002e58f0ac23ec7584f71d28390bf2d6c23ee10d6863ea067567e572cd9d75dae languageName: node linkType: hard @@ -2879,17 +2918,17 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.30.0": - version: 5.30.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.30.0" +"@typescript-eslint/visitor-keys@npm:5.41.0": + version: 5.41.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.41.0" dependencies: - "@typescript-eslint/types": 5.30.0 + "@typescript-eslint/types": 5.41.0 eslint-visitor-keys: ^3.3.0 - checksum: bf2219cbb910d284e2f224aaa701932287b25fe99312f9abf6406a8f52a3a0b852c96276cd740ae3071b2561b253a6cfa30b0b8ab1d199e08f9550402f8fbf1f + checksum: ff76694170d77c96d6166a1973ca11b4a6de2051e396fc3581534b3d6f574440e0a3af71f0690dfb2368bb5300a412b363c1795ac1ba1f363b1bc115550808cd languageName: node linkType: hard -"abbrev@npm:1": +"abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 @@ -2989,6 +3028,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + "ansi-fragments@npm:^0.2.1": version: 0.2.1 resolution: "ansi-fragments@npm:0.2.1" @@ -3032,6 +3080,20 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + +"any-promise@npm:^1.0.0": + version: 1.3.0 + resolution: "any-promise@npm:1.3.0" + checksum: 0ee8a9bdbe882c90464d75d1f55cf027f5458650c4bd1f0467e65aec38ccccda07ca5844969ee77ed46d04e7dded3eaceb027e8d32f385688523fe305fa7e1de + languageName: node + linkType: hard + "anymatch@npm:^3.0.3": version: 3.1.2 resolution: "anymatch@npm:3.1.2" @@ -3042,10 +3104,17 @@ __metadata: languageName: node linkType: hard +"app-root-path@npm:^3.0.0": + version: 3.1.0 + resolution: "app-root-path@npm:3.1.0" + checksum: e3db3957aee197143a0f6c75e39fe89b19e7244f28b4f2944f7276a9c526d2a7ab2d115b4b2d70a51a65a9a3ca17506690e5b36f75a068a7e5a13f8c092389ba + languageName: node + linkType: hard + "appdirsjs@npm:^1.2.4": - version: 1.2.6 - resolution: "appdirsjs@npm:1.2.6" - checksum: b680cffe91fe422168c29c66609bb390db7004c214f4b11644a3269d84bb2828b5d60b5e2dce5af10d143e538a68169f93738ce2f0a6f57cca8c5c4f19cef2ed + version: 1.2.7 + resolution: "appdirsjs@npm:1.2.7" + checksum: 3411b4e31edf8687ad69638ef81b92b4889ad31e527b673a364990c28c99b6b8c3ea81b2b2b636d5b08e166a18706c4464fd8436b298f85384d499ba6b8dc4b7 languageName: node linkType: hard @@ -3057,12 +3126,12 @@ __metadata: linkType: hard "are-we-there-yet@npm:^3.0.0": - version: 3.0.0 - resolution: "are-we-there-yet@npm:3.0.0" + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" dependencies: delegates: ^1.0.0 readable-stream: ^3.6.0 - checksum: 348edfdd931b0b50868b55402c01c3f64df1d4c229ab6f063539a5025fd6c5f5bb8a0cab409bbed8d75d34762d22aa91b7c20b4204eb8177063158d9ba792981 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 languageName: node linkType: hard @@ -3220,25 +3289,45 @@ __metadata: languageName: node linkType: hard -"babel-plugin-dynamic-import-node@npm:^2.3.3": - version: 2.3.3 - resolution: "babel-plugin-dynamic-import-node@npm:2.3.3" +"babel-jest@npm:^29.2.2": + version: 29.2.2 + resolution: "babel-jest@npm:29.2.2" dependencies: - object.assign: ^4.1.0 - checksum: c9d24415bcc608d0db7d4c8540d8002ac2f94e2573d2eadced137a29d9eab7e25d2cbb4bc6b9db65cf6ee7430f7dd011d19c911a9a778f0533b4a05ce8292c9b + "@jest/transform": ^29.2.2 + "@types/babel__core": ^7.1.14 + babel-plugin-istanbul: ^6.1.1 + babel-preset-jest: ^29.2.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 35f0eb895ab9218b55cacedbfe62dd94c99924d89a0a8096354c4fbb4c8465c0a2c4aba82e5bedf367def6c89635f4f134c7ebc22f07b6f9c930f7b43b7bbdde languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.3.1": - version: 0.3.1 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.1" +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" dependencies: - "@babel/compat-data": ^7.13.11 - "@babel/helper-define-polyfill-provider": ^0.3.1 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ca873f14ccd6d2942013345a956de8165d0913556ec29756a748157140f5312f79eed487674e0ca562285880f05829b3712d72e1e4b412c2ce46bd6a50b4b975 + "@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 + checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.2.0": + version: 29.2.0 + resolution: "babel-plugin-jest-hoist@npm:29.2.0" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.1.14 + "@types/babel__traverse": ^7.0.6 + checksum: 368d271ceae491ae6b96cd691434859ea589fbe5fd5aead7660df75d02394077273c6442f61f390e9347adffab57a32b564d0fabcf1c53c4b83cd426cb644072 languageName: node linkType: hard @@ -3255,18 +3344,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.5.2": - version: 0.5.2 - resolution: "babel-plugin-polyfill-corejs3@npm:0.5.2" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.1 - core-js-compat: ^3.21.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2f3184c73f80f00ac876a5ebcad945fd8d2ae70e5f85b7ab6cc3bc69bc74025f4f7070de7abbb2a7274c78e130bd34fc13f4c85342da28205930364a1ef0aa21 - languageName: node - linkType: hard - "babel-plugin-polyfill-corejs3@npm:^0.6.0": version: 0.6.0 resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" @@ -3279,17 +3356,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.3.1": - version: 0.3.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.3.1" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f1473df7b700d6795ca41301b1e65a0aff15ce6c1463fc0ce2cf0c821114b0330920f59d4cebf52976363ee817ba29ad2758544a4661a724b08191080b9fe1da - languageName: node - linkType: hard - "babel-plugin-polyfill-regenerator@npm:^0.4.1": version: 0.4.1 resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" @@ -3315,6 +3381,28 @@ __metadata: languageName: node linkType: hard +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.0.1 + resolution: "babel-preset-current-node-syntax@npm:1.0.1" + dependencies: + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-bigint": ^7.8.3 + "@babel/plugin-syntax-class-properties": ^7.8.3 + "@babel/plugin-syntax-import-meta": ^7.8.3 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.8.3 + "@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-top-level-await": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d118c2742498c5492c095bc8541f4076b253e705b5f1ad9a2e7d302d81a84866f0070346662355c8e25fc02caa28dc2da8d69bcd67794a0d60c4d6fab6913cc8 + languageName: node + linkType: hard + "babel-preset-fbjs@npm:^3.4.0": version: 3.4.0 resolution: "babel-preset-fbjs@npm:3.4.0" @@ -3352,6 +3440,18 @@ __metadata: languageName: node linkType: hard +"babel-preset-jest@npm:^29.2.0": + version: 29.2.0 + resolution: "babel-preset-jest@npm:29.2.0" + dependencies: + babel-plugin-jest-hoist: ^29.2.0 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 1b09a2db968c36e064daf98082cfffa39c849b63055112ddc56fc2551fd0d4783897265775b1d2f8a257960a3339745de92e74feb01bad86d41c4cecbfa854fc + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -3445,20 +3545,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.20.2, browserslist@npm:^4.21.0": - version: 4.21.1 - resolution: "browserslist@npm:4.21.1" - dependencies: - caniuse-lite: ^1.0.30001359 - electron-to-chromium: ^1.4.172 - node-releases: ^2.0.5 - update-browserslist-db: ^1.0.4 - bin: - browserslist: cli.js - checksum: 4904a9ded0702381adc495e003e7f77970abb7f8c8b8edd9e54f026354b5a96b1bddc26e6d9a7df9f043e468ecd2fcff2c8f40fc489909a042880117c2aca8ff - languageName: node - linkType: hard - "browserslist@npm:^4.21.3, browserslist@npm:^4.21.4": version: 4.21.4 resolution: "browserslist@npm:4.21.4" @@ -3499,6 +3585,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.2.1 + checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + languageName: node + linkType: hard + "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" @@ -3507,8 +3603,8 @@ __metadata: linkType: hard "cacache@npm:^16.1.0": - version: 16.1.1 - resolution: "cacache@npm:16.1.1" + version: 16.1.3 + resolution: "cacache@npm:16.1.3" dependencies: "@npmcli/fs": ^2.1.0 "@npmcli/move-file": ^2.0.0 @@ -3527,8 +3623,8 @@ __metadata: rimraf: ^3.0.2 ssri: ^9.0.0 tar: ^6.1.11 - unique-filename: ^1.1.1 - checksum: 488524617008b793f0249b0c4ea2c330c710ca997921376e15650cc2415a8054491ae2dee9f01382c2015602c0641f3f977faf2fa7361aa33d2637dcfb03907a + unique-filename: ^2.0.0 + checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 languageName: node linkType: hard @@ -3591,31 +3687,24 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^5.0.0": +"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b languageName: node linkType: hard -"camelcase@npm:^6.0.0": +"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001359": - version: 1.0.30001361 - resolution: "caniuse-lite@npm:1.0.30001361" - checksum: 3b56c9b4edf8f0b4a1891b0883f6fc7ab758858f4018d4c98aae474d235405cc2271b83c01af856add322a85df6f748514a7db020cade873ad6356e0a80b940c - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001400": - version: 1.0.30001402 - resolution: "caniuse-lite@npm:1.0.30001402" - checksum: 6068ccccd64b357f75388cb2303cf351b686b20800571d0a845bff5c0e0d24f83df0133afbbdd8177a33eb087c93d39ecf359035a52b2feac5f182c946f706ee + version: 1.0.30001426 + resolution: "caniuse-lite@npm:1.0.30001426" + checksum: e8b9c14ee33410d95b27da619f50648f373a7be712748970643f25d95fa80687b4755ba365f34a7a1cea00f9137193943aa6e742eedf0a4d7857f83809f49435 languageName: node linkType: hard @@ -3640,6 +3729,13 @@ __metadata: languageName: node linkType: hard +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -3655,9 +3751,16 @@ __metadata: linkType: hard "ci-info@npm:^3.2.0": - version: 3.3.2 - resolution: "ci-info@npm:3.3.2" - checksum: fd81f1edd2d3b0f6cb077b2e84365136d87b9db8c055928c1ad69da8a76c2c2f19cba8ea51b90238302157ca927f91f92b653e933f2398dde4867500f08d6e62 + version: 3.5.0 + resolution: "ci-info@npm:3.5.0" + checksum: 7def3789706ec18db3dc371dc699bd0df12057d54b796201f50ba87200e0849d3d83c68da00ab2ab8cdd738d91b25ab9e31620588f8d7e64ffaa1f760fd121cf + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.2.2 + resolution: "cjs-module-lexer@npm:1.2.2" + checksum: 977f3f042bd4f08e368c890d91eecfbc4f91da0bc009a3c557bc4dfbf32022ad1141244ac1178d44de70fc9f3dea7add7cd9a658a34b9fae98a55d8f92331ce5 languageName: node linkType: hard @@ -3689,10 +3792,26 @@ __metadata: languageName: node linkType: hard +"cli-highlight@npm:^2.1.11": + version: 2.1.11 + resolution: "cli-highlight@npm:2.1.11" + dependencies: + chalk: ^4.0.0 + highlight.js: ^10.7.1 + mz: ^2.4.0 + parse5: ^5.1.1 + parse5-htmlparser2-tree-adapter: ^6.0.0 + yargs: ^16.0.0 + bin: + highlight: bin/highlight + checksum: 0a60e60545e39efea78c1732a25b91692017ec40fb6e9497208dc0eeeae69991d3923a8d6e4edd0543db3c395ed14529a33dd4d0353f1679c5b6dded792a8496 + languageName: node + linkType: hard + "cli-spinners@npm:^2.5.0": - version: 2.6.1 - resolution: "cli-spinners@npm:2.6.1" - checksum: 423409baaa7a58e5104b46ca1745fbfc5888bbd0b0c5a626e052ae1387060839c8efd512fb127e25769b3dc9562db1dc1b5add6e0b93b7ef64f477feb6416a45 + version: 2.7.0 + resolution: "cli-spinners@npm:2.7.0" + checksum: a9afaf73f58d1f951fb23742f503631b3cf513f43f4c7acb1b640100eb76bfa16efbcd1994d149ffc6603a6d75dd3d4a516a76f125f90dce437de9b16fd0ee6f languageName: node linkType: hard @@ -3718,6 +3837,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.1 + wrap-ansi: ^7.0.0 + checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + languageName: node + linkType: hard + "clone-deep@npm:^4.0.1": version: 4.0.1 resolution: "clone-deep@npm:4.0.1" @@ -3736,6 +3866,20 @@ __metadata: languageName: node linkType: hard +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.1 + resolution: "collect-v8-coverage@npm:1.0.1" + checksum: 4efe0a1fccd517b65478a2364b33dadd0a43fc92a56f59aaece9b6186fe5177b2de471253587de7c91516f07c7268c2f6770b6cbcffc0e0ece353b766ec87e55 + languageName: node + linkType: hard + "collection-visit@npm:^1.0.0": version: 1.0.0 resolution: "collection-visit@npm:1.0.0" @@ -3842,16 +3986,16 @@ __metadata: linkType: hard "commander@npm:^9.4.0": - version: 9.4.0 - resolution: "commander@npm:9.4.0" - checksum: a322de584a6ccd1ea83c24f6a660e52d16ffbe2613fcfbb8d2cc68bc9dec637492456d754fe8bb5b039ad843ed8e04fb0b107e581a75f62cde9e1a0ab1546e09 + version: 9.4.1 + resolution: "commander@npm:9.4.1" + checksum: bfb18e325a5bdf772763c2213d5c7d9e77144d944124e988bcd8e5e65fb6d45d5d4e86b09155d0f2556c9a59c31e428720e57968bcd050b2306e910a0bf3cf13 languageName: node linkType: hard -"commander@npm:~2.13.0": - version: 2.13.0 - resolution: "commander@npm:2.13.0" - checksum: b23e2de09428e3852e881c3e265c70438ca038c834744479b72dde0bbc570f45c7f1ea2feea27fbe26382d2cbf6fb7b1963d7dee2c08b3f4adc95dbc45d977f5 +"commander@npm:~2.14.1": + version: 2.14.1 + resolution: "commander@npm:2.14.1" + checksum: 26bd49febeac8efabb7488fb5a4a2480b04bc4c4eef3c50da93eead72959f7a5232d003deda5b9761937205721274e80108f6d1d2b45ae7a8387cfb92031084e languageName: node linkType: hard @@ -3919,12 +4063,10 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.7.0": - version: 1.8.0 - resolution: "convert-source-map@npm:1.8.0" - dependencies: - safe-buffer: ~5.1.1 - checksum: 985d974a2d33e1a2543ada51c93e1ba2f73eaed608dc39f229afc78f71dcc4c8b7d7c684aa647e3c6a3a204027444d69e53e169ce94e8d1fa8d7dee80c9c8fed +"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 languageName: node linkType: hard @@ -3935,22 +4077,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.21.0": - version: 3.23.3 - resolution: "core-js-compat@npm:3.23.3" - dependencies: - browserslist: ^4.21.0 - semver: 7.0.0 - checksum: a5fd680a31b8e667ce0f852238a2fd6769d495ecf0e8a6e04a240e5e259e9a33a77b2839131b640f03c206fff12c51dca7e362ac1897f629bf4c5e39075c83a7 - languageName: node - linkType: hard - "core-js-compat@npm:^3.25.1": - version: 3.25.2 - resolution: "core-js-compat@npm:3.25.2" + version: 3.26.0 + resolution: "core-js-compat@npm:3.26.0" dependencies: browserslist: ^4.21.4 - checksum: 2e3de43cfed9f0f7ca4fe2c529be514aba6b80209fa314bd882aa5d5f8e3f43b59b2f9b174158ec3b321358ba2ed726a937abe7344279c67da1c51422b5f0b93 + checksum: 120780ec33d441e476810abac9bf57199c2083006b179dc23d0ab0cfea096eff2a2fc3e9cb315d245735df661cfa4b76a8b8c37f5056fd02428a3cd2ea1d9f36 languageName: node linkType: hard @@ -3986,7 +4118,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.2": +"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -4028,9 +4160,9 @@ __metadata: linkType: hard "csstype@npm:^3.0.2": - version: 3.1.0 - resolution: "csstype@npm:3.1.0" - checksum: 644e986cefab86525f0b674a06889cfdbb1f117e5b7d1ce0fc55b0423ecc58807a1ea42ecc75c4f18999d14fc42d1d255f84662a45003a52bb5840e977eb2ffd + version: 3.1.1 + resolution: "csstype@npm:3.1.1" + checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d languageName: node linkType: hard @@ -4127,10 +4259,17 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^2.28.0": + version: 2.29.3 + resolution: "date-fns@npm:2.29.3" + checksum: e01cf5b62af04e05dfff921bb9c9933310ed0e1ae9a81eb8653452e64dc841acf7f6e01e1a5ae5644d0337e9a7f936175fd2cb6819dc122fdd9c5e86c56be484 + languageName: node + linkType: hard + "dayjs@npm:^1.8.15": - version: 1.11.3 - resolution: "dayjs@npm:1.11.3" - checksum: c87e06b562a51ae6568cc5b840c7579d82a0f8af7163128c858fe512d3d71d07bd8e8e464b8cc41b8698a9e26b80ab2c082d14a1cd4c33df5692d77ccdfc5a43 + version: 1.11.6 + resolution: "dayjs@npm:1.11.6" + checksum: 18bdfd927009b68eab08dca578e421d4a581cefcbe9337f54c5d9e0d941ffb6b221c4b2c1cab15cdd9d419940e768ac4c984531461a90bbe1c158b75fe160580 languageName: node linkType: hard @@ -4169,6 +4308,13 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -4183,12 +4329,19 @@ __metadata: languageName: node linkType: hard +"deepmerge@npm:^4.2.2": + version: 4.2.2 + resolution: "deepmerge@npm:4.2.2" + checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b + languageName: node + linkType: hard + "defaults@npm:^1.0.3": - version: 1.0.3 - resolution: "defaults@npm:1.0.3" + version: 1.0.4 + resolution: "defaults@npm:1.0.4" dependencies: clone: ^1.0.2 - checksum: 96e2112da6553d376afd5265ea7cbdb2a3b45535965d71ab8bb1da10c8126d168fdd5268799625324b368356d21ba2a7b3d4ec50961f11a47b7feb9de3d4413e + checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a languageName: node linkType: hard @@ -4265,6 +4418,20 @@ __metadata: languageName: node linkType: hard +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.2.0": + version: 29.2.0 + resolution: "diff-sequences@npm:29.2.0" + checksum: e7b874cc7a4ce76fd199794c4d5fabb099ab4bce069592407ac2933e3a10e05f035111498e2f2c86572f5cfa9668a191b09e79f1d967dc39d9ca0a12aacde41a + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -4330,6 +4497,13 @@ __metadata: languageName: node linkType: hard +"dotenv@npm:^16.0.0": + version: 16.0.3 + resolution: "dotenv@npm:16.0.3" + checksum: afcf03f373d7a6d62c7e9afea6328e62851d627a4e73f2e12d0a8deae1cd375892004f3021883f8aec85932cd2834b091f568ced92b4774625b321db83b827f8 + languageName: node + linkType: hard + "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -4337,17 +4511,17 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.172": - version: 1.4.174 - resolution: "electron-to-chromium@npm:1.4.174" - checksum: e74813a0dcfa92b8e76672249018d8ec39fae4adc5321ca2970dfd6dc3cfda138a2dcca09ad3e043f2959d6f9afae85eddb63a6cb401d588a95255417bc57bc4 +"electron-to-chromium@npm:^1.4.251": + version: 1.4.284 + resolution: "electron-to-chromium@npm:1.4.284" + checksum: be496e9dca6509dbdbb54dc32146fc99f8eb716d28a7ee8ccd3eba0066561df36fc51418d8bd7cf5a5891810bf56c0def3418e74248f51ea4a843d423603d10a languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.251": - version: 1.4.254 - resolution: "electron-to-chromium@npm:1.4.254" - checksum: 32f0ecb621db44d37fc93017f742a2b1da7302c778b4d6c0fa122cc662f9c50e6576d214048dcac5c9baf835340c954c624f09f2e02c6dea9049c4a839e862e2 +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 languageName: node linkType: hard @@ -4442,33 +4616,34 @@ __metadata: linkType: hard "es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1, es-abstract@npm:^1.19.2, es-abstract@npm:^1.19.5": - version: 1.20.1 - resolution: "es-abstract@npm:1.20.1" + version: 1.20.4 + resolution: "es-abstract@npm:1.20.4" dependencies: call-bind: ^1.0.2 es-to-primitive: ^1.2.1 function-bind: ^1.1.1 function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.1 + get-intrinsic: ^1.1.3 get-symbol-description: ^1.0.0 has: ^1.0.3 has-property-descriptors: ^1.0.0 has-symbols: ^1.0.3 internal-slot: ^1.0.3 - is-callable: ^1.2.4 + is-callable: ^1.2.7 is-negative-zero: ^2.0.2 is-regex: ^1.1.4 is-shared-array-buffer: ^1.0.2 is-string: ^1.0.7 is-weakref: ^1.0.2 - object-inspect: ^1.12.0 + object-inspect: ^1.12.2 object-keys: ^1.1.1 - object.assign: ^4.1.2 + object.assign: ^4.1.4 regexp.prototype.flags: ^1.4.3 + safe-regex-test: ^1.0.0 string.prototype.trimend: ^1.0.5 string.prototype.trimstart: ^1.0.5 unbox-primitive: ^1.0.2 - checksum: 28da27ae0ed9c76df7ee8ef5c278df79dcfdb554415faf7068bb7c58f8ba8e2a16bfb59e586844be6429ab4c302ca7748979d48442224cb1140b051866d74b7f + checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 languageName: node linkType: hard @@ -4513,6 +4688,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 + languageName: node + linkType: hard + "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -4556,6 +4738,20 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-flowtype@npm:^8.0.3": + version: 8.0.3 + resolution: "eslint-plugin-flowtype@npm:8.0.3" + dependencies: + lodash: ^4.17.21 + string-natural-compare: ^3.0.1 + peerDependencies: + "@babel/plugin-syntax-flow": ^7.14.5 + "@babel/plugin-transform-react-jsx": ^7.14.9 + eslint: ^8.1.0 + checksum: 30e63c5357b0b5571f39afed51e59c140084f4aa53c106b1fd04f26da42b268908466daa6020b92943e71409bdaee1c67202515ed9012404d027cc92cb03cefa + languageName: node + linkType: hard + "eslint-plugin-jest@npm:22.4.1": version: 22.4.1 resolution: "eslint-plugin-jest@npm:22.4.1" @@ -4606,8 +4802,8 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.20.0": - version: 7.30.1 - resolution: "eslint-plugin-react@npm:7.30.1" + version: 7.31.10 + resolution: "eslint-plugin-react@npm:7.31.10" dependencies: array-includes: ^3.1.5 array.prototype.flatmap: ^1.3.0 @@ -4625,7 +4821,7 @@ __metadata: string.prototype.matchall: ^4.0.7 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 553fb9ece6beb7c14cf6f84670c786c8ac978c2918421994dcc4edd2385302022e5d5ac4a39fafdb35954e29cecddefed61758040c3c530cafcf651f674a9d51 + checksum: f013669c296483559a760648fa06425f161b1aff93c668f14c4561c933d22a7836b745b88a795c53cab929c71513d5fd1f2ffdddff915709f01b77ac25f5b71b languageName: node linkType: hard @@ -4828,6 +5024,30 @@ __metadata: languageName: node linkType: hard +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + 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 + checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 + languageName: node + linkType: hard + "expand-brackets@npm:^2.1.4": version: 2.1.4 resolution: "expand-brackets@npm:2.1.4" @@ -4843,6 +5063,19 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.0.0, expect@npm:^29.2.2": + version: 29.2.2 + resolution: "expect@npm:29.2.2" + dependencies: + "@jest/expect-utils": ^29.2.2 + jest-get-type: ^29.2.0 + jest-matcher-utils: ^29.2.2 + jest-message-util: ^29.2.1 + jest-util: ^29.2.1 + checksum: e763df36fe406d2746cdf993b85714c16355b249b063b3f1ab0ff4077435b46ccae937c09930218516c1225203353652a8c6ac07b354474bc81d0ec45133dbf1 + languageName: node + linkType: hard + "extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -4893,19 +5126,19 @@ __metadata: linkType: hard "fast-glob@npm:^3.2.9": - version: 3.2.11 - resolution: "fast-glob@npm:3.2.11" + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" 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.4 - checksum: f473105324a7780a20c06de842e15ddbb41d3cb7e71d1e4fe6e8373204f22245d54f5ab9e2061e6a1c613047345954d29b022e0e76f5c28b1df9858179a0e6d7 + checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb @@ -4929,11 +5162,11 @@ __metadata: linkType: hard "fb-watchman@npm:^2.0.0": - version: 2.0.1 - resolution: "fb-watchman@npm:2.0.1" + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" dependencies: bser: 2.1.1 - checksum: 8510230778ab3a51c27dffb1b76ef2c24fab672a42742d3c0a45c2e9d1e5f20210b1fbca33486088da4a9a3958bde96b5aec0a63aac9894b4e9df65c88b2cbd6 + checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 languageName: node linkType: hard @@ -5009,7 +5242,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.1.0": +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: @@ -5040,16 +5273,16 @@ __metadata: linkType: hard "flatted@npm:^3.1.0": - version: 3.2.6 - resolution: "flatted@npm:3.2.6" - checksum: 33b87aa88dfa40ca6ee31d7df61712bbbad3d3c05c132c23e59b9b61d34631b337a18ff2b8dc5553acdc871ec72b741e485f78969cf006124a3f57174de29a0e + version: 3.2.7 + resolution: "flatted@npm:3.2.7" + checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 languageName: node linkType: hard "flow-parser@npm:0.*": - version: 0.181.2 - resolution: "flow-parser@npm:0.181.2" - checksum: c0e5c1ec97e523fe23f7dc2ab20a0ccc3f4287521ec2c9ced636dd34e017f349509f9d6614dc32a00de6e07006f1078d7895f3657a0c2c8a075016a09d083462 + version: 0.191.0 + resolution: "flow-parser@npm:0.191.0" + checksum: ae5eeaf0b76d7ad1803b6c1674f8749adfa2bc81cd18335ce07de2b51ec7c39a801b0cc1824ca482a1bf3996422cf6377b955dccef4cf750670d38528b566dea languageName: node linkType: hard @@ -5121,7 +5354,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.1.2": +"fsevents@npm:^2.1.2, fsevents@npm:^2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: @@ -5131,7 +5364,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.1.2#~builtin": +"fsevents@patch:fsevents@^2.1.2#~builtin, fsevents@patch:fsevents@^2.3.2#~builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" dependencies: @@ -5203,14 +5436,21 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": - version: 1.1.2 - resolution: "get-intrinsic@npm:1.1.2" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": + version: 1.1.3 + resolution: "get-intrinsic@npm:1.1.3" dependencies: function-bind: ^1.1.1 has: ^1.0.3 has-symbols: ^1.0.3 - checksum: 252f45491f2ba88ebf5b38018020c7cc3279de54b1d67ffb70c0cdf1dfa8ab31cd56467b5d117a8b4275b7a4dde91f86766b163a17a850f036528a7b2faafb2b + checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 languageName: node linkType: hard @@ -5230,6 +5470,13 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad + languageName: node + linkType: hard + "get-symbol-description@npm:^1.0.0": version: 1.0.0 resolution: "get-symbol-description@npm:1.0.0" @@ -5265,7 +5512,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": +"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -5366,7 +5613,7 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 @@ -5462,6 +5709,13 @@ __metadata: languageName: node linkType: hard +"highlight.js@npm:^10.7.1": + version: 10.7.3 + resolution: "highlight.js@npm:10.7.3" + checksum: defeafcd546b535d710d8efb8e650af9e3b369ef53e28c3dc7893eacfe263200bba4c5fcf43524ae66d5c0c296b1af0870523ceae3e3104d24b7abf6374a4fea + languageName: node + linkType: hard + "hoist-non-react-statics@npm:^3.3.0": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" @@ -5471,6 +5725,13 @@ __metadata: languageName: node linkType: hard +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.0": version: 4.1.0 resolution: "http-cache-semantics@npm:4.1.0" @@ -5512,6 +5773,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 + languageName: node + linkType: hard + "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" @@ -5530,7 +5798,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13": +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e @@ -5573,6 +5841,18 @@ __metadata: languageName: node linkType: hard +"import-local@npm:^3.0.2": + version: 3.1.0 + resolution: "import-local@npm:3.1.0" + dependencies: + pkg-dir: ^4.2.0 + resolve-cwd: ^3.0.0 + bin: + import-local-fixture: fixtures/cli.js + checksum: bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -5604,7 +5884,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -5703,19 +5983,19 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.4": - version: 1.2.4 - resolution: "is-callable@npm:1.2.4" - checksum: 1a28d57dc435797dae04b173b65d6d1e77d4f16276e9eff973f994eadcfdc30a017e6a597f092752a083c1103cceb56c91e3dadc6692fedb9898dfaba701575f +"is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac languageName: node linkType: hard "is-core-module@npm:^2.9.0": - version: 2.9.0 - resolution: "is-core-module@npm:2.9.0" + version: 2.11.0 + resolution: "is-core-module@npm:2.11.0" dependencies: has: ^1.0.3 - checksum: b27034318b4b462f1c8f1dfb1b32baecd651d891a4e2d1922135daeff4141dfced2b82b07aef83ef54275c4a3526aa38da859223664d0868ca24182badb784ce + checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab languageName: node linkType: hard @@ -5812,6 +6092,13 @@ __metadata: languageName: node linkType: hard +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -5909,6 +6196,13 @@ __metadata: languageName: node linkType: hard +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -5987,6 +6281,208 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.0 + resolution: "istanbul-lib-coverage@npm:3.2.0" + checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + 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 + checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.0 + resolution: "istanbul-lib-report@npm:3.0.0" + dependencies: + istanbul-lib-coverage: ^3.0.0 + make-dir: ^3.0.0 + supports-color: ^7.1.0 + checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: ^4.1.1 + istanbul-lib-coverage: ^3.0.0 + source-map: ^0.6.1 + checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.5 + resolution: "istanbul-reports@npm:3.1.5" + dependencies: + html-escaper: ^2.0.0 + istanbul-lib-report: ^3.0.0 + checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.2.0": + version: 29.2.0 + resolution: "jest-changed-files@npm:29.2.0" + dependencies: + execa: ^5.0.0 + p-limit: ^3.1.0 + checksum: 8ad8290324db1de2ee3c9443d3e3fbfdcb6d72ec7054c5796be2854b2bc239dea38a7c797c8c9c2bd959f539d44305790f2f75b18f3046b04317ed77c7480cb1 + languageName: node + linkType: hard + +"jest-circus@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-circus@npm:29.2.2" + dependencies: + "@jest/environment": ^29.2.2 + "@jest/expect": ^29.2.2 + "@jest/test-result": ^29.2.1 + "@jest/types": ^29.2.1 + "@types/node": "*" + chalk: ^4.0.0 + co: ^4.6.0 + dedent: ^0.7.0 + is-generator-fn: ^2.0.0 + jest-each: ^29.2.1 + jest-matcher-utils: ^29.2.2 + jest-message-util: ^29.2.1 + jest-runtime: ^29.2.2 + jest-snapshot: ^29.2.2 + jest-util: ^29.2.1 + p-limit: ^3.1.0 + pretty-format: ^29.2.1 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 0c292c4391c7a8455172343a47710882dd077c989946feaf3979771d3013b8c5ee0548f9c63ec063010dbee6ee6aa4dfc6a295720ff2bf31322de34164489b8b + languageName: node + linkType: hard + +"jest-cli@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-cli@npm:29.2.2" + dependencies: + "@jest/core": ^29.2.2 + "@jest/test-result": ^29.2.1 + "@jest/types": ^29.2.1 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + import-local: ^3.0.2 + jest-config: ^29.2.2 + jest-util: ^29.2.1 + jest-validate: ^29.2.2 + prompts: ^2.0.1 + yargs: ^17.3.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 95ba7fde0a88d1fd347cd1db4810fbae096c87256b260f8deef7c4b12fd6722d2a31b0a2c0e321e5fc74215d06725195d04c32761279bc8571fe069fd0b0581a + languageName: node + linkType: hard + +"jest-config@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-config@npm:29.2.2" + dependencies: + "@babel/core": ^7.11.6 + "@jest/test-sequencer": ^29.2.2 + "@jest/types": ^29.2.1 + babel-jest: ^29.2.2 + 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.2.2 + jest-environment-node: ^29.2.2 + jest-get-type: ^29.2.0 + jest-regex-util: ^29.2.0 + jest-resolve: ^29.2.2 + jest-runner: ^29.2.2 + jest-util: ^29.2.1 + jest-validate: ^29.2.2 + micromatch: ^4.0.4 + parse-json: ^5.2.0 + pretty-format: ^29.2.1 + slash: ^3.0.0 + strip-json-comments: ^3.1.1 + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 9da0013a1db22ecc594e86a7fea9475175d5ec9ed776ce237672e8be138cea21b68dd9677665c6b316ec4c1aa70a91537861e16ff8938dce44837e71d8f0b5db + languageName: node + linkType: hard + +"jest-diff@npm:^29.0.1, jest-diff@npm:^29.2.1": + version: 29.2.1 + resolution: "jest-diff@npm:29.2.1" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.2.0 + jest-get-type: ^29.2.0 + pretty-format: ^29.2.1 + checksum: e3553e5bf556b786b864e3da0ef0a2cde8b260a7bb281eaf47d34aee0bf303bf557bc75416c20f9454e2e1b6ac0ae53684d5be7af5cfc010dc08805bdcb3f457 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.2.0": + version: 29.2.0 + resolution: "jest-docblock@npm:29.2.0" + dependencies: + detect-newline: ^3.0.0 + checksum: b3f1227b7d73fc9e4952180303475cf337b36fa65c7f730ac92f0580f1c08439983262fee21cf3dba11429aa251b4eee1e3bc74796c5777116b400d78f9d2bbe + languageName: node + linkType: hard + +"jest-each@npm:^29.2.1": + version: 29.2.1 + resolution: "jest-each@npm:29.2.1" + dependencies: + "@jest/types": ^29.2.1 + chalk: ^4.0.0 + jest-get-type: ^29.2.0 + jest-util: ^29.2.1 + pretty-format: ^29.2.1 + checksum: 877bd64a08ff4245400c4d84d65a6fb87898e53498b65f53915c7e66e66bf49a4559bc5ca584a3dab57251e88815f48c1053e40c0c1017fbb7d9813f40eb25b8 + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-environment-node@npm:29.2.2" + dependencies: + "@jest/environment": ^29.2.2 + "@jest/fake-timers": ^29.2.2 + "@jest/types": ^29.2.1 + "@types/node": "*" + jest-mock: ^29.2.2 + jest-util: ^29.2.1 + checksum: 06046c31f664f37b2fcf2dd85fbb3818ab15ee12570f707a6fdfc6b6009cce2444564a531bbb44acc4eff06cc86dc1070786fe79fab1c5ba7f6a9ded482957f1 + languageName: node + linkType: hard + "jest-get-type@npm:^26.3.0": version: 26.3.0 resolution: "jest-get-type@npm:26.3.0" @@ -5994,6 +6490,98 @@ __metadata: languageName: node linkType: hard +"jest-get-type@npm:^29.2.0": + version: 29.2.0 + resolution: "jest-get-type@npm:29.2.0" + checksum: e396fd880a30d08940ed8a8e43cd4595db1b8ff09649018eb358ca701811137556bae82626af73459e3c0f8c5e972ed1e57fd3b1537b13a260893dac60a90942 + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.2.1": + version: 29.2.1 + resolution: "jest-haste-map@npm:29.2.1" + dependencies: + "@jest/types": ^29.2.1 + "@types/graceful-fs": ^4.1.3 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^29.2.0 + jest-util: ^29.2.1 + jest-worker: ^29.2.1 + micromatch: ^4.0.4 + walker: ^1.0.8 + dependenciesMeta: + fsevents: + optional: true + checksum: 1880e5dd12b83c8ffbd527b80c81bd694a9018ed003d1ecc72ed4e1a0c2be0bc2a26a96c7439c4be8954912cd01ecaea807d2739b24d2ac7dd23f5aa672d9da1 + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.2.1": + version: 29.2.1 + resolution: "jest-leak-detector@npm:29.2.1" + dependencies: + jest-get-type: ^29.2.0 + pretty-format: ^29.2.1 + checksum: c30107ae583c7b1a30b8ac32f98997597ac5c46c243ef69a2b4bbaf803eefe0a696c6049a75434afdd0b0adbff418081a202903fcf00d38e4f8c1fe442c0f660 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.0.1, jest-matcher-utils@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-matcher-utils@npm:29.2.2" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.2.1 + jest-get-type: ^29.2.0 + pretty-format: ^29.2.1 + checksum: 97ef2638ab826c25f84bfedea231cef091820ae0876ba316922da81145e950d2b9d2057d3645813b5ee880bb975ed4f22e228dda5d0d26a20715e575b675357d + languageName: node + linkType: hard + +"jest-message-util@npm:^29.2.1": + version: 29.2.1 + resolution: "jest-message-util@npm:29.2.1" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.2.1 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.2.1 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 1ec1341dea7f0f04dfa9912647e5c4a092954c122becd9560e43e317407fd401745d99766048be7ee5f0b0b5ff09c84d3c853aa777af57139050efed0ad78376 + languageName: node + linkType: hard + +"jest-mock@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-mock@npm:29.2.2" + dependencies: + "@jest/types": ^29.2.1 + "@types/node": "*" + jest-util: ^29.2.1 + checksum: 9efc3519f50cc911bf759ec65434222c0d80ca033eede5705deb63e0cdad1e25d59e27691aec125d19cb312d46a09509ed205779b4fe60e64cbf54a76903ba58 + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.2 + resolution: "jest-pnp-resolver@npm:1.2.2" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: bd85dcc0e76e0eb0c3d56382ec140f08d25ff4068cda9d0e360bb78fb176cb726d0beab82dc0e8694cafd09f55fee7622b8bcb240afa5fad301f4ed3eebb4f47 + languageName: node + linkType: hard + "jest-regex-util@npm:^27.0.6": version: 27.5.1 resolution: "jest-regex-util@npm:27.5.1" @@ -6001,6 +6589,99 @@ __metadata: languageName: node linkType: hard +"jest-regex-util@npm:^29.2.0": + version: 29.2.0 + resolution: "jest-regex-util@npm:29.2.0" + checksum: 7c533e51c51230dac20c0d7395b19b8366cb022f7c6e08e6bcf2921626840ff90424af4c9b4689f02f0addfc9b071c4cd5f8f7a989298a4c8e0f9c94418ca1c3 + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-resolve-dependencies@npm:29.2.2" + dependencies: + jest-regex-util: ^29.2.0 + jest-snapshot: ^29.2.2 + checksum: 80a602beebe694444afc6f4ba7d32685d464bea75955ff74bee14640dfebe28a02080e94a9a49377e0815c86d045d653a4d6ce5a63a816347600ebd2c3f79084 + languageName: node + linkType: hard + +"jest-resolve@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-resolve@npm:29.2.2" + dependencies: + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.2.1 + jest-pnp-resolver: ^1.2.2 + jest-util: ^29.2.1 + jest-validate: ^29.2.2 + resolve: ^1.20.0 + resolve.exports: ^1.1.0 + slash: ^3.0.0 + checksum: 2bfa5c64d4ed2e60fea6a398cd08db91e925e4efbac3bee7ec2b9561dc8b05b16f43c7a00b158e4facd3a7738b7beaf580f9ac486e3bdd6edb4fc91073042c08 + languageName: node + linkType: hard + +"jest-runner@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-runner@npm:29.2.2" + dependencies: + "@jest/console": ^29.2.1 + "@jest/environment": ^29.2.2 + "@jest/test-result": ^29.2.1 + "@jest/transform": ^29.2.2 + "@jest/types": ^29.2.1 + "@types/node": "*" + chalk: ^4.0.0 + emittery: ^0.13.1 + graceful-fs: ^4.2.9 + jest-docblock: ^29.2.0 + jest-environment-node: ^29.2.2 + jest-haste-map: ^29.2.1 + jest-leak-detector: ^29.2.1 + jest-message-util: ^29.2.1 + jest-resolve: ^29.2.2 + jest-runtime: ^29.2.2 + jest-util: ^29.2.1 + jest-watcher: ^29.2.2 + jest-worker: ^29.2.1 + p-limit: ^3.1.0 + source-map-support: 0.5.13 + checksum: 1bea17607f505a394af7c3ce8dca9af0f804bd96c52eb48fa2470ec396d52e8132a12a0550ef6e0ac3c175c9596e4a3c20b691bca9aea9cffa009f9833c6a009 + languageName: node + linkType: hard + +"jest-runtime@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-runtime@npm:29.2.2" + dependencies: + "@jest/environment": ^29.2.2 + "@jest/fake-timers": ^29.2.2 + "@jest/globals": ^29.2.2 + "@jest/source-map": ^29.2.0 + "@jest/test-result": ^29.2.1 + "@jest/transform": ^29.2.2 + "@jest/types": ^29.2.1 + "@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.2.1 + jest-message-util: ^29.2.1 + jest-mock: ^29.2.2 + jest-regex-util: ^29.2.0 + jest-resolve: ^29.2.2 + jest-snapshot: ^29.2.2 + jest-util: ^29.2.1 + slash: ^3.0.0 + strip-bom: ^4.0.0 + checksum: 82268a0091cf5ed8ea26bdeeb207cf2eff1c2130704313cd9132c65481d8e30845955b8af08fb73fac1c541573c0701fccd19d3394f24c8c36e0521e467815c8 + languageName: node + linkType: hard + "jest-serializer@npm:^27.0.6": version: 27.5.1 resolution: "jest-serializer@npm:27.5.1" @@ -6011,6 +6692,38 @@ __metadata: languageName: node linkType: hard +"jest-snapshot@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-snapshot@npm:29.2.2" + 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/traverse": ^7.7.2 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.2.2 + "@jest/transform": ^29.2.2 + "@jest/types": ^29.2.1 + "@types/babel__traverse": ^7.0.6 + "@types/prettier": ^2.1.5 + babel-preset-current-node-syntax: ^1.0.0 + chalk: ^4.0.0 + expect: ^29.2.2 + graceful-fs: ^4.2.9 + jest-diff: ^29.2.1 + jest-get-type: ^29.2.0 + jest-haste-map: ^29.2.1 + jest-matcher-utils: ^29.2.2 + jest-message-util: ^29.2.1 + jest-util: ^29.2.1 + natural-compare: ^1.4.0 + pretty-format: ^29.2.1 + semver: ^7.3.5 + checksum: f2f86aa83ee2a785ff9da17b372b4132f2d94aa9499c21ade4034436b302be3c8d3d0612712738dd36f708b342b785e2fc2069ec0caeaf75c84d75cc501439df + languageName: node + linkType: hard + "jest-util@npm:^27.2.0": version: 27.5.1 resolution: "jest-util@npm:27.5.1" @@ -6025,6 +6738,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:^29.2.1": + version: 29.2.1 + resolution: "jest-util@npm:29.2.1" + dependencies: + "@jest/types": ^29.2.1 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: 781bd14a65599d24b7449877020f4da32e8cb8fbc31c4e849c589ffde58f0eec27de9f690dba182e3ca369fe651c0bb9c307de29a0927d12777677ded56bafb8 + languageName: node + linkType: hard + "jest-validate@npm:^26.5.2": version: 26.6.2 resolution: "jest-validate@npm:26.6.2" @@ -6039,6 +6766,36 @@ __metadata: languageName: node linkType: hard +"jest-validate@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-validate@npm:29.2.2" + dependencies: + "@jest/types": ^29.2.1 + camelcase: ^6.2.0 + chalk: ^4.0.0 + jest-get-type: ^29.2.0 + leven: ^3.1.0 + pretty-format: ^29.2.1 + checksum: faa462777d3aa632f13feb2c23b3b263429f0bc7c6addc97e325d53a2dd954f01b05456ab730a1492b606c175457f72c8afad371f555bfaf5e0f6085b6f4cbb9 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.2.2": + version: 29.2.2 + resolution: "jest-watcher@npm:29.2.2" + dependencies: + "@jest/test-result": ^29.2.1 + "@jest/types": ^29.2.1 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + emittery: ^0.13.1 + jest-util: ^29.2.1 + string-length: ^4.0.1 + checksum: 789a33d1374f546c83b8da2332f10b2d44c29ae1786352b91352ee4b2057cdc9b1734144a4a87adca3a7229b0aec237fd8bdf9796ff3c940da13cd83056444d7 + languageName: node + linkType: hard + "jest-worker@npm:^27.2.0": version: 27.5.1 resolution: "jest-worker@npm:27.5.1" @@ -6050,16 +6807,47 @@ __metadata: languageName: node linkType: hard +"jest-worker@npm:^29.2.1": + version: 29.2.1 + resolution: "jest-worker@npm:29.2.1" + dependencies: + "@types/node": "*" + jest-util: ^29.2.1 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 10365612fae02412376e963de9f069d854deaf5aec8ff818ce49c299cd0373256a387a2da68db8225fb0f18483f2cc9072a52d1846881d44b756b1e36bc7f4ed + languageName: node + linkType: hard + +"jest@npm:^29.2.2": + version: 29.2.2 + resolution: "jest@npm:29.2.2" + dependencies: + "@jest/core": ^29.2.2 + "@jest/types": ^29.2.1 + import-local: ^3.0.2 + jest-cli: ^29.2.2 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 6b4c0af3b5a0fddee46e26c9a539d70a3945700c20444ad3568e14faba27e89671f972dfaa8a02225c4e02b6d422171535660f5e167b1eb765a0922aea82533b + languageName: node + linkType: hard + "joi@npm:^17.2.1": - version: 17.6.0 - resolution: "joi@npm:17.6.0" + version: 17.6.4 + resolution: "joi@npm:17.6.4" dependencies: "@hapi/hoek": ^9.0.0 "@hapi/topo": ^5.0.0 "@sideway/address": ^4.1.3 "@sideway/formula": ^3.0.0 "@sideway/pinpoint": ^2.0.0 - checksum: eaf62f6c02f2edb1042f1ab04fc23a5918a2cb8f54bec84c6e1033624d8a462c10ae9518af55a3ba84f1793960450d58094eda308e7ef93c17edd4e3c8ef31d5 + checksum: f16243618f8c861bdcb7ccfdef7501d04e5c8ff93c4083a0ec907230c7bf427189c5894431f345d089a986f8e4b9efca8cc42e32663ded4d4f38edde6fda5315 languageName: node linkType: hard @@ -6163,6 +6951,13 @@ __metadata: languageName: node linkType: hard +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + languageName: node + linkType: hard + "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -6211,12 +7006,12 @@ __metadata: linkType: hard "jsx-ast-utils@npm:^2.4.1 || ^3.0.0": - version: 3.3.1 - resolution: "jsx-ast-utils@npm:3.3.1" + version: 3.3.3 + resolution: "jsx-ast-utils@npm:3.3.3" dependencies: array-includes: ^3.1.5 - object.assign: ^4.1.2 - checksum: 1d4b32fd24bbba561d5ca5c8d6ea095be646f83fc357d6f0cd2752f97f3ba0e0ffabc2f54b37a9d98258fc8ec0e1286cb7723cc1c9dc7af402d74fff72ae0a2b + object.assign: ^4.1.3 + checksum: a2ed78cac49a0f0c4be8b1eafe3c5257a1411341d8e7f1ac740debae003de04e5f6372bfcfbd9d082e954ffd99aac85bcda85b7c6bc11609992483f4cdc0f745 languageName: node linkType: hard @@ -6288,6 +7083,13 @@ __metadata: languageName: node linkType: hard +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + languageName: node + linkType: hard + "locate-path@npm:^3.0.0": version: 3.0.0 resolution: "locate-path@npm:3.0.0" @@ -6395,9 +7197,9 @@ __metadata: linkType: hard "lru-cache@npm:^7.7.1": - version: 7.13.1 - resolution: "lru-cache@npm:7.13.1" - checksum: f53c7dd098a7afd6342b23f7182629edff206c7665de79445a7f5455440e768a4d1c6ec52e1a16175580c71535c9437dfb6f6bc22ca1a0e4a7454a97cde87329 + version: 7.14.0 + resolution: "lru-cache@npm:7.14.0" + checksum: efdd329f2c1bb790b71d497c6c59272e6bc2d7dd060ba55fc136becd3dd31fc8346edb446275504d94cb60d3c8385dbf5267b79b23789e409b2bdf302d13f0d7 languageName: node linkType: hard @@ -6411,9 +7213,18 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^3.0.0": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: ^6.0.0 + checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 + languageName: node + linkType: hard + "make-fetch-happen@npm:^10.0.3": - version: 10.1.8 - resolution: "make-fetch-happen@npm:10.1.8" + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" dependencies: agentkeepalive: ^4.2.1 cacache: ^16.1.0 @@ -6431,7 +7242,7 @@ __metadata: promise-retry: ^2.0.1 socks-proxy-agent: ^7.0.0 ssri: ^9.0.0 - checksum: 5fe9fd9da5368a8a4fe9a3ea5b9aa15f1e91c9ab703cd9027a6b33840ecc8a57c182fbe1c767c139330a88c46a448b1f00da5e32065cec373aff2450b3da54ee + checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c languageName: node linkType: hard @@ -6465,6 +7276,8 @@ __metadata: resolution: "massive@workspace:." dependencies: "@babel/core": ^7.12.9 + "@babel/plugin-proposal-decorators": ^7.20.0 + "@babel/plugin-transform-flow-strip-types": ^7.19.0 "@babel/preset-env": ^7.19.1 "@babel/runtime": ^7.12.5 "@react-native-community/eslint-config": ^2.0.0 @@ -6473,7 +7286,11 @@ __metadata: "@react-navigation/drawer": ^6.5.0 "@react-navigation/native": ^6.0.13 "@react-navigation/stack": ^6.3.0 + "@testing-library/jest-native": ^5.1.2 + "@testing-library/react-native": ^11.3.0 "@types/d3-shape": ^3.1.0 + "@types/jest": ^29.2.0 + "@types/node": ^18.11.7 "@types/react-native": ^0.69.0 "@types/react-native-sqlite-storage": ^5.0.2 "@types/react-native-svg-charts": ^5.0.12 @@ -6481,8 +7298,11 @@ __metadata: "@types/react-test-renderer": ^18.0.0 "@typescript-eslint/eslint-plugin": ^5.29.0 "@typescript-eslint/parser": ^5.29.0 + babel-jest: ^29.2.2 babel-plugin-transform-remove-console: ^6.9.4 eslint: ^8.26.0 + eslint-plugin-flowtype: ^8.0.3 + jest: ^29.2.2 metro-react-native-babel-preset: ^0.73.3 react: ^18.2.0 react-native: ^0.70.4 @@ -6501,6 +7321,8 @@ __metadata: react-native-svg-charts: ^5.4.0 react-native-vector-icons: ^9.2.0 react-native-view-shot: ^3.4.0 + react-test-renderer: ^18.2.0 + typeorm: ^0.3.10 typescript: ^4.8.4 languageName: unknown linkType: soft @@ -6971,7 +7793,14 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -6990,9 +7819,9 @@ __metadata: linkType: hard "minimist@npm:^1.2.6": - version: 1.2.6 - resolution: "minimist@npm:1.2.6" - checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb + version: 1.2.7 + resolution: "minimist@npm:1.2.7" + checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec languageName: node linkType: hard @@ -7006,8 +7835,8 @@ __metadata: linkType: hard "minipass-fetch@npm:^2.0.3": - version: 2.1.0 - resolution: "minipass-fetch@npm:2.1.0" + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" dependencies: encoding: ^0.1.13 minipass: ^3.1.6 @@ -7016,7 +7845,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 1334732859a3f7959ed22589bafd9c40384b885aebb5932328071c33f86b3eb181d54c86919675d1825ab5f1c8e4f328878c863873258d113c29d79a4b0c9c9f + checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 languageName: node linkType: hard @@ -7048,11 +7877,11 @@ __metadata: linkType: hard "minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.3.4 - resolution: "minipass@npm:3.3.4" + version: 3.3.5 + resolution: "minipass@npm:3.3.5" dependencies: yallist: ^4.0.0 - checksum: 5d95a7738c54852ba78d484141e850c792e062666a2d0c681a5ac1021275beb7e1acb077e59f9523ff1defb80901aea4e30fac10ded9a20a25d819a42916ef1b + checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e languageName: node linkType: hard @@ -7117,6 +7946,17 @@ __metadata: languageName: node linkType: hard +"mz@npm:^2.4.0": + version: 2.7.0 + resolution: "mz@npm:2.7.0" + dependencies: + any-promise: ^1.0.0 + object-assign: ^4.0.1 + thenify-all: ^1.0.0 + checksum: 8427de0ece99a07e9faed3c0c6778820d7543e3776f9a84d22cf0ec0a8eb65f6e9aee9c9d353ff9a105ff62d33a9463c6ca638974cc652ee8140cd1e35951c87 + languageName: node + linkType: hard + "nanoid@npm:^3.1.23": version: 3.3.4 resolution: "nanoid@npm:3.3.4" @@ -7204,14 +8044,14 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 9.1.0 - resolution: "node-gyp@npm:9.1.0" + version: 9.3.0 + resolution: "node-gyp@npm:9.3.0" dependencies: env-paths: ^2.2.0 glob: ^7.1.4 graceful-fs: ^4.2.6 make-fetch-happen: ^10.0.3 - nopt: ^5.0.0 + nopt: ^6.0.0 npmlog: ^6.0.0 rimraf: ^3.0.2 semver: ^7.3.5 @@ -7219,7 +8059,7 @@ __metadata: which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 1437fa4a879b5b9010604128e8da8609b57c66034262087539ee04a8b764b8436af2be01bab66f8fc729a3adba2dcc21b10a32b9f552696c3fa8cd657d134fc4 + checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 languageName: node linkType: hard @@ -7230,13 +8070,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.5": - version: 2.0.5 - resolution: "node-releases@npm:2.0.5" - checksum: e85d949addd19f8827f32569d2be5751e7812ccf6cc47879d49f79b5234ff4982225e39a3929315f96370823b070640fb04d79fc0ddec8b515a969a03493a42f - languageName: node - linkType: hard - "node-releases@npm:^2.0.6": version: 2.0.6 resolution: "node-releases@npm:2.0.6" @@ -7251,14 +8084,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" dependencies: - abbrev: 1 + abbrev: ^1.0.0 bin: nopt: bin/nopt.js - checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac languageName: node linkType: hard @@ -7278,6 +8111,15 @@ __metadata: languageName: node linkType: hard +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: ^3.0.0 + checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 + languageName: node + linkType: hard + "npmlog@npm:^6.0.0": version: 6.0.2 resolution: "npmlog@npm:6.0.2" @@ -7313,7 +8155,7 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.1": +"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f @@ -7331,7 +8173,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.0, object-inspect@npm:^1.9.0": +"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": version: 1.12.2 resolution: "object-inspect@npm:1.12.2" checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 @@ -7354,15 +8196,15 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2": - version: 4.1.2 - resolution: "object.assign@npm:4.1.2" +"object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": + version: 4.1.4 + resolution: "object.assign@npm:4.1.4" dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - has-symbols: ^1.0.1 + call-bind: ^1.0.2 + define-properties: ^1.1.4 + has-symbols: ^1.0.3 object-keys: ^1.1.1 - checksum: d621d832ed7b16ac74027adb87196804a500d80d9aca536fccb7ba48d33a7e9306a75f94c1d29cbfa324bc091bfc530bc24789568efdaee6a47fcfa298993814 + checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 languageName: node linkType: hard @@ -7452,7 +8294,7 @@ __metadata: languageName: node linkType: hard -"onetime@npm:^5.1.0": +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: @@ -7524,7 +8366,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2": +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -7595,6 +8437,41 @@ __metadata: languageName: node linkType: hard +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + 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 + checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + languageName: node + linkType: hard + +"parse5-htmlparser2-tree-adapter@npm:^6.0.0": + version: 6.0.1 + resolution: "parse5-htmlparser2-tree-adapter@npm:6.0.1" + dependencies: + parse5: ^6.0.1 + checksum: 1848378b355d027915645c13f13f982e60502d201f53bc2067a508bf2dba4aac08219fc781dcd160167f5f50f0c73f58d20fa4fb3d90ee46762c20234fa90a6d + languageName: node + linkType: hard + +"parse5@npm:^5.1.1": + version: 5.1.1 + resolution: "parse5@npm:5.1.1" + checksum: 613a714af4c1101d1cb9f7cece2558e35b9ae8a0c03518223a4a1e35494624d9a9ad5fad4c13eab66a0e0adccd9aa3d522fc8f5f9cc19789e0579f3fa0bdfc65 + languageName: node + linkType: hard + +"parse5@npm:^6.0.1": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd + languageName: node + linkType: hard + "parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -7637,7 +8514,7 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^3.1.0": +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 @@ -7688,7 +8565,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.5": +"pirates@npm:^4.0.4, pirates@npm:^4.0.5": version: 4.0.5 resolution: "pirates@npm:4.0.5" checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 @@ -7704,6 +8581,15 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: ^4.0.0 + checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + languageName: node + linkType: hard + "posix-character-classes@npm:^0.1.0": version: 0.1.1 resolution: "posix-character-classes@npm:0.1.1" @@ -7748,6 +8634,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.0.3, pretty-format@npm:^29.2.1": + version: 29.2.1 + resolution: "pretty-format@npm:29.2.1" + dependencies: + "@jest/schemas": ^29.0.0 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: d192cbd3dee72e9b60764629d1f098d60fddc3fc9435f44774a01dd1c5794f36a81fa6a7377a527f994317950d8fc6c5bf9c9915387c5d32f107525996e32a1c + languageName: node + linkType: hard + "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -7773,15 +8670,15 @@ __metadata: linkType: hard "promise@npm:^8.0.3": - version: 8.1.0 - resolution: "promise@npm:8.1.0" + version: 8.3.0 + resolution: "promise@npm:8.3.0" dependencies: asap: ~2.0.6 - checksum: 89b71a56154ed7d66a73236d8e8351a9c59adddba3929ecc845f75421ff37fc08ea0c67ad76cd5c0b0d81812c7d07a32bed27e7df5fcc960c6d68b0c1cd771f7 + checksum: a69f0ddbddf78ffc529cffee7ad950d307347615970564b17988ce43fbe767af5c738a9439660b24a9a8cbea106c0dcbb6c2b20e23b7e96a8e89e5c2679e94d5 languageName: node linkType: hard -"prompts@npm:^2.4.0": +"prompts@npm:^2.0.1, prompts@npm:^2.4.0": version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: @@ -7856,15 +8753,15 @@ __metadata: linkType: hard "react-freeze@npm:^1.0.0": - version: 1.0.0 - resolution: "react-freeze@npm:1.0.0" + version: 1.0.3 + resolution: "react-freeze@npm:1.0.3" peerDependencies: - react: ^17.0.0 - checksum: c746b9d369c77296c277626cf7dd5ff24d49657e2f16412d14f845d1b428588184c0009374119f7dec24be37ab8c134d15aa4ecd57360c874880af508dcc577b + react: ">=17.0.0" + checksum: 4258eabdbbf74aaebc38ad1fd7cfdc1984d2a844a2247b39a341c55c1beb02d5e855e6473ec5683205a52b2251d0f7dffa07cd8100f402dd2698af88b932d946 languageName: node linkType: hard -"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0": +"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.2.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e @@ -8179,6 +9076,19 @@ __metadata: languageName: node linkType: hard +"react-test-renderer@npm:^18.2.0": + version: 18.2.0 + resolution: "react-test-renderer@npm:18.2.0" + dependencies: + react-is: ^18.2.0 + react-shallow-renderer: ^16.15.0 + scheduler: ^0.23.0 + peerDependencies: + react: ^18.2.0 + checksum: 6b6980ced93fa2b72662d5e4ab3b4896833586940047ce52ca9aca801e5432adf05fcbe28289b0af3ce6a2a7c590974e25dcc8aa43d0de658bfe8bbcd686f958 + languageName: node + linkType: hard + "react@npm:^18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" @@ -8233,12 +9143,29 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.0.1": - version: 10.0.1 - resolution: "regenerate-unicode-properties@npm:10.0.1" +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: ^4.0.0 + strip-indent: ^3.0.0 + checksum: fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b + languageName: node + linkType: hard + +"reflect-metadata@npm:^0.1.13": + version: 0.1.13 + resolution: "reflect-metadata@npm:0.1.13" + checksum: 798d379a7b6f6455501145419505c97dd11cbc23857a386add2b9ef15963ccf15a48d9d15507afe01d4cd74116df8a213247200bac00320bd7c11ddeaa5e8fb4 + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.1.0": + version: 10.1.0 + resolution: "regenerate-unicode-properties@npm:10.1.0" dependencies: regenerate: ^1.4.2 - checksum: 1b638b7087d8143e5be3e20e2cda197ea0440fa0bc2cc49646b2f50c5a2b1acdc54b21e4215805a5a2dd487c686b2291accd5ad00619534098d2667e76247754 + checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 languageName: node linkType: hard @@ -8249,10 +9176,10 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.2, regenerator-runtime@npm:^0.13.4": - version: 0.13.9 - resolution: "regenerator-runtime@npm:0.13.9" - checksum: 65ed455fe5afd799e2897baf691ca21c2772e1a969d19bb0c4695757c2d96249eb74ee3553ea34a91062b2a676beedf630b4c1551cc6299afb937be1426ec55e +"regenerator-runtime@npm:^0.13.10, regenerator-runtime@npm:^0.13.2": + version: 0.13.10 + resolution: "regenerator-runtime@npm:0.13.10" + checksum: 09893f5a9e82932642d9a999716b6c626dc53ef2a01307c952ebbf8e011802360163a37c304c18a6c358548be5a72b448e37209954a18696f21e438c81cbb4b9 languageName: node linkType: hard @@ -8294,34 +9221,34 @@ __metadata: linkType: hard "regexpu-core@npm:^5.1.0": - version: 5.1.0 - resolution: "regexpu-core@npm:5.1.0" + version: 5.2.1 + resolution: "regexpu-core@npm:5.2.1" dependencies: regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.0.1 - regjsgen: ^0.6.0 - regjsparser: ^0.8.2 + regenerate-unicode-properties: ^10.1.0 + regjsgen: ^0.7.1 + regjsparser: ^0.9.1 unicode-match-property-ecmascript: ^2.0.0 unicode-match-property-value-ecmascript: ^2.0.0 - checksum: 7b4eb8d182d9d10537a220a93138df5bc7eaf4ed53e36b95e8427d33ed8a2b081468f1a15d3e5fcee66517e1df7f5ca180b999e046d060badd97150f2ffe87b2 + checksum: c1244db79f7a4597414cd7fdf5171fa73905f0cbc684385c78127fc6198f9cade8fe829a1c4036c8ec57ac75b1ffb8c196451abdd2e153f26a4d8043fa10bbb3 languageName: node linkType: hard -"regjsgen@npm:^0.6.0": - version: 0.6.0 - resolution: "regjsgen@npm:0.6.0" - checksum: c5158ebd735e75074e41292ade1ff05d85566d205426cc61501e360c450a63baced8512ee3ae238e5c0a0e42969563c7875b08fa69d6f0402daf36bcb3e4d348 +"regjsgen@npm:^0.7.1": + version: 0.7.1 + resolution: "regjsgen@npm:0.7.1" + checksum: 7cac399921c58db8e16454869283ff66871531180218064fa938ac05c11c2976792a00706c3c78bbc625e1d793ca373065ea90564e06189a751a7b4ae33acadc languageName: node linkType: hard -"regjsparser@npm:^0.8.2": - version: 0.8.4 - resolution: "regjsparser@npm:0.8.4" +"regjsparser@npm:^0.9.1": + version: 0.9.1 + resolution: "regjsparser@npm:0.9.1" dependencies: jsesc: ~0.5.0 bin: regjsparser: bin/parser - checksum: d069b932491761cda127ce11f6bd2729c3b1b394a35200ec33f1199e937423db28ceb86cf33f0a97c76ecd7c0f8db996476579eaf0d80a1f74c1934f4ca8b27a + checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc languageName: node linkType: hard @@ -8353,6 +9280,15 @@ __metadata: languageName: node linkType: hard +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: ^5.0.0 + checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 + languageName: node + linkType: hard + "resolve-from@npm:^3.0.0": version: 3.0.0 resolution: "resolve-from@npm:3.0.0" @@ -8367,6 +9303,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + languageName: node + linkType: hard + "resolve-url@npm:^0.2.1": version: 0.2.1 resolution: "resolve-url@npm:0.2.1" @@ -8374,7 +9317,14 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.12.0, resolve@npm:^1.14.2": +"resolve.exports@npm:^1.1.0": + version: 1.1.0 + resolution: "resolve.exports@npm:1.1.0" + checksum: 52865af8edb088f6c7759a328584a5de6b226754f004b742523adcfe398cfbc4559515104bc2ae87b8e78b1e4de46c9baec400b3fb1f7d517b86d2d48a098a2d + languageName: node + linkType: hard + +"resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0": version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: @@ -8400,7 +9350,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin": +"resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" dependencies: @@ -8515,13 +9465,24 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 languageName: node linkType: hard +"safe-regex-test@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-regex-test@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + is-regex: ^1.1.4 + checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 + languageName: node + linkType: hard + "safe-regex@npm:^1.1.0": version: 1.1.0 resolution: "safe-regex@npm:1.1.0" @@ -8538,6 +9499,13 @@ __metadata: languageName: node linkType: hard +"sax@npm:>=0.6.0": + version: 1.2.4 + resolution: "sax@npm:1.2.4" + checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe + languageName: node + linkType: hard + "scheduler@npm:^0.22.0": version: 0.22.0 resolution: "scheduler@npm:0.22.0" @@ -8547,12 +9515,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.0.0": - version: 7.0.0 - resolution: "semver@npm:7.0.0" - bin: - semver: bin/semver.js - checksum: 272c11bf8d083274ef79fe40a81c55c184dff84dd58e3c325299d0927ba48cece1f020793d138382b85f89bab5002a35a5ba59a3a68a7eebbb597eb733838778 +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: ^1.1.0 + checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a languageName: node linkType: hard @@ -8565,7 +9533,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": +"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: @@ -8575,13 +9543,13 @@ __metadata: linkType: hard "semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.3.7 - resolution: "semver@npm:7.3.7" + version: 7.3.8 + resolution: "semver@npm:7.3.8" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232 + checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 languageName: node linkType: hard @@ -8658,6 +9626,18 @@ __metadata: languageName: node linkType: hard +"sha.js@npm:^2.4.11": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + bin: + sha.js: ./bin.js + checksum: ebd3f59d4b799000699097dadb831c8e3da3eb579144fd7eb7a19484cbcbb7aca3c68ba2bb362242eb09e33217de3b4ea56e4678184c334323eca24a58e3ad07 + languageName: node + linkType: hard + "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -8700,9 +9680,9 @@ __metadata: linkType: hard "shell-quote@npm:^1.6.1, shell-quote@npm:^1.7.3": - version: 1.7.3 - resolution: "shell-quote@npm:1.7.3" - checksum: aca58e73a3a5d933d02e0bdddedc53ee14f7c2ec264f97ac915b9d4482d077a38e422aa664631d60a672cd3cdb4054eb2e6c0303f54882453dacb6483e482d34 + version: 1.7.4 + resolution: "shell-quote@npm:1.7.4" + checksum: 2874ea9c1a7c3ebfc9ec5734a897e16533d0d06f2e4cddc22ba3d1cab5cdc07d0f825364c1b1e39abe61236f44d8e60e933c7ad7349ce44de4f5dddc7b4354e9 languageName: node linkType: hard @@ -8717,7 +9697,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -8813,12 +9793,12 @@ __metadata: linkType: hard "socks@npm:^2.6.2": - version: 2.7.0 - resolution: "socks@npm:2.7.0" + version: 2.7.1 + resolution: "socks@npm:2.7.1" dependencies: ip: ^2.0.0 smart-buffer: ^4.2.0 - checksum: 0b5d94e2b3c11e7937b40fc5dac1e80d8b92a330e68c51f1d271ce6980c70adca42a3f8cd47c4a5769956bada074823b53374f2dc5f2ea5c2121b222dec6eadf + checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 languageName: node linkType: hard @@ -8835,6 +9815,16 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 + languageName: node + linkType: hard + "source-map-support@npm:^0.5.16": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -8905,6 +9895,15 @@ __metadata: languageName: node linkType: hard +"stack-utils@npm:^2.0.3": + version: 2.0.5 + resolution: "stack-utils@npm:2.0.5" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 76b69da0f5b48a34a0f93c98ee2a96544d2c4ca2557f7eef5ddb961d3bdc33870b46f498a84a7c4f4ffb781df639840e7ebf6639164ed4da5e1aeb659615b9c7 + languageName: node + linkType: hard + "stackframe@npm:^1.3.4": version: 1.3.4 resolution: "stackframe@npm:1.3.4" @@ -8959,6 +9958,23 @@ __metadata: languageName: node linkType: hard +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: ^1.0.2 + strip-ansi: ^6.0.0 + checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 + languageName: node + linkType: hard + +"string-natural-compare@npm:^3.0.1": + version: 3.0.1 + resolution: "string-natural-compare@npm:3.0.1" + checksum: 65910d9995074086e769a68728395effbba9b7186be5b4c16a7fad4f4ef50cae95ca16e3e9086e019cbb636ae8daac9c7b8fe91b5f21865c5c0f26e3c0725406 + languageName: node + linkType: hard + "string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -9044,6 +10060,13 @@ __metadata: languageName: node linkType: hard +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 + languageName: node + linkType: hard + "strip-eof@npm:^1.0.0": version: 1.0.0 resolution: "strip-eof@npm:1.0.0" @@ -9051,6 +10074,22 @@ __metadata: languageName: node linkType: hard +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 + languageName: node + linkType: hard + +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: ^1.0.0 + checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -9132,6 +10171,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": ^0.1.2 + glob: ^7.1.4 + minimatch: ^3.0.4 + checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 + languageName: node + linkType: hard + "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -9139,6 +10189,24 @@ __metadata: languageName: node linkType: hard +"thenify-all@npm:^1.0.0": + version: 1.6.0 + resolution: "thenify-all@npm:1.6.0" + dependencies: + thenify: ">= 3.1.0 < 4" + checksum: dba7cc8a23a154cdcb6acb7f51d61511c37a6b077ec5ab5da6e8b874272015937788402fd271fdfc5f187f8cb0948e38d0a42dcc89d554d731652ab458f5343e + languageName: node + linkType: hard + +"thenify@npm:>= 3.1.0 < 4": + version: 3.3.1 + resolution: "thenify@npm:3.3.1" + dependencies: + any-promise: ^1.0.0 + checksum: 84e1b804bfec49f3531215f17b4a6e50fd4397b5f7c1bccc427b9c656e1ecfb13ea79d899930184f78bc2f57285c54d9a50a590c8868f4f0cef5c1d9f898b05e + languageName: node + linkType: hard + "throat@npm:^5.0.0": version: 5.0.0 resolution: "throat@npm:5.0.0" @@ -9231,7 +10299,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.1": +"tslib@npm:^2.0.1, tslib@npm:^2.3.1": version: 2.4.0 resolution: "tslib@npm:2.4.0" checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113 @@ -9258,6 +10326,13 @@ __metadata: languageName: node linkType: hard +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 + languageName: node + linkType: hard + "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -9265,6 +10340,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + languageName: node + linkType: hard + "type-fest@npm:^0.7.1": version: 0.7.1 resolution: "type-fest@npm:0.7.1" @@ -9272,6 +10354,88 @@ __metadata: languageName: node linkType: hard +"typeorm@npm:^0.3.10": + version: 0.3.10 + resolution: "typeorm@npm:0.3.10" + dependencies: + "@sqltools/formatter": ^1.2.2 + app-root-path: ^3.0.0 + buffer: ^6.0.3 + chalk: ^4.1.0 + cli-highlight: ^2.1.11 + date-fns: ^2.28.0 + debug: ^4.3.3 + dotenv: ^16.0.0 + glob: ^7.2.0 + js-yaml: ^4.1.0 + mkdirp: ^1.0.4 + reflect-metadata: ^0.1.13 + sha.js: ^2.4.11 + tslib: ^2.3.1 + uuid: ^8.3.2 + xml2js: ^0.4.23 + yargs: ^17.3.1 + peerDependencies: + "@google-cloud/spanner": ^5.18.0 + "@sap/hana-client": ^2.12.25 + better-sqlite3: ^7.1.2 + hdb-pool: ^0.1.6 + ioredis: ^5.0.4 + mongodb: ^3.6.0 + mssql: ^7.3.0 + mysql2: ^2.2.5 + oracledb: ^5.1.0 + pg: ^8.5.1 + pg-native: ^3.0.0 + pg-query-stream: ^4.0.0 + redis: ^3.1.1 || ^4.0.0 + sql.js: ^1.4.0 + sqlite3: ^5.0.3 + ts-node: ^10.7.0 + typeorm-aurora-data-api-driver: ^2.0.0 + peerDependenciesMeta: + "@google-cloud/spanner": + optional: true + "@sap/hana-client": + optional: true + better-sqlite3: + optional: true + hdb-pool: + optional: true + ioredis: + optional: true + mongodb: + optional: true + mssql: + optional: true + mysql2: + optional: true + oracledb: + optional: true + pg: + optional: true + pg-native: + optional: true + pg-query-stream: + optional: true + redis: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + ts-node: + optional: true + typeorm-aurora-data-api-driver: + optional: true + bin: + typeorm: cli.js + typeorm-ts-node-commonjs: cli-ts-node-commonjs.js + typeorm-ts-node-esm: cli-ts-node-esm.js + checksum: 8a4ce43b427e9224d9e8f278d8c490d116f04d3cd7cd3ac9e4ed7e0541f82b3c88925194cbf38533dc6d9adf40886778f3caf0565aa50998454bb2047e8afe1f + languageName: node + linkType: hard + "typescript@npm:^4.8.4": version: 4.8.4 resolution: "typescript@npm:4.8.4" @@ -9293,14 +10457,14 @@ __metadata: linkType: hard "uglify-es@npm:^3.1.9": - version: 3.3.9 - resolution: "uglify-es@npm:3.3.9" + version: 3.3.10 + resolution: "uglify-es@npm:3.3.10" dependencies: - commander: ~2.13.0 + commander: ~2.14.1 source-map: ~0.6.1 bin: uglifyjs: bin/uglifyjs - checksum: f2de133ba71f05aca442db2c31a2f2614201e5b540948f022f5b53cd39b6b1b43a7db7cc2aa9917383bbb26e8043947fce35867cd1edcf2444854cb7fae0fa99 + checksum: 22b028b6454c4d684c76617e9ac5b8da0e56611b32cd5d89e797225d6f1022f697a5642d9084319436df3aed462225749f8287d37bf67dccda1ac9d0365dd950 languageName: node linkType: hard @@ -9341,9 +10505,9 @@ __metadata: linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.0.0" - checksum: dda4d39128cbbede2ac60fbb85493d979ec65913b8a486bf7cb7a375a2346fa48cbf9dc6f1ae23376e7e8e684c2b411434891e151e865a661b40a85407db51d0 + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b languageName: node linkType: hard @@ -9359,21 +10523,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" +"unique-filename@npm:^2.0.0": + version: 2.0.1 + resolution: "unique-filename@npm:2.0.1" dependencies: - unique-slug: ^2.0.0 - checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 + unique-slug: ^3.0.0 + checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f languageName: node linkType: hard -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" +"unique-slug@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-slug@npm:3.0.0" dependencies: imurmurhash: ^0.1.4 - checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a + checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c languageName: node linkType: hard @@ -9401,23 +10565,9 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.4": - version: 1.0.4 - resolution: "update-browserslist-db@npm:1.0.4" - dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - browserslist-lint: cli.js - checksum: 7c7da28d0fc733b17e01c8fa9385ab909eadce64b8ea644e9603867dc368c2e2a6611af8247e72612b23f9e7cb87ac7c7585a05ff94e1759e9d646cbe9bf49a7 - languageName: node - linkType: hard - "update-browserslist-db@npm:^1.0.9": - version: 1.0.9 - resolution: "update-browserslist-db@npm:1.0.9" + version: 1.0.10 + resolution: "update-browserslist-db@npm:1.0.10" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 @@ -9425,7 +10575,7 @@ __metadata: browserslist: ">= 4.21.0" bin: browserslist-lint: cli.js - checksum: f625899b236f6a4d7f62b56be1b8da230c5563d1fef84d3ef148f2e1a3f11a5a4b3be4fd7e3703e51274c116194017775b10afb4de09eb2c0d09d36b90f1f578 + checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 languageName: node linkType: hard @@ -9482,6 +10632,26 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.0.1 + resolution: "v8-to-istanbul@npm:9.0.1" + dependencies: + "@jridgewell/trace-mapping": ^0.3.12 + "@types/istanbul-lib-coverage": ^2.0.1 + convert-source-map: ^1.6.0 + checksum: a49c34bf0a3af0c11041a3952a2600913904a983bd1bc87148b5c033bc5c1d02d5a13620fcdbfa2c60bc582a2e2970185780f0c844b4c3a220abf405f8af6311 + languageName: node + linkType: hard + "vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -9496,7 +10666,7 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.7": +"walker@npm:^1.0.7, walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" dependencies: @@ -9506,9 +10676,9 @@ __metadata: linkType: hard "warn-once@npm:^0.1.0": - version: 0.1.0 - resolution: "warn-once@npm:0.1.0" - checksum: 5fde2b526d132369ae30a34e9bd172f77ae3c061e6b875194de42d668bc189bd779ddada5217348cdf23ecac6a277931b40482173c6695544b924f6a8cd67601 + version: 0.1.1 + resolution: "warn-once@npm:0.1.1" + checksum: e6a5a1f5a8dba7744399743d3cfb571db4c3947897875d4962a7c5b1bf2195ab4518c838cb4cea652e71729f21bba2e98dc75686f5fccde0fabbd894e2ed0c0d languageName: node linkType: hard @@ -9643,6 +10813,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^4.0.1": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^3.0.7 + checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c + languageName: node + linkType: hard + "ws@npm:^6.1.4": version: 6.2.2 resolution: "ws@npm:6.2.2" @@ -9653,8 +10833,8 @@ __metadata: linkType: hard "ws@npm:^7, ws@npm:^7.5.1": - version: 7.5.8 - resolution: "ws@npm:7.5.8" + version: 7.5.9 + resolution: "ws@npm:7.5.9" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -9663,7 +10843,24 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 49479ccf3ddab6500c5906fbcc316e9c8cd44b0ffb3903a6c1caf9b38cb9e06691685722a4c642cfa7d4c6eb390424fc3142cd4f8b940cfc7a9ce9761b1cd65b + checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 + languageName: node + linkType: hard + +"xml2js@npm:^0.4.23": + version: 0.4.23 + resolution: "xml2js@npm:0.4.23" + dependencies: + sax: ">=0.6.0" + xmlbuilder: ~11.0.0 + checksum: ca0cf2dfbf6deeaae878a891c8fbc0db6fd04398087084edf143cdc83d0509ad0fe199b890f62f39c4415cf60268a27a6aed0d343f0658f8779bd7add690fa98 + languageName: node + linkType: hard + +"xmlbuilder@npm:~11.0.0": + version: 11.0.1 + resolution: "xmlbuilder@npm:11.0.1" + checksum: 7152695e16f1a9976658215abab27e55d08b1b97bca901d58b048d2b6e106b5af31efccbdecf9b07af37c8377d8e7e821b494af10b3a68b0ff4ae60331b415b0 languageName: node linkType: hard @@ -9712,6 +10909,13 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^21.0.0": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + languageName: node + linkType: hard + "yargs@npm:^15.1.0, yargs@npm:^15.3.1": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -9731,7 +10935,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^16.1.1": +"yargs@npm:^16.0.0, yargs@npm:^16.1.1": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: @@ -9746,6 +10950,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.3.1": + version: 17.6.0 + resolution: "yargs@npm:17.6.0" + 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.0.0 + checksum: 604bdb4a6395a870540d2f3fea083c8e28441f12da8fd05b172b1e68480f00ed73d76be4a05fac19de9bf55ec7729b41e81cf555cccaed700aa192e4fff64872 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"