fix layout of carpet roll calculator. todo: reinstate unit buttons for plywood calculator.

This commit is contained in:
Jordan 2024-08-19 07:08:54 -07:00
parent dc7f4b25a9
commit 257642a251
12 changed files with 396 additions and 297 deletions

View File

@ -14,6 +14,7 @@ const CARPET_ROLL_SELECTED_SVG =
const CarpetRollIcon = ({ selected }: { selected: boolean }) => {
const uri = selected ? CARPET_ROLL_SELECTED_SVG : CARPET_ROLL_SVG;
console.log(`Loading %s`, uri);
return <SvgUri width="2em" height="2em" uri={uri} />;
};

View File

@ -4,6 +4,28 @@ import { rememberReducer, rememberEnhancer } from "redux-remember";
import reducers, { DEFAULT_PRELOADED_STATE } from "@/features/product/productSlice";
import AsyncStorage from "@react-native-async-storage/async-storage";
// thanks to https://github.com/rt2zz/redux-persist/issues/1208#issuecomment-658695446
// for the workaround
const createNoopStorage = () => {
return {
getItem(_key : any) {
return Promise.resolve(null);
},
setItem(_key : any, value : any) {
return Promise.resolve(value);
},
removeItem(_key : any) {
return Promise.resolve();
},
};
};
const storage =
typeof window === "undefined" ? createNoopStorage() : AsyncStorage;
export default storage;
const PERSIST_WHOLE_STORE =
new Boolean(process.env.PERSIST_WHOLE_STORE).valueOf() || false;
@ -20,7 +42,7 @@ export function setupStore(preloadedState = DEFAULT_PRELOADED_STATE) {
preloadedState,
enhancers: (getDefaultEnhancers) =>
getDefaultEnhancers().concat(
rememberEnhancer(AsyncStorage, rememberedKeys, {
rememberEnhancer(storage, rememberedKeys, {
persistWholeStore: PERSIST_WHOLE_STORE,
})
),

View File

@ -1,14 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="138.30681mm"
height="154.33244mm"
viewBox="0 0 138.30681 154.33244"
version="1.1"
id="svg5"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
viewBox="0 0 138.30681 154.33244">
<defs
id="defs2" />
<g

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -1,41 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="142.37779mm"
height="154.51445mm"
viewBox="0 0 142.37779 154.51445"
version="1.1"
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="icon-carpet-roll-selected.svg"
inkscape:export-filename="../assets/images/icons/carpet-roll-64.png"
inkscape:export-xdpi="11.417511"
inkscape:export-ydpi="11.417511"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#585858"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.79909512"
inkscape:cx="427.98409"
inkscape:cy="198.34935"
inkscape:window-width="1920"
inkscape:window-height="1008"
inkscape:window-x="0"
inkscape:window-y="681"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
viewBox="0 0 142.37779 154.51445">
<defs
id="defs2" />
<g
@ -46,9 +12,6 @@
<path
id="path1159"
style="color:#000000;fill:#666666;fill-rule:evenodd;stroke:#cccccc;stroke-width:5;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
sodipodi:type="inkscape:offset"
inkscape:radius="0.33110365"
inkscape:original="M 85.214844 -6.9941406 C 70.013101 -6.494485 55.139955 -0.43163169 43.707031 9.5605469 C 30.013867 21.362005 20.944785 38.446198 19.085938 56.449219 C 17.358707 72.332698 21.014781 88.716233 29.230469 102.41016 C 39.520614 119.81061 56.638281 132.98252 76.03125 138.63672 C 82.65448 140.58173 89.540529 141.77025 96.458984 141.68555 C 115.61209 141.94239 134.76485 142.20153 153.91797 142.45703 C 154.55818 134.40231 155.19894 126.34763 155.83984 118.29297 C 135.18432 118.00696 114.52684 117.78015 93.873047 117.42578 C 80.647337 116.41488 67.916649 110.28207 58.582031 100.88867 C 52.070874 94.381035 47.193434 86.30892 44.728516 77.402344 C 42.589935 69.786839 42.32538 61.636547 44.011719 53.955078 C 46.999506 40.237159 56.336432 28.015139 68.902344 21.708984 C 76.179541 18.017237 84.56116 16.49232 92.609375 17.550781 C 105.47803 19.123751 117.29397 27.652918 122.69922 39.457031 C 124.2433 42.820885 125.26799 46.602101 125.57422 50.355469 C 126.08314 55.844903 125.04871 61.62513 122.51172 66.595703 C 118.69587 74.236827 111.48288 80.366569 102.99414 81.986328 C 98.380931 82.881417 93.437488 82.363391 89.1875 80.232422 C 83.668056 77.562868 79.16371 72.357272 78.208984 66.197266 C 77.642576 62.560594 78.60807 58.687652 80.996094 55.859375 C 80.898514 58.890704 81.095836 62.010499 82.367188 64.810547 C 84.05204 68.882567 87.592589 72.214241 91.904297 73.302734 C 95.777353 74.339207 99.867688 73.625621 103.61328 72.421875 C 106.30071 71.528147 108.63458 69.786802 110.41992 67.605469 C 114.58333 62.715455 116.25928 55.924687 115.11328 49.630859 C 113.74274 41.428115 107.89047 34.34961 100.46484 30.791016 C 92.86163 27.075438 83.717791 27.076984 75.933594 30.257812 C 64.775062 34.759192 56.518994 45.396663 54.443359 57.191406 C 52.491012 67.446627 54.957367 78.397692 60.941406 86.929688 C 68.583415 98.108042 81.45297 105.49998 94.955078 106.49414 C 106.54011 107.47506 118.38117 103.97767 127.69727 97.052734 C 140.03453 88.048478 148.27185 73.639108 149.67578 58.419922 C 151.00619 45.171814 147.4177 31.531028 139.85938 20.582031 C 130.27054 6.4471034 114.71504 -3.4768114 97.845703 -6.1816406 C 93.675003 -6.866132 89.439024 -7.1235453 85.214844 -6.9941406 z "
d="M 85.203125,-7.3242188 C 69.920576,-6.8219072 54.978371,-0.73159347 43.488281,9.3105469 29.730781,21.167938 20.62376,38.325311 18.755859,56.416016 c -1.734796,15.95712 1.938409,32.407948 10.191407,46.164064 10.334605,17.47423 27.516469,30.69674 46.990234,36.375 6.645281,1.95148 13.56116,3.1467 20.517578,3.0625 19.153082,0.25684 38.305822,0.51598 57.458982,0.77148 a 0.33113676,0.33113676 0 0 0 0.33399,-0.30664 c 0.64021,-8.0547 1.28097,-16.1094 1.92187,-24.16406 a 0.33113676,0.33113676 0 0 0 -0.32617,-0.35742 c -20.65485,-0.286 -41.30981,-0.51288 -61.960938,-0.86719 h -0.0039 c -13.133341,-1.00893 -25.787797,-7.10439 -35.0625,-16.4375 a 0.33113676,0.33113676 0 0 0 0,-0.002 C 52.343603,94.184995 47.495562,86.16238 45.046875,77.314453 a 0.33113676,0.33113676 0 0 0 0,-0.002 C 42.922997,69.749353 42.661672,61.651864 44.335938,54.025391 47.301902,40.407665 56.579386,28.264581 69.050781,22.005859 a 0.33113676,0.33113676 0 0 0 0.002,-0.002 c 7.218526,-3.661983 15.535683,-5.174225 23.513672,-4.125 a 0.33113676,0.33113676 0 0 0 0.002,0 c 12.749801,1.558443 24.475741,10.023864 29.830081,21.716797 1.528,3.328833 2.54287,7.075443 2.8457,10.787109 a 0.33113676,0.33113676 0 0 0 0,0.0039 c 0.50314,5.427095 -0.52104,11.148138 -3.02734,16.058593 a 0.33113676,0.33113676 0 0 0 -0.002,0.002 c -3.77296,7.555238 -10.91161,13.615485 -19.2832,15.21289 a 0.33113676,0.33113676 0 0 0 0,0.002 c -4.546338,0.882115 -9.418457,0.367934 -13.595702,-1.726562 a 0.33113676,0.33113676 0 0 0 -0.0039,-0.002 c -5.431125,-2.626837 -9.860013,-7.754966 -10.794922,-13.78711 -0.497265,-3.192735 0.282359,-6.536996 2.125,-9.185546 -0.0139,2.705038 0.257235,5.460018 1.404297,7.986328 1.724833,4.159718 5.336057,7.559506 9.757813,8.675781 3.964246,1.059122 8.116269,0.326271 11.890621,-0.886719 a 0.33113676,0.33113676 0 0 0 0.002,0 c 2.75294,-0.915515 5.13542,-2.694581 6.95508,-4.916016 l 0.004,-0.0059 c 4.22887,-4.970422 5.92559,-11.850563 4.76367,-18.238281 v -0.0039 c -1.39169,-8.320828 -7.31354,-15.475053 -14.83007,-19.078125 l -0.002,-0.002 C 92.910555,26.731743 83.676017,26.736335 75.808594,29.951172 64.535605,34.499437 56.212806,45.226465 54.117188,57.134766 c -1.968025,10.346436 0.517884,21.379932 6.552734,29.984375 7.700829,11.262849 20.653527,18.702169 34.257812,19.705079 11.668956,0.98802 23.584106,-2.53175 32.964846,-9.503908 l 0.002,-0.002 c 12.41469,-9.061773 20.69784,-23.548746 22.11133,-38.865234 v -0.002 c 1.33798,-13.328328 -2.27053,-27.040971 -9.87305,-38.054688 v -0.002 C 130.49093,6.1822132 114.86084,-3.7880615 97.898438,-6.5078125 93.705473,-7.195958 89.449462,-7.4542424 85.205078,-7.3242188 a 0.33113676,0.33113676 0 0 0 -0.002,0 z" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -36,7 +36,6 @@ const BIG_FONT_SIZE = 30;
const styles = StyleSheet.create({
component: {
paddingVertical: 100,
alignItems: "center",
},
dimensions: {

View File

@ -1,5 +1,5 @@
import { useEffect, useState } from "react";
import { View, Text, StyleSheet } from "react-native";
import { View, Text, StyleSheet, StatusBar, Dimensions, useWindowDimensions } from "react-native";
import { Product } from "@/lib/product";
import { selectProducts } from "@/features/product/productSlice";
import { area_t, diameterToLength, length_t } from "@/lib/dimensions";
@ -9,10 +9,14 @@ import convert, { Length } from "convert";
import ProductList from "@/components/ProductList";
import { HelpfulMeasurementUnitInput } from "./HelpfulMeasurementInput";
import { ScrollView } from "react-native-gesture-handler";
import { SafeAreaView } from "react-native-safe-area-context";
const DEFAULT_DIAMETER_UNIT: Length = "in";
const DEFAULT_LENGTH_UNIT: Length = "ft";
const screenDimensions = Dimensions.get('screen');
const windowDimensions = Dimensions.get('window');
export const CarpetRollCalculator = () => {
const products = useAppSelector(selectProducts);
@ -61,85 +65,93 @@ export const CarpetRollCalculator = () => {
}, [outerDiameter, innerDiameter, width, numRings, selectedProduct, units]);
return (
<View style={styles.container}>
<View>
{selectedProduct ? (
<AreaRugTag dimensions={rugDimensions} product={selectedProduct} />
) : (
<Text style={styles.placeholder}>Please Select a Product</Text>
)}
</View>
<View style={{ flex: 1, }}>
<ScrollView>
<View style={styles.inputFields}>
<View style={styles.inputFieldWrapper}>
<HelpfulMeasurementUnitInput
label="Length"
svgUri="/assets/images/icons/carpet-roll-length-raw.svg"
onUnitSet={setUnits}
onValueSet={setWidth}
defaultValue={width}
defaultUnit={units}
unitChoices={["ft", "in"]}
/>
</View>
<View style={styles.inputFieldWrapper}>
<HelpfulMeasurementUnitInput
label="Inner diameter"
svgUri="/assets/images/icons/carpet-roll-length-inner-diameter-raw.svg"
onUnitSet={(u) => setInnerDiameter({ ...innerDiameter, u })}
defaultValue={innerDiameter.l}
defaultUnit={innerDiameter.u}
unitChoices={["ft", "in"]}
onValueSet={(l) => setInnerDiameter({ ...innerDiameter, l })}
/>
</View>
<View style={styles.inputFieldWrapper}>
<HelpfulMeasurementUnitInput
label="Outer diameter"
svgUri="/assets/images/icons/carpet-roll-length-outer-diameter-raw.svg"
onUnitSet={(u) => setOuterDiameter({ ...outerDiameter, u })}
defaultValue={innerDiameter.l}
defaultUnit={innerDiameter.u}
unitChoices={["ft", "in"]}
onValueSet={(l) => setOuterDiameter({ ...outerDiameter, l })}
/>
</View>
<View style={styles.inputFieldWrapper}>
<HelpfulMeasurementUnitInput
label="Number of rings"
svgUri="/assets/images/icons/carpet-roll-length-number-of-rings-raw.svg"
defaultValue={0}
onValueSet={setNumRings}
/>
</View>
</View>
<View style={styles.container}>
<ProductList
onProductSelected={setSelectedProduct}
productType="area_rug"
<SafeAreaView style={styles.container}>
<View style={styles.placeholder}>
{selectedProduct ? (
<AreaRugTag dimensions={rugDimensions} product={selectedProduct} />
) : (
<Text style={styles.placeholderText}>Please Select a Product</Text>
)}
</View>
<ScrollView style={styles.scrollView}>
<View>
<View style={styles.inputFieldWrapper}>
<HelpfulMeasurementUnitInput
label="Length"
svgUri="/assets/images/icons/carpet-roll-length-raw.svg"
onUnitSet={setUnits}
onValueSet={setWidth}
defaultValue={width}
defaultUnit={units}
unitChoices={["ft", "in"]}
/>
</View>
</ScrollView>
</View>
</View>
<View style={styles.inputFieldWrapper}>
<HelpfulMeasurementUnitInput
label="Inner diameter"
svgUri="/assets/images/icons/carpet-roll-length-inner-diameter-raw.svg"
onUnitSet={(u) => setInnerDiameter({ ...innerDiameter, u })}
defaultValue={innerDiameter.l}
defaultUnit={innerDiameter.u}
unitChoices={["ft", "in"]}
onValueSet={(l) => setInnerDiameter({ ...innerDiameter, l })}
/>
</View>
<View style={styles.inputFieldWrapper}>
<HelpfulMeasurementUnitInput
label="Outer diameter"
svgUri="/assets/images/icons/carpet-roll-length-outer-diameter-raw.svg"
onUnitSet={(u) => setOuterDiameter({ ...outerDiameter, u })}
defaultValue={innerDiameter.l}
defaultUnit={innerDiameter.u}
unitChoices={["ft", "in"]}
onValueSet={(l) => setOuterDiameter({ ...outerDiameter, l })}
/>
</View>
<View style={styles.inputFieldWrapper}>
<HelpfulMeasurementUnitInput
label="Number of rings"
svgUri="/assets/images/icons/carpet-roll-length-number-of-rings-raw.svg"
defaultValue={0}
onValueSet={setNumRings}
/>
</View>
</View>
<View>
<ProductList
onProductSelected={setSelectedProduct}
productType="area_rug"
/>
</View>
</ScrollView>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
container: {
flexGrow: 1,
flex: 1,
paddingTop: StatusBar.currentHeight,
},
scrollView: {
marginHorizontal: 20,
height: windowDimensions.height - 50,
},
placeholder: {
alignContent: "center",
alignSelf: "center",
paddingTop: 50,
paddingBottom: 50,
height: 300,
paddingTop: 40,
paddingBottom: 40,
fontSize: 30,
position: "static",
},
placeholderText: {
fontSize: 30,
paddingVertical: 70,
},
inputFieldWrapper: {
padding: 10,
// padding: 10,
},
inputFields: {},
label: {

View File

@ -5,13 +5,12 @@ import { View, Text, StyleSheet } from "react-native";
import { SafeAreaView } from "react-native-safe-area-context";
import PriceDisplay from "./Price";
import { AreaInput } from "./AreaInput";
import { MeasurementInput } from "./MeasurementInput";
import ProductList from "./ProductList";
import UnitChooser from "./UnitChooser";
import convert, { Length } from "convert";
import PercentDamage from "./PercentDamange";
import MeasurementUnitInput from "./MeasurementUnitInput";
export default function ProductCalculatorSelector() {
const [activeProduct, setActiveProduct] = useState(null as Product | null);
const [price, setPrice] = useState(0);

View File

@ -1,10 +1,12 @@
import { ScrollView, StyleSheet } from "react-native";
import { Dimensions, ScrollView, StyleSheet } from "react-native";
import { ProductTile } from "./ProductTile";
import { Product, product_type_t } from "@/lib/product";
import { useState } from "react";
import { selectProducts } from "@/features/product/productSlice";
import { useAppSelector } from "@/app/store";
const windowDimensions = Dimensions.get('window');
export type ProductSelectionProps = {
onProductSelected?: (product: Product) => any;
productType?: product_type_t;
@ -28,7 +30,7 @@ export default function ProductList({
}
return (
<ScrollView scrollToOverflowEnabled={true} aria-label="product list">
<ScrollView style={styles.productSelectorFlatList} contentContainerStyle={styles.content} aria-label="product list">
{products.map((product) => {
return (
<ProductTile
@ -47,5 +49,12 @@ const styles = StyleSheet.create({
productSelectorFlatList: {
padding: 10,
margin: 10,
height: windowDimensions.height - 200,
width: windowDimensions.width,
},
content: {
alignItems: "flex-start",
flexWrap: "wrap",
flexDirection: "row",
}
});

View File

@ -1,58 +1,84 @@
import { Product, priceDisplay, pricePerUnitDisplay } from "@/lib/product"
import { ImageBackground, StyleProp, StyleSheet, Text, TouchableHighlight, View, ViewStyle } from "react-native";
import { Product, priceDisplay, pricePerUnitDisplay } from "@/lib/product";
import { LinearGradient } from "expo-linear-gradient";
import {
ImageBackground,
Pressable,
StyleProp,
StyleSheet,
Text,
TouchableHighlight,
View,
ViewStyle,
} from "react-native";
import { AnimatedStyle } from "react-native-reanimated";
export type OnProductSelectedFunc = (product : Product) => any;
export type OnProductSelectedFunc = (product: Product) => any;
type MyStyle = StyleProp<AnimatedStyle<StyleProp<ViewStyle>>>;
type StyleSpec = {
highlight?: MyStyle,
text?: MyStyle,
image?: MyStyle,
}
highlight?: MyStyle;
text?: MyStyle;
image?: MyStyle;
};
export type ProductTileProps = {
product: (Product),
onProductSelected?: OnProductSelectedFunc,
isActive: boolean,
}
product: Product;
onProductSelected?: OnProductSelectedFunc;
isActive: boolean;
};
const FALLBACK_IMAGE = "";
export function ProductTile ({product, onProductSelected, isActive} : ProductTileProps) {
const k = isActive ? "active" : "default";
export function ProductTile({
product,
onProductSelected,
isActive,
}: ProductTileProps) {
const k = isActive ? "active" : "default";
const priceDisplay = pricePerUnitDisplay(product);
return (
const BLUE_HILIGHT = "#caceff";
const BLUE = "#8b9cff";
const GRAY_HILIGHT = "#ffffff";
const GRAY = "#b1b1b1";
<TouchableHighlight
aria-label={`product ${product.id}`}
style={styles[k].highlight}
onPress={() => onProductSelected && onProductSelected(product)}>
<Text style={styles[k].text}>{product.attributes?.name || `Product ${product.id}`} ({priceDisplay})</Text>
</TouchableHighlight>
);
const activeColors = [BLUE_HILIGHT, BLUE, BLUE, BLUE];
const inactiveColors = [GRAY_HILIGHT, GRAY, GRAY, GRAY];
const priceDisplay = pricePerUnitDisplay(product);
return (
<LinearGradient
colors={isActive ? activeColors : inactiveColors}
style={styles.gradientButton}
>
<Pressable
style={styles.button}
aria-label={`product ${product.id}`}
onPress={() => onProductSelected && onProductSelected(product)}
>
<Text style={styles.text}>
{product.attributes?.name || `Product ${product.id}`} ({priceDisplay})
</Text>
</Pressable>
</LinearGradient>
);
}
const styles = {
active: StyleSheet.create({
highlight: {
padding: 10,
margin: 2,
color: "lightblue",
},
text: {
}
}),
default: StyleSheet.create({
highlight: {
padding: 10,
margin: 2,
backgroundColor: "lightgrey",
},
text: {
}
}),
}
const styles = StyleSheet.create({
gradientButton: {
borderRadius: 10,
borderWidth: 1,
borderColor: "gray",
borderStyle: "solid",
margin: 1,
width: 300,
marginVertical: 10,
marginHorizontal: 10,
},
button: {
},
text: {
paddingVertical: 30,
paddingHorizontal: 40,
}
});

View File

@ -38,8 +38,13 @@ export default function UnitChooser({
onUnitSet && onUnitSet(choice);
}
const activeColors = ['#a7caff', '#5588ff', '#5588ff', '#5588ff'];
const inactiveColors = ['#d0d0d0', '#828282', '#828282', '#828282'];
const BLUE_HILIGHT = "#caceff";
const BLUE = "#8b9cff";
const GRAY_HILIGHT = "#ffffff";
const GRAY = "#b1b1b1";
const activeColors = [BLUE_HILIGHT, BLUE, BLUE, BLUE];
const inactiveColors = [GRAY_HILIGHT, GRAY, GRAY, GRAY];
return (
<View style={styles.unitChooser}>
@ -49,7 +54,7 @@ export default function UnitChooser({
colors={ci === value ? activeColors : inactiveColors}
style={styles.gradientButton}
>
<TouchableHighlight style={{padding: 5, borderRadius: 5, }} onPress={() => doChoiceClicked(ci)} key={ci}>
<TouchableHighlight style={{padding: 5, }} onPress={() => doChoiceClicked(ci)} key={ci}>
<Text style={{padding: 5, fontSize: 16}}>{ci}</Text>
</TouchableHighlight>
</LinearGradient>
@ -60,7 +65,13 @@ export default function UnitChooser({
}
const styles = StyleSheet.create({
gradientButton: {},
gradientButton: {
borderRadius: 10,
borderWidth: 1,
borderColor: "gray",
borderStyle: "solid",
margin: 1,
},
unitChooser: {
flexDirection: "row",
verticalAlign: "middle",

View File

@ -25,14 +25,14 @@
"class-transformer": "^0.5.1",
"convert": "^5.3.0",
"dayjs": "^1.11.12",
"expo": "~51.0.26",
"expo": "~51.0.28",
"expo-asset": "^10.0.10",
"expo-constants": "~16.0.2",
"expo-doctor": "^1.9.0",
"expo-font": "~12.0.9",
"expo-linear-gradient": "^13.0.2",
"expo-linking": "~6.3.1",
"expo-router": "~3.5.21",
"expo-router": "~3.5.23",
"expo-splash-screen": "~0.27.5",
"expo-status-bar": "~1.12.1",
"expo-system-ui": "~3.0.7",
@ -61,7 +61,7 @@
"@types/jest": "^29.5.12",
"@types/react": "~18.2.79",
"@types/react-test-renderer": "^18.3.0",
"babel-preset-expo": "^11.0.13",
"babel-preset-expo": "^11.0.14",
"jest": "^29.7.0",
"jest-expo": "~51.0.3",
"react-native-svg-transformer": "^1.5.0",

324
pnpm-lock.yaml generated
View File

@ -13,7 +13,7 @@ dependencies:
version: 8.0.8
'@expo/prebuild-config':
specifier: ~7.0.8
version: 7.0.8(expo-modules-autolinking@1.11.1)
version: 7.0.8(expo-modules-autolinking@1.11.2)
'@expo/vector-icons':
specifier: ^14.0.2
version: 14.0.2
@ -42,41 +42,41 @@ dependencies:
specifier: ^1.11.12
version: 1.11.12
expo:
specifier: ~51.0.26
version: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
specifier: ~51.0.28
version: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo-asset:
specifier: ^10.0.10
version: 10.0.10(expo@51.0.26)
version: 10.0.10(expo@51.0.28)
expo-constants:
specifier: ~16.0.2
version: 16.0.2(expo@51.0.26)
version: 16.0.2(expo@51.0.28)
expo-doctor:
specifier: ^1.9.0
version: 1.9.0
expo-font:
specifier: ~12.0.9
version: 12.0.9(expo@51.0.26)
version: 12.0.9(expo@51.0.28)
expo-linear-gradient:
specifier: ^13.0.2
version: 13.0.2(expo@51.0.26)
version: 13.0.2(expo@51.0.28)
expo-linking:
specifier: ~6.3.1
version: 6.3.1(expo@51.0.26)
version: 6.3.1(expo@51.0.28)
expo-router:
specifier: ~3.5.21
version: 3.5.21(expo-constants@16.0.2)(expo-linking@6.3.1)(expo-modules-autolinking@1.11.1)(expo-status-bar@1.12.1)(expo@51.0.26)(react-native-reanimated@3.10.1)(react-native-safe-area-context@4.10.1)(react-native-screens@3.31.1)(react-native@0.74.3)(react@18.2.0)(typescript@5.3.3)
specifier: ~3.5.23
version: 3.5.23(expo-constants@16.0.2)(expo-linking@6.3.1)(expo-modules-autolinking@1.11.2)(expo-status-bar@1.12.1)(expo@51.0.28)(react-native-reanimated@3.10.1)(react-native-safe-area-context@4.10.1)(react-native-screens@3.31.1)(react-native@0.74.3)(react@18.2.0)(typescript@5.3.3)
expo-splash-screen:
specifier: ~0.27.5
version: 0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26)
version: 0.27.5(expo-modules-autolinking@1.11.2)(expo@51.0.28)
expo-status-bar:
specifier: ~1.12.1
version: 1.12.1
expo-system-ui:
specifier: ~3.0.7
version: 3.0.7(expo@51.0.26)
version: 3.0.7(expo@51.0.28)
expo-web-browser:
specifier: ~13.0.3
version: 13.0.3(expo@51.0.26)
version: 13.0.3(expo@51.0.28)
react:
specifier: 18.2.0
version: 18.2.0
@ -146,8 +146,8 @@ devDependencies:
specifier: ^18.3.0
version: 18.3.0
babel-preset-expo:
specifier: ^11.0.13
version: 11.0.13(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
specifier: ^11.0.14
version: 11.0.14(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
jest:
specifier: ^29.7.0
version: 29.7.0
@ -211,6 +211,15 @@ packages:
transitivePeerDependencies:
- supports-color
/@babel/generator@7.2.0:
resolution: {integrity: sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==, tarball: https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz}
dependencies:
'@babel/types': 7.25.2
jsesc: 2.5.2
lodash: 4.17.21
source-map: 0.5.7
trim-right: 1.0.1
/@babel/generator@7.25.0:
resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==, tarball: https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz}
engines: {node: '>=6.9.0'}
@ -1654,13 +1663,13 @@ packages:
/@expo/bunyan@4.0.1:
resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==, tarball: https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.1.tgz}
engines: {'0': node >=0.10.0}
engines: {node: '>=0.10.0'}
dependencies:
uuid: 8.3.2
dev: false
/@expo/cli@0.18.28(expo-modules-autolinking@1.11.1):
resolution: {integrity: sha512-fvbVPId6s6etindzP6Nzos/CS1NurMVy4JKozjebArHr63tBid5i/UY5Pp+4wTCAM20gB2SjRdwcwoL6HFC4Iw==, tarball: https://registry.npmjs.org/@expo/cli/-/cli-0.18.28.tgz}
/@expo/cli@0.18.29(expo-modules-autolinking@1.11.2):
resolution: {integrity: sha512-X810C48Ss+67RdZU39YEO1khNYo1RmjouRV+vVe0QhMoTe8R6OA3t+XYEdwaNbJ5p/DJN7szfHfNmX2glpC7xg==, tarball: https://registry.npmjs.org/@expo/cli/-/cli-0.18.29.tgz}
hasBin: true
dependencies:
'@babel/runtime': 7.25.0
@ -1675,7 +1684,7 @@ packages:
'@expo/osascript': 2.1.3
'@expo/package-manager': 1.5.2
'@expo/plist': 0.1.3
'@expo/prebuild-config': 7.0.8(expo-modules-autolinking@1.11.1)
'@expo/prebuild-config': 7.0.8(expo-modules-autolinking@1.11.2)
'@expo/rudder-sdk-node': 1.1.1
'@expo/spawn-async': 1.7.2
'@expo/xcpretty': 4.3.1
@ -1876,8 +1885,8 @@ packages:
- supports-color
dev: false
/@expo/metro-runtime@3.2.1(react-native@0.74.3):
resolution: {integrity: sha512-L7xNo5SmK+rcuXDm/+VBBImpA7FZsVB+m/rNr3fNl5or+1+yrZe99ViF7LZ8DOoVqAqcb4aCAXvGrP2JNYo1/Q==, tarball: https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-3.2.1.tgz}
/@expo/metro-runtime@3.2.3(react-native@0.74.3):
resolution: {integrity: sha512-v5ji+fAGi7B9YavrxvekuF8gXEV/5fz0+PhaED5AaFDnbGB4IJIbpaiqK9nqZV1axjGZNQSw6Q8TsnFetCR3bQ==, tarball: https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-3.2.3.tgz}
peerDependencies:
react-native: '*'
dependencies:
@ -1916,7 +1925,7 @@ packages:
base64-js: 1.5.1
xmlbuilder: 14.0.0
/@expo/prebuild-config@7.0.6(expo-modules-autolinking@1.11.1):
/@expo/prebuild-config@7.0.6(expo-modules-autolinking@1.11.2):
resolution: {integrity: sha512-Hts+iGBaG6OQ+N8IEMMgwQElzJeSTb7iUJ26xADEHkaexsucAK+V52dM8M4ceicvbZR9q8M+ebJEGj0MCNA3dQ==, tarball: https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.6.tgz}
peerDependencies:
expo-modules-autolinking: '>=0.8.1'
@ -1928,7 +1937,7 @@ packages:
'@expo/json-file': 8.3.3
'@react-native/normalize-colors': 0.74.84
debug: 4.3.6
expo-modules-autolinking: 1.11.1
expo-modules-autolinking: 1.11.2
fs-extra: 9.1.0
resolve-from: 5.0.0
semver: 7.6.3
@ -1938,7 +1947,7 @@ packages:
- supports-color
dev: false
/@expo/prebuild-config@7.0.8(expo-modules-autolinking@1.11.1):
/@expo/prebuild-config@7.0.8(expo-modules-autolinking@1.11.2):
resolution: {integrity: sha512-wH9NVg6HiwF5y9x0TxiMEeBF+ITPGDXy5/i6OUheSrKpPgb0lF1Mwzl/f2fLPXBEpl+ZXOQ8LlLW32b7K9lrNg==, tarball: https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-7.0.8.tgz}
peerDependencies:
expo-modules-autolinking: '>=0.8.1'
@ -1950,7 +1959,7 @@ packages:
'@expo/json-file': 8.3.3
'@react-native/normalize-colors': 0.74.85
debug: 4.3.6
expo-modules-autolinking: 1.11.1
expo-modules-autolinking: 1.11.2
fs-extra: 9.1.0
resolve-from: 5.0.0
semver: 7.6.3
@ -1981,7 +1990,7 @@ packages:
/@expo/server@0.4.4(typescript@5.3.3):
resolution: {integrity: sha512-q9ADBzMN5rZ/fgQ2mz5YIJuZ8gelQlhG2CQqToD+UvBLZvbaHCNxTTSs2KI1LzJvAaW5CWgWMatGvGF6iUQ0LA==, tarball: https://registry.npmjs.org/@expo/server/-/server-0.4.4.tgz}
dependencies:
'@remix-run/node': 2.11.1(typescript@5.3.3)
'@remix-run/node': 2.11.2(typescript@5.3.3)
abort-controller: 3.0.0
debug: 4.3.6
source-map-support: 0.5.21
@ -2066,7 +2075,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@ -2087,14 +2096,14 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@22.2.0)
jest-config: 29.7.0(@types/node@22.3.0)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@ -2128,7 +2137,7 @@ packages:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
jest-mock: 29.7.0
/@jest/expect-utils@29.7.0:
@ -2154,7 +2163,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
'@types/node': 22.2.0
'@types/node': 22.3.0
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@ -2186,7 +2195,7 @@ packages:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25
'@types/node': 22.2.0
'@types/node': 22.3.0
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@ -2266,13 +2275,21 @@ packages:
- supports-color
dev: true
/@jest/types@24.9.0:
resolution: {integrity: sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==, tarball: https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz}
engines: {node: '>= 6'}
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 1.1.2
'@types/yargs': 13.0.12
/@jest/types@26.6.2:
resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==, tarball: https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz}
engines: {node: '>= 10.14.2'}
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 22.2.0
'@types/node': 22.3.0
'@types/yargs': 15.0.19
chalk: 4.1.2
@ -2283,7 +2300,7 @@ packages:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 22.2.0
'@types/node': 22.3.0
'@types/yargs': 17.0.33
chalk: 4.1.2
@ -2915,8 +2932,8 @@ packages:
reselect: 5.1.1
dev: false
/@remix-run/node@2.11.1(typescript@5.3.3):
resolution: {integrity: sha512-KCQPLSd5Y3OLCoJUQxxTGswALL1gZ+OgL3bf2ap6kITIp1AUZz3T4jqCNVVyWllVAU9gpCtrONaI+SiWf+8b2w==, tarball: https://registry.npmjs.org/@remix-run/node/-/node-2.11.1.tgz}
/@remix-run/node@2.11.2(typescript@5.3.3):
resolution: {integrity: sha512-gRNFM61EOYWNmYgf+pvBt6MrirWlkDz1G6RQsJNowtRqbYoy05AdDe5HiHGF5w8ZMAZVeXnZiwbL0Nt7ykYBCA==, tarball: https://registry.npmjs.org/@remix-run/node/-/node-2.11.2.tgz}
engines: {node: '>=18.0.0'}
peerDependencies:
typescript: ^5.1.0
@ -2924,7 +2941,7 @@ packages:
typescript:
optional: true
dependencies:
'@remix-run/server-runtime': 2.11.1(typescript@5.3.3)
'@remix-run/server-runtime': 2.11.2(typescript@5.3.3)
'@remix-run/web-fetch': 4.4.2
'@web3-storage/multipart-parser': 1.0.0
cookie-signature: 1.2.1
@ -2934,13 +2951,13 @@ packages:
undici: 6.19.7
dev: false
/@remix-run/router@1.19.0:
resolution: {integrity: sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==, tarball: https://registry.npmjs.org/@remix-run/router/-/router-1.19.0.tgz}
/@remix-run/router@1.19.1:
resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==, tarball: https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz}
engines: {node: '>=14.0.0'}
dev: false
/@remix-run/server-runtime@2.11.1(typescript@5.3.3):
resolution: {integrity: sha512-j3AlrZul0javvPR6ZWdN32/l12t1E90sLeZI/k+4HpT0ifjqJVg8uG6alRJ0LLN9ae5BERYEslUebUqdfejSkQ==, tarball: https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.11.1.tgz}
/@remix-run/server-runtime@2.11.2(typescript@5.3.3):
resolution: {integrity: sha512-abG6ENj0X3eHqDxqO2thWM2NSEiPnqyt58z1BbiQCv+t8g0Zuqd5QHbB4wzdNvfS0vKhg+jJiigcJneAc4sZzw==, tarball: https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.11.2.tgz}
engines: {node: '>=18.0.0'}
peerDependencies:
typescript: ^5.1.0
@ -2948,13 +2965,13 @@ packages:
typescript:
optional: true
dependencies:
'@remix-run/router': 1.19.0
'@remix-run/router': 1.19.1
'@types/cookie': 0.6.0
'@web3-storage/multipart-parser': 1.0.0
cookie: 0.6.0
set-cookie-parser: 2.7.0
source-map: 0.7.4
turbo-stream: 2.2.0
turbo-stream: 2.3.0
typescript: 5.3.3
dev: false
@ -3274,7 +3291,7 @@ packages:
/@types/graceful-fs@4.1.9:
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==, tarball: https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz}
dependencies:
'@types/node': 22.2.0
'@types/node': 22.3.0
dev: true
/@types/hammerjs@2.0.45:
@ -3289,6 +3306,12 @@ packages:
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
/@types/istanbul-reports@1.1.2:
resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==, tarball: https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz}
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-lib-report': 3.0.3
/@types/istanbul-reports@3.0.4:
resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, tarball: https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz}
dependencies:
@ -3304,7 +3327,7 @@ packages:
/@types/jsdom@20.0.1:
resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==, tarball: https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz}
dependencies:
'@types/node': 22.2.0
'@types/node': 22.3.0
'@types/tough-cookie': 4.0.5
parse5: 7.1.2
dev: true
@ -3316,17 +3339,17 @@ packages:
/@types/node-forge@1.3.11:
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==, tarball: https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz}
dependencies:
'@types/node': 22.2.0
'@types/node': 22.3.0
/@types/node@18.19.44:
resolution: {integrity: sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==, tarball: https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz}
dependencies:
undici-types: 5.26.5
/@types/node@22.2.0:
resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==, tarball: https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz}
/@types/node@22.3.0:
resolution: {integrity: sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g==, tarball: https://registry.npmjs.org/@types/node/-/node-22.3.0.tgz}
dependencies:
undici-types: 6.13.0
undici-types: 6.18.2
/@types/prop-types@15.7.12:
resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==, tarball: https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz}
@ -3357,6 +3380,11 @@ packages:
/@types/yargs-parser@21.0.3:
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, tarball: https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz}
/@types/yargs@13.0.12:
resolution: {integrity: sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==, tarball: https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz}
dependencies:
'@types/yargs-parser': 21.0.3
/@types/yargs@15.0.19:
resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==, tarball: https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz}
dependencies:
@ -3715,8 +3743,16 @@ packages:
transitivePeerDependencies:
- supports-color
/babel-plugin-react-compiler@0.0.0:
resolution: {integrity: sha512-Kigl0V36a/6hLVH7+CCe1CCtU3mFBqBd829V//VtuG7I/pyq+B2QZJqOefd63snQmdfCryNhO9XW1FbGPBvYDA==, tarball: https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0.tgz}
/babel-plugin-react-compiler@0.0.0-experimental-5f79ba2-20240815:
resolution: {integrity: sha512-9/pMj32tpmzWyjnPmRqQ25L9MJkffqVPEsoboHaSKypnaB/Xo8haWk54T5WhRf/WfE0kB36w2Nm/STkAHGXJWw==, tarball: https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-0.0.0-experimental-5f79ba2-20240815.tgz}
dependencies:
'@babel/generator': 7.2.0
'@babel/types': 7.25.2
chalk: 4.1.2
invariant: 2.2.4
pretty-format: 24.9.0
zod: 3.23.8
zod-validation-error: 2.1.0(zod@3.23.8)
/babel-plugin-react-native-web@0.19.12:
resolution: {integrity: sha512-eYZ4+P6jNcB37lObWIg0pUbi7+3PKoU1Oie2j0C8UF3cXyXoR74tO2NBjI/FORb2LJyItJZEAmjU5pSaJYEL1w==, tarball: https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.12.tgz}
@ -3728,8 +3764,8 @@ packages:
transitivePeerDependencies:
- '@babel/core'
/babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.2):
resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==, tarball: https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz}
/babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2):
resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==, tarball: https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
@ -3737,6 +3773,8 @@ packages:
'@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2)
'@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2)
'@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2)
'@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2)
'@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2)
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2)
'@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2)
'@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2)
@ -3745,11 +3783,12 @@ packages:
'@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2)
'@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2)
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2)
'@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2)
dev: true
/babel-preset-expo@11.0.13(@babel/core@7.25.2)(@babel/preset-env@7.25.3):
resolution: {integrity: sha512-5oUXyxnIVyDUhG4a306PpT2c9HhKx0tG4LXjpSIA/dERzwGvU8LUxDSD6yCohhRSsPZIoR7u2mnH0PypqFqYnQ==, tarball: https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.13.tgz}
/babel-preset-expo@11.0.14(@babel/core@7.25.2)(@babel/preset-env@7.25.3):
resolution: {integrity: sha512-4BVYR0Sc2sSNxYTiE/OLSnPiOp+weFNy8eV+hX3aD6YAIbBnw+VubKRWqJV/sOJauzOLz0SgYAYyFciYMqizRA==, tarball: https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-11.0.14.tgz}
dependencies:
'@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2)
'@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2)
@ -3758,7 +3797,7 @@ packages:
'@babel/preset-react': 7.24.7(@babel/core@7.25.2)
'@babel/preset-typescript': 7.24.7(@babel/core@7.25.2)
'@react-native/babel-preset': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
babel-plugin-react-compiler: 0.0.0
babel-plugin-react-compiler: 0.0.0-experimental-5f79ba2-20240815
babel-plugin-react-native-web: 0.19.12
react-refresh: 0.14.2
transitivePeerDependencies:
@ -3774,7 +3813,7 @@ packages:
dependencies:
'@babel/core': 7.25.2
babel-plugin-jest-hoist: 29.6.3
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2)
babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2)
dev: true
/balanced-match@1.0.2:
@ -3852,7 +3891,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001651
electron-to-chromium: 1.5.6
electron-to-chromium: 1.5.8
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
@ -4001,7 +4040,7 @@ packages:
engines: {node: '>=12.13.0'}
hasBin: true
dependencies:
'@types/node': 22.2.0
'@types/node': 22.3.0
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@ -4245,7 +4284,7 @@ packages:
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@22.2.0)
jest-config: 29.7.0(@types/node@22.3.0)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@ -4628,8 +4667,8 @@ packages:
/ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, tarball: https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz}
/electron-to-chromium@1.5.6:
resolution: {integrity: sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==, tarball: https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz}
/electron-to-chromium@1.5.8:
resolution: {integrity: sha512-4Nx0gP2tPNBLTrFxBMHpkQbtn2hidPVr/+/FTtcCiBYTucqc70zRyVZiOLj17Ui3wTO7SQ1/N+hkHYzJjBzt6A==, tarball: https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.8.tgz}
/emittery@0.13.1:
resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, tarball: https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz}
@ -4877,27 +4916,27 @@ packages:
jest-util: 29.7.0
dev: true
/expo-asset@10.0.10(expo@51.0.26):
/expo-asset@10.0.10(expo@51.0.28):
resolution: {integrity: sha512-0qoTIihB79k+wGus9wy0JMKq7DdenziVx3iUkGvMAy2azscSgWH6bd2gJ9CGnhC6JRd3qTMFBL0ou/fx7WZl7A==, tarball: https://registry.npmjs.org/expo-asset/-/expo-asset-10.0.10.tgz}
peerDependencies:
expo: '*'
dependencies:
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo-constants: 16.0.2(expo@51.0.26)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo-constants: 16.0.2(expo@51.0.28)
invariant: 2.2.4
md5-file: 3.2.3
transitivePeerDependencies:
- supports-color
dev: false
/expo-constants@16.0.2(expo@51.0.26):
/expo-constants@16.0.2(expo@51.0.28):
resolution: {integrity: sha512-9tNY3OVO0jfiMzl7ngb6IOyR5VFzNoN5OOazUWoeGfmMqVB5kltTemRvKraK9JRbBKIw+SOYLEmF0sEqgFZ6OQ==, tarball: https://registry.npmjs.org/expo-constants/-/expo-constants-16.0.2.tgz}
peerDependencies:
expo: '*'
dependencies:
'@expo/config': 9.0.3
'@expo/env': 0.3.0
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
transitivePeerDependencies:
- supports-color
dev: false
@ -4907,51 +4946,51 @@ packages:
hasBin: true
dev: false
/expo-file-system@17.0.1(expo@51.0.26):
/expo-file-system@17.0.1(expo@51.0.28):
resolution: {integrity: sha512-dYpnZJqTGj6HCYJyXAgpFkQWsiCH3HY1ek2cFZVHFoEc5tLz9gmdEgTF6nFHurvmvfmXqxi7a5CXyVm0aFYJBw==, tarball: https://registry.npmjs.org/expo-file-system/-/expo-file-system-17.0.1.tgz}
peerDependencies:
expo: '*'
dependencies:
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
dev: false
/expo-font@12.0.9(expo@51.0.26):
/expo-font@12.0.9(expo@51.0.28):
resolution: {integrity: sha512-seTCyf0tbgkAnp3ZI9ZfK9QVtURQUgFnuj+GuJ5TSnN0XsOtVe1s2RxTvmMgkfuvfkzcjJ69gyRpsZS1cC8hjw==, tarball: https://registry.npmjs.org/expo-font/-/expo-font-12.0.9.tgz}
peerDependencies:
expo: '*'
dependencies:
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
fontfaceobserver: 2.3.0
dev: false
/expo-keep-awake@13.0.2(expo@51.0.26):
/expo-keep-awake@13.0.2(expo@51.0.28):
resolution: {integrity: sha512-kKiwkVg/bY0AJ5q1Pxnm/GvpeB6hbNJhcFsoOWDh2NlpibhCLaHL826KHUM+WsnJRbVRxJ+K9vbPRHEMvFpVyw==, tarball: https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-13.0.2.tgz}
peerDependencies:
expo: '*'
dependencies:
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
dev: false
/expo-linear-gradient@13.0.2(expo@51.0.26):
/expo-linear-gradient@13.0.2(expo@51.0.28):
resolution: {integrity: sha512-EDcILUjRKu4P1rtWcwciN6CSyGtH7Bq4ll3oTRV7h3h8oSzSilH1g6z7kTAMlacPBKvMnkkWOGzW6KtgMKEiTg==, tarball: https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-13.0.2.tgz}
peerDependencies:
expo: '*'
dependencies:
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
dev: false
/expo-linking@6.3.1(expo@51.0.26):
/expo-linking@6.3.1(expo@51.0.28):
resolution: {integrity: sha512-xuZCntSBGWCD/95iZ+mTUGTwHdy8Sx+immCqbUBxdvZ2TN61P02kKg7SaLS8A4a/hLrSCwrg5tMMwu5wfKr35g==, tarball: https://registry.npmjs.org/expo-linking/-/expo-linking-6.3.1.tgz}
dependencies:
expo-constants: 16.0.2(expo@51.0.26)
expo-constants: 16.0.2(expo@51.0.28)
invariant: 2.2.4
transitivePeerDependencies:
- expo
- supports-color
dev: false
/expo-modules-autolinking@1.11.1:
resolution: {integrity: sha512-2dy3lTz76adOl7QUvbreMCrXyzUiF8lygI7iFJLjgIQIVH+43KnFWE5zBumpPbkiaq0f0uaFpN9U0RGQbnKiMw==, tarball: https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.11.1.tgz}
/expo-modules-autolinking@1.11.2:
resolution: {integrity: sha512-fdcaNO8ucHA3yLNY52ZUENBcAG7KEx8QyMmnVNavO1JVBGRMZG8JyVcbrhYQDtVtpxkbai5YzwvLutINvbDZDQ==, tarball: https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.11.2.tgz}
hasBin: true
dependencies:
chalk: 4.1.2
@ -4959,16 +4998,18 @@ packages:
fast-glob: 3.3.2
find-up: 5.0.0
fs-extra: 9.1.0
require-from-string: 2.0.2
resolve-from: 5.0.0
dev: false
/expo-modules-core@1.12.20:
resolution: {integrity: sha512-CCXjlgT8lDAufgt912P1W7TwD+KAylfIttc1Doh1a0hAfkdkUsDRmrgthnYrrxEo2ECVpbaB71Epp1bnZ1rRrA==, tarball: https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.12.20.tgz}
/expo-modules-core@1.12.21:
resolution: {integrity: sha512-UQxRljqPcowS1+bECW9tnuVGfvWL18GAKPiKMnu9sZwJssAN9FU/JhED50DJzdzICLR0hL17FZAgV4rbMG3IWQ==, tarball: https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.12.21.tgz}
dependencies:
invariant: 2.2.4
dev: false
/expo-router@3.5.21(expo-constants@16.0.2)(expo-linking@6.3.1)(expo-modules-autolinking@1.11.1)(expo-status-bar@1.12.1)(expo@51.0.26)(react-native-reanimated@3.10.1)(react-native-safe-area-context@4.10.1)(react-native-screens@3.31.1)(react-native@0.74.3)(react@18.2.0)(typescript@5.3.3):
resolution: {integrity: sha512-0rqt1ViwZ+a+obODGX1e7krRlRwhxwTHdMdhfpWU9rCLm9B4sr5k77LBAd8V7MRS7FGGZBA93CgYxKfpO/arng==, tarball: https://registry.npmjs.org/expo-router/-/expo-router-3.5.21.tgz}
/expo-router@3.5.23(expo-constants@16.0.2)(expo-linking@6.3.1)(expo-modules-autolinking@1.11.2)(expo-status-bar@1.12.1)(expo@51.0.28)(react-native-reanimated@3.10.1)(react-native-safe-area-context@4.10.1)(react-native-screens@3.31.1)(react-native@0.74.3)(react@18.2.0)(typescript@5.3.3):
resolution: {integrity: sha512-Re2kYcxov67hWrcjuu0+3ovsLxYn79PuX6hgtYN20MgigY5ttX79KOIBEVGTO3F3y9dxSrGHyy5Z14BcO+usGQ==, tarball: https://registry.npmjs.org/expo-router/-/expo-router-3.5.23.tgz}
peerDependencies:
'@react-navigation/drawer': ^6.5.8
'@testing-library/jest-native': '*'
@ -4987,16 +5028,16 @@ packages:
react-native-reanimated:
optional: true
dependencies:
'@expo/metro-runtime': 3.2.1(react-native@0.74.3)
'@expo/metro-runtime': 3.2.3(react-native@0.74.3)
'@expo/server': 0.4.4(typescript@5.3.3)
'@radix-ui/react-slot': 1.0.1(react@18.2.0)
'@react-navigation/bottom-tabs': 6.5.20(@react-navigation/native@6.1.18)(react-native-safe-area-context@4.10.1)(react-native-screens@3.31.1)(react-native@0.74.3)(react@18.2.0)
'@react-navigation/native': 6.1.18(react-native@0.74.3)(react@18.2.0)
'@react-navigation/native-stack': 6.9.26(@react-navigation/native@6.1.18)(react-native-safe-area-context@4.10.1)(react-native-screens@3.31.1)(react-native@0.74.3)(react@18.2.0)
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo-constants: 16.0.2(expo@51.0.26)
expo-linking: 6.3.1(expo@51.0.26)
expo-splash-screen: 0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo-constants: 16.0.2(expo@51.0.28)
expo-linking: 6.3.1(expo@51.0.28)
expo-splash-screen: 0.27.5(expo-modules-autolinking@1.11.2)(expo@51.0.28)
expo-status-bar: 1.12.1
react-native-helmet-async: 2.0.4(react@18.2.0)
react-native-reanimated: 3.10.1(@babel/core@7.25.2)(react-native@0.74.3)(react@18.2.0)
@ -5012,13 +5053,13 @@ packages:
- typescript
dev: false
/expo-splash-screen@0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26):
/expo-splash-screen@0.27.5(expo-modules-autolinking@1.11.2)(expo@51.0.28):
resolution: {integrity: sha512-9rdZuLkFCfgJBxrheUsOEOIW6Rp+9NVlpSE0hgXQwbTCLTncf00IHSE8/L2NbFyeDLNjof1yZBppaV7tXHRUzA==, tarball: https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.27.5.tgz}
peerDependencies:
expo: '*'
dependencies:
'@expo/prebuild-config': 7.0.6(expo-modules-autolinking@1.11.1)
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
'@expo/prebuild-config': 7.0.6(expo-modules-autolinking@1.11.2)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
transitivePeerDependencies:
- encoding
- expo-modules-autolinking
@ -5029,43 +5070,43 @@ packages:
resolution: {integrity: sha512-/t3xdbS8KB0prj5KG5w7z+wZPFlPtkgs95BsmrP/E7Q0xHXTcDcQ6Cu2FkFuRM+PKTb17cJDnLkawyS5vDLxMA==, tarball: https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.12.1.tgz}
dev: false
/expo-system-ui@3.0.7(expo@51.0.26):
/expo-system-ui@3.0.7(expo@51.0.28):
resolution: {integrity: sha512-KAs72F5JKhdIfPR9ZNVlRubTPK9uUuevPy5oYEp12xNEzSQcjZKvypH5NpwJuNWkXzrp3n3vZ+3pXsudA7J3KA==, tarball: https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-3.0.7.tgz}
peerDependencies:
expo: '*'
dependencies:
'@react-native/normalize-colors': 0.74.85
debug: 4.3.6
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
transitivePeerDependencies:
- supports-color
dev: false
/expo-web-browser@13.0.3(expo@51.0.26):
/expo-web-browser@13.0.3(expo@51.0.28):
resolution: {integrity: sha512-HXb7y82ApVJtqk8tManyudtTrCtx8xcUnVzmJECeHCB0SsWSQ+penVLZxJkcyATWoJOsFMnfVSVdrTcpKKGszQ==, tarball: https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-13.0.3.tgz}
peerDependencies:
expo: '*'
dependencies:
expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo: 51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
dev: false
/expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3):
resolution: {integrity: sha512-7ThQa6CVbiVtk4GNw0E9CewSzXYOeHkcRTCGorBZVcjAu6SuxbdWEtl0RI01/VpRKV+6I+yy/BmGnCl7lFRILg==, tarball: https://registry.npmjs.org/expo/-/expo-51.0.26.tgz}
/expo@51.0.28(@babel/core@7.25.2)(@babel/preset-env@7.25.3):
resolution: {integrity: sha512-R+0tSV0Zf5R+DxN4W3mLFlVvYVpiJ+dtYrMmBedIRw0A54we50QRM1jS0Gq2Bdzg2JtainSEApdQXUC6r9j/BA==, tarball: https://registry.npmjs.org/expo/-/expo-51.0.28.tgz}
hasBin: true
dependencies:
'@babel/runtime': 7.25.0
'@expo/cli': 0.18.28(expo-modules-autolinking@1.11.1)
'@expo/cli': 0.18.29(expo-modules-autolinking@1.11.2)
'@expo/config': 9.0.3
'@expo/config-plugins': 8.0.8
'@expo/metro-config': 0.18.11
'@expo/vector-icons': 14.0.2
babel-preset-expo: 11.0.13(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo-asset: 10.0.10(expo@51.0.26)
expo-file-system: 17.0.1(expo@51.0.26)
expo-font: 12.0.9(expo@51.0.26)
expo-keep-awake: 13.0.2(expo@51.0.26)
expo-modules-autolinking: 1.11.1
expo-modules-core: 1.12.20
babel-preset-expo: 11.0.14(@babel/core@7.25.2)(@babel/preset-env@7.25.3)
expo-asset: 10.0.10(expo@51.0.28)
expo-file-system: 17.0.1(expo@51.0.28)
expo-font: 12.0.9(expo@51.0.28)
expo-keep-awake: 13.0.2(expo@51.0.28)
expo-modules-autolinking: 1.11.2
expo-modules-core: 1.12.21
fbemitter: 3.0.0
whatwg-url-without-unicode: 8.0.0-3
transitivePeerDependencies:
@ -5444,7 +5485,7 @@ packages:
array-union: 2.1.0
dir-glob: 3.0.1
fast-glob: 3.3.2
ignore: 5.3.1
ignore: 5.3.2
merge2: 1.4.1
slash: 3.0.0
dev: false
@ -5608,8 +5649,8 @@ packages:
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, tarball: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz}
/ignore@5.3.1:
resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==, tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz}
/ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz}
engines: {node: '>= 4'}
dev: false
@ -6048,7 +6089,7 @@ packages:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.3
@ -6086,7 +6127,7 @@ packages:
create-jest: 29.7.0
exit: 0.1.2
import-local: 3.2.0
jest-config: 29.7.0(@types/node@22.2.0)
jest-config: 29.7.0(@types/node@22.3.0)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@ -6097,7 +6138,7 @@ packages:
- ts-node
dev: true
/jest-config@29.7.0(@types/node@22.2.0):
/jest-config@29.7.0(@types/node@22.3.0):
resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==, tarball: https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
@ -6112,7 +6153,7 @@ packages:
'@babel/core': 7.25.2
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
babel-jest: 29.7.0(@babel/core@7.25.2)
chalk: 4.1.2
ci-info: 3.9.0
@ -6178,7 +6219,7 @@ packages:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/jsdom': 20.0.1
'@types/node': 22.2.0
'@types/node': 22.3.0
jest-mock: 29.7.0
jest-util: 29.7.0
jsdom: 20.0.3
@ -6195,7 +6236,7 @@ packages:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
jest-mock: 29.7.0
jest-util: 29.7.0
@ -6235,7 +6276,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
'@types/node': 22.2.0
'@types/node': 22.3.0
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@ -6285,7 +6326,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
jest-util: 29.7.0
/jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@ -6339,7 +6380,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@ -6370,7 +6411,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
chalk: 4.1.2
cjs-module-lexer: 1.3.1
collect-v8-coverage: 1.0.2
@ -6401,7 +6442,7 @@ packages:
'@jest/expect-utils': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2)
babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2)
chalk: 4.1.2
expect: 29.7.0
graceful-fs: 4.2.11
@ -6422,7 +6463,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@ -6469,7 +6510,7 @@ packages:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.2.0
'@types/node': 22.3.0
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@ -6481,7 +6522,7 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==, tarball: https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@types/node': 22.2.0
'@types/node': 22.3.0
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
@ -7024,7 +7065,7 @@ packages:
engines: {node: '>=18'}
dependencies:
flow-enums-runtime: 0.0.6
terser: 5.31.5
terser: 5.31.6
/metro-resolver@0.80.10:
resolution: {integrity: sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==, tarball: https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.10.tgz}
@ -7743,6 +7784,15 @@ packages:
engines: {node: '>=6'}
dev: false
/pretty-format@24.9.0:
resolution: {integrity: sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==, tarball: https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz}
engines: {node: '>= 6'}
dependencies:
'@jest/types': 24.9.0
ansi-regex: 4.1.1
ansi-styles: 3.2.1
react-is: 16.13.1
/pretty-format@26.6.2:
resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==, tarball: https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz}
engines: {node: '>= 10'}
@ -7902,7 +7952,6 @@ packages:
/react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, tarball: https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz}
dev: false
/react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, tarball: https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz}
@ -9003,8 +9052,8 @@ packages:
supports-hyperlinks: 2.3.0
dev: false
/terser@5.31.5:
resolution: {integrity: sha512-YPmas0L0rE1UyLL/llTWA0SiDOqIcAQYLeUj7cJYzXHlRTAnMSg9pPe4VJ5PlKvTrPQsdVFuiRiwyeNlYgwh2Q==, tarball: https://registry.npmjs.org/terser/-/terser-5.31.5.tgz}
/terser@5.31.6:
resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==, tarball: https://registry.npmjs.org/terser/-/terser-5.31.6.tgz}
engines: {node: '>=10'}
hasBin: true
dependencies:
@ -9103,14 +9152,18 @@ packages:
which-typed-array: 1.1.15
dev: false
/trim-right@1.0.1:
resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==, tarball: https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz}
engines: {node: '>=0.10.0'}
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, tarball: https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz}
/tslib@2.6.3:
resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==, tarball: https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz}
/turbo-stream@2.2.0:
resolution: {integrity: sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==, tarball: https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.2.0.tgz}
/turbo-stream@2.3.0:
resolution: {integrity: sha512-PhEr9mdexoVv+rJkQ3c8TjrN3DUghX37GNJkSMksoPR4KrXIPnM2MnqRt07sViIqX9IdlhrgtTSyjoVOASq6cg==, tarball: https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.3.0.tgz}
dev: false
/type-detect@4.0.8:
@ -9212,8 +9265,8 @@ packages:
/undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==, tarball: https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz}
/undici-types@6.13.0:
resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==, tarball: https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz}
/undici-types@6.18.2:
resolution: {integrity: sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==, tarball: https://registry.npmjs.org/undici-types/-/undici-types-6.18.2.tgz}
/undici@6.19.7:
resolution: {integrity: sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==, tarball: https://registry.npmjs.org/undici/-/undici-6.19.7.tgz}
@ -9685,3 +9738,14 @@ packages:
/yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz}
engines: {node: '>=10'}
/zod-validation-error@2.1.0(zod@3.23.8):
resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==, tarball: https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-2.1.0.tgz}
engines: {node: '>=18.0.0'}
peerDependencies:
zod: ^3.18.0
dependencies:
zod: 3.23.8
/zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==, tarball: https://registry.npmjs.org/zod/-/zod-3.23.8.tgz}