diff --git a/app.config.js b/app.config.js index 69bed71dd..84509c4e5 100644 --- a/app.config.js +++ b/app.config.js @@ -38,8 +38,8 @@ module.exports = { 'expo-font', { fonts: [ - 'node_modules/@lad-tech/mobydick-core/src/typography/assets/fonts/Inter.ttf', - 'node_modules/@lad-tech/mobydick-core/src/styles/icons/font/assets/fonts/Neotis.ttf', + 'node_modules/@lad-tech/mobydick-core/src/styles/icons/font/assets/fonts', + 'node_modules/expo-google-fonts/inter', ], }, ], diff --git a/docs/docs/guides/core/Introduction.mdx b/docs/docs/guides/core/Introduction.mdx index e723a28e5..d8a169558 100644 --- a/docs/docs/guides/core/Introduction.mdx +++ b/docs/docs/guides/core/Introduction.mdx @@ -14,7 +14,7 @@ sidebar_position: 0 npm install @lad-tech/mobydick-core react-native-svg react-native-svg-transformer react-native-safe-area-context ``` -## Font +### Bare React Native To use typography font, you must install the font. To do this, in `react-native.config.js` you need to add the path to it to `assets`: @@ -28,6 +28,9 @@ module.exports = { ..., // highlight-next-line 'node_modules/@lad-tech/mobydick-core/src/typography/assets/fonts/', + // highlight-next-line + 'node_modules/@lad-tech/mobydick-core/src/styles/icons/font/assets/fonts/', + ], }; ``` @@ -38,27 +41,76 @@ and run the command npx react-native-asset ``` -## Icons +### Expo -To use font icons, you must install the font. To do this, in `react-native.config.js` you need to add the path to it to `assets`: +add new fonts into `app.json` (`app.config.js`) ```js -module.exports = { - project: { - ios: {}, - android: {}, - }, - assets: [ - ..., - // highlight-next-line - 'node_modules/@lad-tech/mobydick-core/src/styles/icons/font/assets/fonts/', +plugins: [ + ... + [ + 'expo-font', + { + fonts: [ + // highlight-next-line + 'node_modules/@lad-tech/mobydick-core/src/styles/icons/font/assets/fonts', + // highlight-next-line + 'node_modules/expo-google-fonts/inter', + ], + }, ], -}; +], ``` +and load them into `_layout.ts` + +```ts +import {useFonts} from 'expo-font'; +import {SplashScreen} from 'expo-router'; +import {useEffect} from 'react'; +import { + Inter_100Thin, + Inter_200ExtraLight, + Inter_300Light, + Inter_400Regular, + Inter_500Medium, + Inter_600SemiBold, + Inter_700Bold, + Inter_800ExtraBold, + Inter_900Black, +} from '@expo-google-fonts/inter'; + + +// Prevent the splash screen from auto-hiding before asset loading is complete. +SplashScreen.preventAutoHideAsync(); + +export default () => { + const [loaded] = useFonts({ + Inter_100Thin, + Inter_200ExtraLight, + Inter_300Light, + Inter_400Regular, + Inter_500Medium, + Inter_600SemiBold, + Inter_700Bold, + Inter_800ExtraBold, + Inter_900Black, + Neotis: require('@lad-tech/mobydick-core/src/styles/icons/font/assets/fonts/Neotis.ttf'), + }); + + useEffect(() => { + if (loaded) { + SplashScreen.hideAsync(); + } + }, [loaded]); + + if (!loaded) { + return null; + } + + return ( + ... + ); +}; -and run the command - -```bash -npx react-native-asset ``` diff --git a/docs/docs/guides/core/Theme.mdx b/docs/docs/guides/core/Theme.mdx index 919f322c1..1161c4bef 100644 --- a/docs/docs/guides/core/Theme.mdx +++ b/docs/docs/guides/core/Theme.mdx @@ -10,13 +10,34 @@ You can control you theme by theme props in `ThemeProvider` import { CurrentTheme, defaultSpaces, - getShadows, - ThemeProvider, + getShadows,TFontWeight, + ThemeProvider } from '@lad-tech/mobydick-core'; import {Navigation} from '@/pages/Navigation'; import {themeColors} from '@/shared/lib/theme'; -import {fonts} from '@/shared/lib/theme/deafultFont'; - +import { Platform } from 'react-native'; + +export const fontResolver = (weight: TFontWeight) => { + const map = { + [TFontWeight.Bold]: Platform.select({ + android: 'Inter_700Bold', + ios: 'Inter-Bold', + }), + [TFontWeight.SemiBold]: Platform.select({ + android: 'Inter_600SemiBold', + ios: 'Inter-SemiBold', + }), + [TFontWeight.Medium]: Platform.select({ + android: 'Inter_500Medium', + ios: 'Inter-Medium', + }), + [TFontWeight.Regular]: Platform.select({ + android: 'Inter_400Regular', + ios: 'Inter-Regular', + }), + }; + return map[weight]; +}; function App() { return ( @@ -27,11 +48,11 @@ function App() { spaces: { ...defaultSpaces, }, - fonts: fonts, shadows: getShadows({ spaces: defaultSpaces, currentTheme: CurrentTheme.light, }), + customFontResolver: fontResolver }}> @@ -67,14 +88,6 @@ All possible colors group by theme All possible spaces -###
Required
**`fonts`** - -| TYPE | -|:--------------------------------------------------------------------------------------------------------| -| [fonts](https://github.com/lad-tech/mobydick/blob/main/packages/core/src/styles/constants/theme.ts#L31) | - -Map for font - ###
Required
**`shadows`** | TYPE | @@ -82,3 +95,11 @@ Map for font | [shadow](https://github.com/lad-tech/mobydick/blob/main/packages/core/src/styles/constants/theme.ts#L69) | Map for shadow + +### **`customFontResolver`** + +| TYPE | +|:------------------------------------------------------------------------------------------------------------------------------------| +| [(weigth: string) => string)](https://github.com/lad-tech/mobydick/blob/main/packages/core/src/typography/utils/fontResolver.ts#L5) | + +Custom function for font resolve. (If your app need use another font instead of Inter) diff --git a/jest.config.js b/jest.config.js index 616605fac..665440ba7 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,5 +1,5 @@ module.exports = { - 'preset': 'react-native', + "preset": "jest-expo", 'moduleFileExtensions': [ 'ts', 'tsx', @@ -10,8 +10,8 @@ module.exports = { ], testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(ts|tsx?)$', "setupFiles": ["@shopify/react-native-skia/jestSetup.js", "./node_modules/react-native-gesture-handler/jestSetup.js"], - 'transformIgnorePatterns': [ - 'node_modules/(?!(jest-)?react-native|@react-native-community|@react-native|@react-navigation/.*|@shopify/react-native-skia)', + "transformIgnorePatterns": [ + "node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@sentry/react-native|native-base|react-native-svg)" ], 'setupFilesAfterEnv': [ '/__mocks__/globalMock.ts', diff --git a/package.json b/package.json index c4102f8d7..abb01b304 100644 --- a/package.json +++ b/package.json @@ -31,11 +31,11 @@ "packages/*" ], "dependencies": { + "@expo-google-fonts/inter": "^0.2.3", "@react-navigation/bottom-tabs": "^6.5.18", "@react-navigation/native": "^6.1.9", "@react-navigation/native-stack": "^6.9.17", "@shopify/react-native-skia": "1.2.3", - "add": "^2.0.6", "expo": "~51.0.34", "expo-linking": "^6.3.1", "expo-router": "^3.5.23", @@ -68,7 +68,7 @@ "@semantic-release/npm": "^11.0.2", "@testing-library/react-hooks": "^8.0.0", "@testing-library/react-native": "^9.1.0", - "@types/jest": "^29.5.12", + "@types/jest": "^29.5.13", "@types/react": "^18.2.6", "@types/react-native": "^0.67.3", "@types/react-test-renderer": "^18.0.0", @@ -79,6 +79,7 @@ "babel-plugin-module-resolver": "^5.0.0", "eslint": "^8.56.0", "jest": "^29.7.0", + "jest-expo": "^51.0.4", "jest-sonar-reporter": "^2.0.0", "lefthook": "^1.7.16", "prettier": "^3.2.4", diff --git a/packages/chart/package.json b/packages/chart/package.json index cab3faac8..e03a91660 100644 --- a/packages/chart/package.json +++ b/packages/chart/package.json @@ -35,8 +35,9 @@ "react-native": ">=0.66.4", "react": ">=17.0.2", "@lad-tech/mobydick-core": "7.35.0-next.7", + "@expo-google-fonts/inter": "^0.2.3", "@shopify/react-native-skia": ">=0.1.234", "react-native-reanimated": ">=3.6.1", "react-native-gesture-handler": ">=2.14.1" } -} \ No newline at end of file +} diff --git a/packages/chart/src/BarChart/index.tsx b/packages/chart/src/BarChart/index.tsx index 052db96d8..84998ed69 100644 --- a/packages/chart/src/BarChart/index.tsx +++ b/packages/chart/src/BarChart/index.tsx @@ -12,6 +12,7 @@ import {useSafeAreaFrame} from 'react-native-safe-area-context'; import {useDerivedValue, useSharedValue} from 'react-native-reanimated'; import {useTheme, View} from '@lad-tech/mobydick-core'; import {StyleProp, ViewStyle} from 'react-native'; +import {Inter_400Regular} from '@expo-google-fonts/inter'; import { IDataset, @@ -47,11 +48,7 @@ export const BarChart = ({ formatterY, formatterX, }: IBarChartProps) => { - const font = useFont( - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('@lad-tech/mobydick-core/src/typography/assets/fonts/Inter-Regular.ttf'), - 12, - ); + const font = useFont(Inter_400Regular, 12); const {colors, spaces} = useTheme(); const ref = useCanvasRef(); diff --git a/packages/chart/src/LineChart/index.tsx b/packages/chart/src/LineChart/index.tsx index 0b869c918..85bad411d 100644 --- a/packages/chart/src/LineChart/index.tsx +++ b/packages/chart/src/LineChart/index.tsx @@ -19,6 +19,17 @@ import { GestureDetector, GestureHandlerRootView, } from 'react-native-gesture-handler'; +import { + Inter_100Thin, + Inter_200ExtraLight, + Inter_300Light, + Inter_400Regular, + Inter_500Medium, + Inter_600SemiBold, + Inter_700Bold, + Inter_800ExtraBold, + Inter_900Black, +} from '@expo-google-fonts/inter'; import Coordinates from '../components/Coordinates'; import { @@ -70,17 +81,19 @@ export const LineChart = ({ const {colors, spaces} = useTheme(); const fontMgr = useFonts({ Inter: [ - require('@lad-tech/mobydick-core/src/typography/assets/fonts/Inter-Bold.ttf'), - require('@lad-tech/mobydick-core/src/typography/assets/fonts/Inter-Italic.ttf'), - require('@lad-tech/mobydick-core/src/typography/assets/fonts/Inter-Regular.ttf'), + Inter_100Thin, + Inter_200ExtraLight, + Inter_300Light, + Inter_400Regular, + Inter_500Medium, + Inter_600SemiBold, + Inter_700Bold, + Inter_800ExtraBold, + Inter_900Black, ], }); - const font = useFont( - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('@lad-tech/mobydick-core/src/typography/assets/fonts/Inter-Medium.ttf'), - 12, - ); + const font = useFont(Inter_500Medium, 12); const ref = useCanvasRef(); diff --git a/packages/core/package.json b/packages/core/package.json index 3456623ab..4d972bef0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -37,6 +37,7 @@ "react-native-svg-transformer": ">=1.0.0" }, "dependencies": { + "@expo-google-fonts/inter": "^0.2.3", "@tabler/icons-react-native": "^3.7.0" } -} \ No newline at end of file +} diff --git a/packages/core/src/cta/components/Button/__tests__/__snapshots__/Button.test.tsx.snap b/packages/core/src/cta/components/Button/__tests__/__snapshots__/Button.test.tsx.snap index 0ce4e81ef..e6fda8145 100644 --- a/packages/core/src/cta/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +++ b/packages/core/src/cta/components/Button/__tests__/__snapshots__/Button.test.tsx.snap @@ -202,7 +202,7 @@ exports[`@lad-tech/mobydick-core/Button renders correctly destructive 1`] = ` [ { "color": "#2B78EE", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -868,7 +868,7 @@ exports[`@lad-tech/mobydick-core/Button renders correctly loading types 3`] = ` [ { "color": "#2B78EE", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -957,7 +957,7 @@ exports[`@lad-tech/mobydick-core/Button renders correctly loading types 4`] = ` [ { "color": "#FFFFFF", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -1046,7 +1046,7 @@ exports[`@lad-tech/mobydick-core/Button renders correctly loading types 5`] = ` [ { "color": "#FFFFFF", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -1199,7 +1199,7 @@ exports[`@lad-tech/mobydick-core/Button renders correctly loading types 7`] = ` [ { "color": "#2B78EE", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -1288,7 +1288,7 @@ exports[`@lad-tech/mobydick-core/Button renders correctly loading types 8`] = ` [ { "color": "#2B78EE", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, diff --git a/packages/core/src/other/components/Avatar/__tests__/__snapshots__/Avatar.test.tsx.snap b/packages/core/src/other/components/Avatar/__tests__/__snapshots__/Avatar.test.tsx.snap index 046fe4149..d5b408f8f 100644 --- a/packages/core/src/other/components/Avatar/__tests__/__snapshots__/Avatar.test.tsx.snap +++ b/packages/core/src/other/components/Avatar/__tests__/__snapshots__/Avatar.test.tsx.snap @@ -128,7 +128,7 @@ exports[`Avatar render avatar badge counter 1`] = ` [ { "color": "#F54C3D", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 10, "fontWeight": "600", "lineHeight": 14, diff --git a/packages/core/src/other/components/Badge/Counter/__tests__/__snapshots__/Counter.test.tsx.snap b/packages/core/src/other/components/Badge/Counter/__tests__/__snapshots__/Counter.test.tsx.snap index 5dc11ecc4..caf7ca8ae 100644 --- a/packages/core/src/other/components/Badge/Counter/__tests__/__snapshots__/Counter.test.tsx.snap +++ b/packages/core/src/other/components/Badge/Counter/__tests__/__snapshots__/Counter.test.tsx.snap @@ -26,7 +26,7 @@ exports[`Counter render counter ICounterSize.medium 1`] = ` [ { "color": "#FFFFFF", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -71,7 +71,7 @@ exports[`Counter render counter ICounterSize.small 1`] = ` [ { "color": "#FFFFFF", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 10, "fontWeight": "600", "lineHeight": 14, @@ -116,7 +116,7 @@ exports[`Counter render counter ICounterTypes.accent 1`] = ` [ { "color": "#FFFFFF", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -161,7 +161,7 @@ exports[`Counter render counter ICounterTypes.accentLight 1`] = ` [ { "color": "#2B78EE", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -206,7 +206,7 @@ exports[`Counter render counter ICounterTypes.attention 1`] = ` [ { "color": "#FFFFFF", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -251,7 +251,7 @@ exports[`Counter render counter ICounterTypes.attentionLight 1`] = ` [ { "color": "#F54C3D", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -296,7 +296,7 @@ exports[`Counter render counter ICounterTypes.muted 1`] = ` [ { "color": "#FFFFFF", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -341,7 +341,7 @@ exports[`Counter render counter ICounterTypes.mutedLight 1`] = ` [ { "color": "#9BA1B0", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -388,7 +388,7 @@ exports[`Counter render counter style 1`] = ` [ { "color": "#FFFFFF", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 16, "fontWeight": "600", "lineHeight": 20, @@ -433,7 +433,7 @@ exports[`Counter render font 1`] = ` [ { "color": "#151C2C", - "fontFamily": "Inter", + "fontFamily": "Inter-Bold", "fontSize": 10, "fontWeight": "700", "lineHeight": 14, diff --git a/packages/core/src/styles/constants/theme.ts b/packages/core/src/styles/constants/theme.ts index 5a006259c..58ced15a8 100644 --- a/packages/core/src/styles/constants/theme.ts +++ b/packages/core/src/styles/constants/theme.ts @@ -71,8 +71,6 @@ export const defaultTheme: IDefaultTheme = { spaces: { ...defaultSpaces, }, - fonts: defaultFonts, - font: defaultFont, shadows: getShadows({ spaces: defaultSpaces, currentTheme: CurrentTheme.light, diff --git a/packages/core/src/styles/context/ThemeProvider.tsx b/packages/core/src/styles/context/ThemeProvider.tsx index 91a0e0e24..4ecda130e 100644 --- a/packages/core/src/styles/context/ThemeProvider.tsx +++ b/packages/core/src/styles/context/ThemeProvider.tsx @@ -23,8 +23,6 @@ const ThemeProvider: FC< currentThemeState ] as (typeof defaultTheme.colors)[0], // I think no one don't be setting currentTheme to not keys of colors, spaces: themeState.spaces, - fonts: themeState.fonts, - font: themeState.font, shadows: getShadows({ spaces: themeState.spaces, currentTheme: currentThemeState, diff --git a/packages/core/src/styles/context/context.ts b/packages/core/src/styles/context/context.ts index ff4ec4663..f8fef478a 100644 --- a/packages/core/src/styles/context/context.ts +++ b/packages/core/src/styles/context/context.ts @@ -1,6 +1,6 @@ import {createContext} from 'react'; -import {defaultFont, defaultFonts, defaultTheme} from '../constants/theme'; +import {defaultTheme} from '../constants/theme'; import {IThemeContext} from '../types'; export const MissingThemeProviderError = new Error( @@ -18,8 +18,6 @@ export const defaultThemeContext: IThemeContext = { defaultTheme.currentTheme ] as (typeof defaultTheme.colors)[0], currentTheme: defaultTheme.currentTheme, - fonts: defaultFonts, - font: defaultFont, shadows: defaultTheme.shadows, setTheme: missingFunc, diff --git a/packages/core/src/styles/types.ts b/packages/core/src/styles/types.ts index bfe7a493d..b69062d1d 100644 --- a/packages/core/src/styles/types.ts +++ b/packages/core/src/styles/types.ts @@ -1,6 +1,6 @@ import {ImageStyle, TextStyle, ViewStyle} from 'react-native'; -import {TWeights} from '../typography'; +import {TFontWeight} from '../typography'; import { CurrentTheme, @@ -37,9 +37,7 @@ export interface IDefaultTheme { IAdditionalColors >; spaces: IDefaultSpaces; - /** @deprecated use font **/ - fonts: TWeights; - font: string; + shadows: IShadow; } @@ -57,8 +55,7 @@ export interface IThemeContext { IBannerColors & IAdditionalColors; spaces: IDefaultSpaces; - fonts: TWeights; - font: string; + customFontResolver?: (weight: TFontWeight) => string; shadows: IShadow; setTheme: (theme: IDefaultTheme) => void; diff --git a/packages/core/src/typography/assets/fonts/Inter-Bold.ttf b/packages/core/src/typography/assets/fonts/Inter-Bold.ttf deleted file mode 100644 index 906232896..000000000 Binary files a/packages/core/src/typography/assets/fonts/Inter-Bold.ttf and /dev/null differ diff --git a/packages/core/src/typography/assets/fonts/Inter-BoldItalic.ttf b/packages/core/src/typography/assets/fonts/Inter-BoldItalic.ttf deleted file mode 100644 index ea08781c6..000000000 Binary files a/packages/core/src/typography/assets/fonts/Inter-BoldItalic.ttf and /dev/null differ diff --git a/packages/core/src/typography/assets/fonts/Inter-Italic.ttf b/packages/core/src/typography/assets/fonts/Inter-Italic.ttf deleted file mode 100644 index 384165534..000000000 Binary files a/packages/core/src/typography/assets/fonts/Inter-Italic.ttf and /dev/null differ diff --git a/packages/core/src/typography/assets/fonts/Inter-Medium.ttf b/packages/core/src/typography/assets/fonts/Inter-Medium.ttf deleted file mode 100644 index 49b53ab34..000000000 Binary files a/packages/core/src/typography/assets/fonts/Inter-Medium.ttf and /dev/null differ diff --git a/packages/core/src/typography/assets/fonts/Inter-Regular.ttf b/packages/core/src/typography/assets/fonts/Inter-Regular.ttf deleted file mode 100644 index f17b596c9..000000000 Binary files a/packages/core/src/typography/assets/fonts/Inter-Regular.ttf and /dev/null differ diff --git a/packages/core/src/typography/assets/fonts/Inter-SemiBold.ttf b/packages/core/src/typography/assets/fonts/Inter-SemiBold.ttf deleted file mode 100644 index 01523b222..000000000 Binary files a/packages/core/src/typography/assets/fonts/Inter-SemiBold.ttf and /dev/null differ diff --git a/packages/core/src/typography/assets/fonts/Inter.ttf b/packages/core/src/typography/assets/fonts/Inter.ttf deleted file mode 100644 index e72470871..000000000 Binary files a/packages/core/src/typography/assets/fonts/Inter.ttf and /dev/null differ diff --git a/packages/core/src/typography/components/Title/__tests__/__snapshots__/Title.test.tsx.snap b/packages/core/src/typography/components/Title/__tests__/__snapshots__/Title.test.tsx.snap index 7f5f9f81b..810e582e0 100644 --- a/packages/core/src/typography/components/Title/__tests__/__snapshots__/Title.test.tsx.snap +++ b/packages/core/src/typography/components/Title/__tests__/__snapshots__/Title.test.tsx.snap @@ -7,7 +7,7 @@ exports[`@lad-tech/mobydick-core/Header renders default correctly 1`] = ` [ { "color": "#20242D", - "fontFamily": "Inter", + "fontFamily": "Inter-SemiBold", "fontSize": 36, "fontWeight": "600", "lineHeight": 40, diff --git a/packages/core/src/typography/components/Typography/__tests__/__snapshots__/Typography.test.tsx.snap b/packages/core/src/typography/components/Typography/__tests__/__snapshots__/Typography.test.tsx.snap index 77c3beb32..59adc6065 100644 --- a/packages/core/src/typography/components/Typography/__tests__/__snapshots__/Typography.test.tsx.snap +++ b/packages/core/src/typography/components/Typography/__tests__/__snapshots__/Typography.test.tsx.snap @@ -7,7 +7,7 @@ exports[`@lad-tech/mobydick-core/Typography renders default correctly 1`] = ` [ { "color": "#20242D", - "fontFamily": "Inter", + "fontFamily": "Inter-Regular", "fontSize": 14, "fontWeight": "400", "lineHeight": 18, diff --git a/packages/core/src/typography/hooks/useFont.ts b/packages/core/src/typography/hooks/useFont.ts index b987735ec..9b860f7cb 100644 --- a/packages/core/src/typography/hooks/useFont.ts +++ b/packages/core/src/typography/hooks/useFont.ts @@ -6,18 +6,19 @@ import { TFontWeight, TypographyLegacyProp, } from '../types'; -import {getSize} from '../utils'; +import {fontResolver, getSize} from '../utils'; export const useFont = (font: TypographyLegacyProp = 'Regular-Primary-S') => { - const {colors, theme} = useTheme(); - const getWeight = (weight: TFontWeight): string => theme.fonts[weight]; + const {colors, customFontResolver} = useTheme(); const [weight, color, size] = font.split('-'); const {fontSize, lineHeight} = getSize(size as TFontSize); const fontStyle = { color: colors[`${TEXT}${color as TFontColor}`], - fontFamily: getWeight(weight as TFontWeight), + fontFamily: customFontResolver + ? customFontResolver(weight as TFontWeight) + : fontResolver(weight as TFontWeight), fontSize, lineHeight, minHeight: lineHeight, diff --git a/packages/core/src/typography/hooks/useFontBody.ts b/packages/core/src/typography/hooks/useFontBody.ts index 6c9a218d1..e9ff9f97d 100644 --- a/packages/core/src/typography/hooks/useFontBody.ts +++ b/packages/core/src/typography/hooks/useFontBody.ts @@ -8,22 +8,24 @@ import { TFontWeight, TypographyProp, } from '../types'; -import {getSize} from '../utils'; +import {fontResolver, getSize} from '../utils'; import {getWeight} from '../utils/getWeight'; export const useFontBody = (font: TypographyProp = 'Regular-Primary-S') => { - const {colors, theme} = useTheme(); + const {colors, customFontResolver} = useTheme(); - const [wight, color, size] = font.split('-'); + const [weight, color, size] = font.split('-'); const {fontSize, lineHeight} = getSize(size as TFontSize); const fontStyle: TextStyle = { color: colors[`${TEXT}${color as TFontColor}`], - fontFamily: theme.font, + fontFamily: customFontResolver + ? customFontResolver(weight as TFontWeight) + : fontResolver(weight as TFontWeight), fontSize, lineHeight, minHeight: lineHeight, - fontWeight: getWeight(wight as TFontWeight), + fontWeight: getWeight(weight as TFontWeight), }; return {fontStyle}; diff --git a/packages/core/src/typography/hooks/useFontHeader.ts b/packages/core/src/typography/hooks/useFontHeader.ts index 3e91c45b5..071cffe17 100644 --- a/packages/core/src/typography/hooks/useFontHeader.ts +++ b/packages/core/src/typography/hooks/useFontHeader.ts @@ -2,18 +2,20 @@ import {TextStyle} from 'react-native'; import useTheme from '../../styles/hooks/useTheme'; import {TEXT, TFontColor, TFontSize, TFontWeight, TitleProp} from '../types'; -import {getSize} from '../utils'; +import {fontResolver, getSize} from '../utils'; import {getWeight} from '../utils/getWeight'; export const useFontHeader = (font: TitleProp = 'Primary-H1') => { - const {colors, theme} = useTheme(); + const {colors, customFontResolver} = useTheme(); const [color, size] = font.split('-'); const {fontSize, lineHeight} = getSize(size as TFontSize); const fontStyle: TextStyle = { color: colors[`${TEXT}${color as TFontColor}`], - fontFamily: theme.font, + fontFamily: customFontResolver + ? customFontResolver(TFontWeight.SemiBold) + : fontResolver(TFontWeight.SemiBold), fontSize, lineHeight, minHeight: lineHeight, diff --git a/packages/core/src/typography/utils/fontResolver.ts b/packages/core/src/typography/utils/fontResolver.ts new file mode 100644 index 000000000..f4ea05e7f --- /dev/null +++ b/packages/core/src/typography/utils/fontResolver.ts @@ -0,0 +1,30 @@ +import {Platform} from 'react-native'; + +import {TFontWeight} from '../types'; + +export const fontResolver = (weight: TFontWeight) => { + const map = { + [TFontWeight.Bold]: Platform.select({ + android: 'Inter_700Bold', + ios: 'Inter-Bold', + default: 'Inter_700Bold', + }), + [TFontWeight.SemiBold]: Platform.select({ + android: 'Inter_600SemiBold', + ios: 'Inter-SemiBold', + default: 'Inter_600SemiBold', + }), + [TFontWeight.Medium]: Platform.select({ + android: 'Inter_500Medium', + ios: 'Inter-Medium', + default: 'Inter_500Medium', + }), + [TFontWeight.Regular]: Platform.select({ + android: 'Inter_400Regular', + ios: 'Inter-Regular', + default: 'Inter_400Regular', + }), + }; + + return map[weight]; +}; diff --git a/packages/core/src/typography/utils/index.ts b/packages/core/src/typography/utils/index.ts index 3bc7799b5..30de0edb5 100644 --- a/packages/core/src/typography/utils/index.ts +++ b/packages/core/src/typography/utils/index.ts @@ -1 +1,2 @@ export * from './getSize'; +export {fontResolver} from './fontResolver'; diff --git a/src/app/_layout.tsx b/src/app/_layout.tsx index 5ee5a664c..1cf35353b 100644 --- a/src/app/_layout.tsx +++ b/src/app/_layout.tsx @@ -5,6 +5,17 @@ import {SplashScreen} from 'expo-router'; import {useEffect} from 'react'; import {StatusBar} from 'expo-status-bar'; import {Appearance, Platform} from 'react-native'; +import { + Inter_100Thin, + Inter_200ExtraLight, + Inter_300Light, + Inter_400Regular, + Inter_500Medium, + Inter_600SemiBold, + Inter_700Bold, + Inter_800ExtraBold, + Inter_900Black, +} from '@expo-google-fonts/inter'; import {PopupsProvider, ThemeProvider} from '@/shared/ui'; import MainStack from '@/pages/MainStack/ui'; @@ -32,7 +43,15 @@ const NavigationThemeWrapper = () => { export default () => { const [loaded] = useFonts({ - Inter: require('@lad-tech/mobydick-core/src/typography/assets/fonts/Inter.ttf'), + Inter_100Thin, + Inter_200ExtraLight, + Inter_300Light, + Inter_400Regular, + Inter_500Medium, + Inter_600SemiBold, + Inter_700Bold, + Inter_800ExtraBold, + Inter_900Black, Neotis: require('@lad-tech/mobydick-core/src/styles/icons/font/assets/fonts/Neotis.ttf'), }); diff --git a/src/pages/MainStack/Home/Core/Typography/Typography/ui/index.tsx b/src/pages/MainStack/Home/Core/Typography/Typography/ui/index.tsx index 77a251172..00b5fa14d 100644 --- a/src/pages/MainStack/Home/Core/Typography/Typography/ui/index.tsx +++ b/src/pages/MainStack/Home/Core/Typography/Typography/ui/index.tsx @@ -27,8 +27,8 @@ const getAllTypography = (): TypographyProp[] => { ) as unknown as TFontColor[]; const result: TypographyProp[] = []; - weights.forEach(weight => { - colors.forEach(color => { + colors.forEach(color => { + weights.forEach(weight => { sizes.forEach(size => { result.push(`${weight}-${color}-${size}`); }); diff --git a/src/widgets/Chart/ui/RenderHeader.tsx b/src/widgets/Chart/ui/RenderHeader.tsx index 467f7360c..57f949051 100644 --- a/src/widgets/Chart/ui/RenderHeader.tsx +++ b/src/widgets/Chart/ui/RenderHeader.tsx @@ -1,7 +1,7 @@ import Animated, {useAnimatedProps} from 'react-native-reanimated'; import {TextInput} from 'react-native'; -import {IRenderHeader, TypographyLegacy, useFont, View} from '@/shared/ui'; +import {IRenderHeader, TypographyLegacy, useFontBody, View} from '@/shared/ui'; interface IRenderHeaderProps { header: Parameters[number]; @@ -11,7 +11,7 @@ export const AnimatedText = Animated.createAnimatedComponent(TextInput); Animated.addWhitelistedNativeProps({text: true}); const RenderHeader = ({header}: IRenderHeaderProps) => { - const {fontStyle} = useFont('Regular-Primary-XS'); + const {fontStyle} = useFontBody('Regular-Primary-XS'); const animatedPropsPeriod = useAnimatedProps(() => { return { text: header.selectedPeriodName.value, diff --git a/yarn.lock b/yarn.lock index 2ad002657..2d4a75fb1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2000,6 +2000,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== +"@expo-google-fonts/inter@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@expo-google-fonts/inter/-/inter-0.2.3.tgz#82bf7224bb76fc6614a00393a9e9ee4d6dd09dcb" + integrity sha512-iHK9FI+dnE45X5c2Z5hSFwNH4zUWethizpbv3XUn0FIGw5jwvzriENz0a6wCdkI4/d+1QkurnHo5XHti7TbNJA== + "@expo/bunyan@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@expo/bunyan/-/bunyan-4.0.1.tgz#ab9e17e36c71c704a0ce72168378a487368da736" @@ -2465,7 +2470,7 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/create-cache-key-function@^29.6.3": +"@jest/create-cache-key-function@^29.2.1", "@jest/create-cache-key-function@^29.6.3": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== @@ -4014,6 +4019,11 @@ dependencies: pretty-format "^27.0.0" +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -4129,14 +4139,23 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.12": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== +"@types/jest@^29.5.13": + version "29.5.13" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.13.tgz#8bc571659f401e6a719a7bf0dbcb8b78c71a8adc" + integrity sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg== dependencies: expect "^29.0.0" pretty-format "^29.0.0" +"@types/jsdom@^20.0.0": + version "20.0.1" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + parse5 "^7.0.0" + "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" @@ -4243,6 +4262,11 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== +"@types/tough-cookie@*": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== + "@types/triple-beam@^1.3.2": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" @@ -4475,6 +4499,11 @@ JSONStream@^1.3.5: jsonparse "^1.2.0" through ">=2.2.7 <3" +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + abbrev@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" @@ -4495,26 +4524,41 @@ accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.34" negotiator "0.6.3" +acorn-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== + dependencies: + acorn "^8.1.0" + acorn-walk "^8.0.2" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-walk@^8.0.2: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + acorn-walk@^8.1.1: version "8.3.2" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== +acorn@^8.1.0, acorn@^8.11.0, acorn@^8.8.1: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== -add@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235" - integrity sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q== - agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -4599,13 +4643,18 @@ anser@^1.4.9: resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" +ansi-escapes@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.1.tgz#76c54ce9b081dad39acec4b5d53377913825fb0f" + integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== + ansi-escapes@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947" @@ -4891,7 +4940,7 @@ babel-core@^7.0.0-bridge.0: resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-jest@^29.6.3, babel-jest@^29.7.0: +babel-jest@^29.2.1, babel-jest@^29.6.3, babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== @@ -5374,6 +5423,14 @@ chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" @@ -5384,6 +5441,11 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + charenc@0.0.2, charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -5973,6 +6035,23 @@ csso@^5.0.5: dependencies: css-tree "~2.2.0" +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + csstype@^3.0.2: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" @@ -5993,6 +6072,15 @@ data-uri-to-buffer@^3.0.1: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-urls@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + dayjs@^1.8.15: version "1.11.10" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" @@ -6032,6 +6120,11 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decimal.js@^10.4.2: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -6208,6 +6301,13 @@ domelementtype@^2.3.0: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" @@ -6537,6 +6637,17 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + eslint-config-prettier@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" @@ -6710,7 +6821,7 @@ espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -7226,6 +7337,15 @@ form-data@^3.0.1: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + freeport-async@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/freeport-async/-/freeport-async-2.0.0.tgz#6adf2ec0c629d11abff92836acd04b399135bab4" @@ -7772,6 +7892,13 @@ hosted-git-info@^7.0.0, hosted-git-info@^7.0.1: dependencies: lru-cache "^10.0.1" +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -7793,6 +7920,15 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" @@ -7832,7 +7968,7 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436" integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw== -iconv-lite@^0.6.2: +iconv-lite@0.6.3, iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -8230,6 +8366,11 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -8587,6 +8728,20 @@ jest-each@^29.7.0: jest-util "^29.7.0" pretty-format "^29.7.0" +jest-environment-jsdom@^29.2.1: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" + integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/jsdom" "^20.0.0" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + jsdom "^20.0.0" + jest-environment-node@^29.6.3, jest-environment-node@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" @@ -8599,6 +8754,24 @@ jest-environment-node@^29.6.3, jest-environment-node@^29.7.0: jest-mock "^29.7.0" jest-util "^29.7.0" +jest-expo@^51.0.4: + version "51.0.4" + resolved "https://registry.yarnpkg.com/jest-expo/-/jest-expo-51.0.4.tgz#a780e5a2f7d3c54534f799666fd00a5a11de0ac7" + integrity sha512-WmlR4rUur1TNF/F14brKCmPdX3TWf7Bno/6A1PuxnflN79LEIXpXuPKMlMWwCCChTohGB5FRniknRibblWu1ug== + dependencies: + "@expo/config" "~9.0.0-beta.0" + "@expo/json-file" "^8.3.0" + "@jest/create-cache-key-function" "^29.2.1" + babel-jest "^29.2.1" + find-up "^5.0.0" + jest-environment-jsdom "^29.2.1" + jest-watch-select-projects "^2.0.0" + jest-watch-typeahead "2.2.1" + json5 "^2.2.3" + lodash "^4.17.19" + react-test-renderer "18.2.0" + stacktrace-js "^2.0.2" + jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" @@ -8670,7 +8843,7 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^29.6.3: +jest-regex-util@^29.0.0, jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== @@ -8810,7 +8983,29 @@ jest-validate@^29.6.3, jest-validate@^29.7.0: leven "^3.1.0" pretty-format "^29.7.0" -jest-watcher@^29.7.0: +jest-watch-select-projects@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jest-watch-select-projects/-/jest-watch-select-projects-2.0.0.tgz#4373d7e4de862aae28b46e036b669a4c913ea867" + integrity sha512-j00nW4dXc2NiCW6znXgFLF9g8PJ0zP25cpQ1xRro/HU2GBfZQFZD0SoXnAlaoKkIY4MlfTMkKGbNXFpvCdjl1w== + dependencies: + ansi-escapes "^4.3.0" + chalk "^3.0.0" + prompts "^2.2.1" + +jest-watch-typeahead@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz#36601520a2a30fd561788552dbda9c76bb44814a" + integrity sha512-jYpYmUnTzysmVnwq49TAxlmtOAwp8QIqvZyoofQFn8fiWhEDZj33ZXzg3JA4nGnzWFm1hbWf3ADpteUokvXgFA== + dependencies: + ansi-escapes "^6.0.0" + chalk "^4.0.0" + jest-regex-util "^29.0.0" + jest-watcher "^29.0.0" + slash "^5.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^29.0.0, jest-watcher@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== @@ -8920,6 +9115,38 @@ jscodeshift@^0.14.0: temp "^0.8.4" write-file-atomic "^2.3.0" +jsdom@^20.0.0: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== + dependencies: + abab "^2.0.6" + acorn "^8.8.1" + acorn-globals "^7.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.4.2" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.2" + parse5 "^7.1.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.11.0" + xml-name-validator "^4.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -9471,7 +9698,7 @@ lodash.upperfirst@^4.3.1: resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -10541,6 +10768,11 @@ nullthrows@^1.1.1: resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== +nwsapi@^2.2.2: + version "2.2.12" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" + integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== + ob1@0.80.8: version "0.80.8" resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.80.8.tgz#08be1b8398d004719074ad702c975a5c7e1b29f2" @@ -10933,6 +11165,13 @@ parse-png@^2.1.0: dependencies: pngjs "^3.3.0" +parse5@^7.0.0, parse5@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -11247,7 +11486,7 @@ promise@^8.3.0: dependencies: asap "~2.0.6" -prompts@^2.0.1, prompts@^2.3.2, prompts@^2.4.2: +prompts@^2.0.1, prompts@^2.2.1, prompts@^2.3.2, prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -11276,6 +11515,11 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + pump@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" @@ -11319,6 +11563,11 @@ querystring@^0.2.1: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -11839,6 +12088,11 @@ requireg@^0.2.2: rc "~1.2.7" resolve "~1.7.1" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + reselect@^4.1.7: version "4.1.8" resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" @@ -11999,6 +12253,13 @@ sax@>=0.6.0: resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + scheduler@0.24.0-canary-efb381bbf-20230505: version "0.24.0-canary-efb381bbf-20230505" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz#5dddc60e29f91cd7f8b983d7ce4a99c2202d178f" @@ -12325,7 +12586,7 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^5.1.0: +slash@^5.0.0, slash@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== @@ -12400,6 +12661,11 @@ source-map-support@^0.5.16, source-map-support@^0.5.21, source-map-support@~0.5. buffer-from "^1.0.0" source-map "^0.6.0" +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== + source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -12489,6 +12755,13 @@ ssri@^10.0.0, ssri@^10.0.5: dependencies: minipass "^7.0.3" +stack-generator@^2.0.5: + version "2.0.10" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" + integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== + dependencies: + stackframe "^1.3.4" + stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -12506,6 +12779,23 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== +stacktrace-gps@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0" + integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ== + dependencies: + source-map "0.5.6" + stackframe "^1.3.4" + +stacktrace-js@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" + integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== + dependencies: + error-stack-parser "^2.0.6" + stack-generator "^2.0.5" + stacktrace-gps "^3.0.4" + stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -12554,6 +12844,14 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + "string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -12811,6 +13109,11 @@ svgo@^3.0.2: csso "^5.0.5" picocolors "^1.0.0" +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + synckit@^0.8.6: version "0.8.8" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" @@ -13020,6 +13323,23 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tough-cookie@^4.1.2: + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -13378,6 +13698,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" @@ -13426,6 +13751,14 @@ url-join@^5.0.0: resolved "https://registry.yarnpkg.com/url-join/-/url-join-5.0.0.tgz#c2f1e5cbd95fa91082a93b58a1f42fecb4bdbcf1" integrity sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA== +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + use-latest-callback@^0.1.7: version "0.1.9" resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.9.tgz#10191dc54257e65a8e52322127643a8940271e2a" @@ -13531,6 +13864,13 @@ vue-eslint-parser@^9.1.0: lodash "^4.17.21" semver "^7.3.6" +w3c-xmlserializer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== + dependencies: + xml-name-validator "^4.0.0" + walk-up-path@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" @@ -13579,11 +13919,28 @@ webidl-conversions@^5.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + whatwg-fetch@^3.0.0: version "3.6.20" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + whatwg-url-without-unicode@8.0.0-3: version "8.0.0-3" resolved "https://registry.yarnpkg.com/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz#ab6df4bf6caaa6c85a59f6e82c026151d4bb376b" @@ -13593,6 +13950,14 @@ whatwg-url-without-unicode@8.0.0-3: punycode "^2.1.1" webidl-conversions "^5.0.0" +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -13805,7 +14170,7 @@ ws@^7, ws@^7.5.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -ws@^8.12.1: +ws@^8.11.0, ws@^8.12.1: version "8.18.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== @@ -13823,6 +14188,11 @@ xdate@^0.8.0: resolved "https://registry.yarnpkg.com/xdate/-/xdate-0.8.2.tgz#d7b033c00485d02695baf0044f4eacda3fc961a3" integrity sha512-sNBlLfOC8S3V0vLDEUianQOXcTsc9j4lfeKU/klHe0RjHAYn0CXsSttumTot8dzalboV8gZbH38B+WcCIBjhFQ== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + xml2js@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.0.tgz#07afc447a97d2bd6507a1f76eeadddb09f7a8282" @@ -13851,6 +14221,11 @@ xmlbuilder@~11.0.0: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"