diff --git a/App.tsx b/App.tsx deleted file mode 100644 index bf24c33..0000000 --- a/App.tsx +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - * - * @format - */ - -import React from 'react'; -import type {PropsWithChildren} from 'react'; -import { - SafeAreaView, - ScrollView, - StatusBar, - StyleSheet, - Text, - useColorScheme, - View, -} from 'react-native'; - -import { - Colors, - DebugInstructions, - Header, - LearnMoreLinks, - ReloadInstructions, -} from 'react-native/Libraries/NewAppScreen'; - -type SectionProps = PropsWithChildren<{ - title: string; -}>; - -function Section({children, title}: SectionProps): JSX.Element { - const isDarkMode = useColorScheme() === 'dark'; - return ( - - - {title} - - - {children} - - - ); -} - -function App(): JSX.Element { - const isDarkMode = useColorScheme() === 'dark'; - - const backgroundStyle = { - backgroundColor: isDarkMode ? Colors.darker : Colors.lighter, - }; - - return ( - - - -
- -
- Edit App.tsx to change this - screen and then come back to see your edits. -
-
- -
-
- -
-
- Read the docs to discover what to do next: -
- -
- - - ); -} - -const styles = StyleSheet.create({ - sectionContainer: { - marginTop: 32, - paddingHorizontal: 24, - }, - sectionTitle: { - fontSize: 24, - fontWeight: '600', - }, - sectionDescription: { - marginTop: 8, - fontSize: 18, - fontWeight: '400', - }, - highlight: { - fontWeight: '700', - }, -}); - -export default App; diff --git a/__tests__/App.test.tsx b/__tests__/App.test.tsx deleted file mode 100644 index 3413ac1..0000000 --- a/__tests__/App.test.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @format - */ - -import 'react-native'; -import React from 'react'; -import App from '../App'; - -// Note: import explicitly to use the types shiped with jest. -import {it} from '@jest/globals'; - -// Note: test renderer must be required after react-native. -import renderer from 'react-test-renderer'; - -it('renders correctly', () => { - renderer.create(); -}); diff --git a/android/app/build.gradle b/android/app/build.gradle index 28f8531..7a318fa 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,6 +1,11 @@ apply plugin: "com.android.application" apply plugin: "com.facebook.react" +project.ext.vectoricons = [ + iconFontNames: ['MaterialCommunityIcons.ttf'] +] +apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle") + /** * This is the configuration block to customize your React Native Android app. * By default you don't need to apply any configuration, just uncomment the lines you need. diff --git a/index.js b/index.js index a850d03..0f4ff88 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,7 @@ */ import {AppRegistry} from 'react-native'; -import App from './App'; import {name as appName} from './app.json'; +import App from './src/presentation/screens/App'; AppRegistry.registerComponent(appName, () => App); diff --git a/ios/SmartStop.xcodeproj/project.pbxproj b/ios/SmartStop.xcodeproj/project.pbxproj index 3f6021b..43cab1b 100644 --- a/ios/SmartStop.xcodeproj/project.pbxproj +++ b/ios/SmartStop.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 7699B88040F8A987B510C191 /* libPods-SmartStop-SmartStopTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-SmartStop-SmartStopTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + 904C36942B12DB0600B0C7C3 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 90BEE4642AFC5DCD0014196C /* MaterialCommunityIcons.ttf */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -43,6 +44,7 @@ 5DCACB8F33CDC322A6C60F78 /* libPods-SmartStop.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SmartStop.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = SmartStop/LaunchScreen.storyboard; sourceTree = ""; }; 89C6BE57DB24E9ADA2F236DE /* Pods-SmartStop-SmartStopTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SmartStop-SmartStopTests.release.xcconfig"; path = "Target Support Files/Pods-SmartStop-SmartStopTests/Pods-SmartStop-SmartStopTests.release.xcconfig"; sourceTree = ""; }; + 90BEE4642AFC5DCD0014196C /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialCommunityIcons.ttf; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -116,6 +118,7 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( + 90BEE45D2AFC5DCD0014196C /* Fonts */, 13B07FAE1A68108700A75B9A /* SmartStop */, 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* SmartStopTests */, @@ -137,6 +140,15 @@ name = Products; sourceTree = ""; }; + 90BEE45D2AFC5DCD0014196C /* Fonts */ = { + isa = PBXGroup; + children = ( + 90BEE4642AFC5DCD0014196C /* MaterialCommunityIcons.ttf */, + ); + name = Fonts; + path = "../node_modules/react-native-vector-icons/Fonts"; + sourceTree = ""; + }; BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( @@ -244,6 +256,7 @@ files = ( 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 904C36942B12DB0600B0C7C3 /* MaterialCommunityIcons.ttf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ios/SmartStop.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/SmartStop.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/SmartStop.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/SmartStop/Info.plist b/ios/SmartStop/Info.plist index 4acbe2c..8558133 100644 --- a/ios/SmartStop/Info.plist +++ b/ios/SmartStop/Info.plist @@ -2,6 +2,10 @@ + UIAppFonts + + MaterialCommunityIcons.ttf + CFBundleDevelopmentRegion en CFBundleDisplayName diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 8eb675e..0000000 --- a/jest.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - preset: 'react-native', -}; diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..a892760 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,10 @@ +const esModules = [ + '@react-native', + 'react-native', + 'react-native-vector-icons', +].join('|'); + +export default { + preset: 'react-native', + transformIgnorePatterns: [`node_modules/(?!${esModules})`], +}; diff --git a/package.json b/package.json index 427dc4f..5b5d702 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,12 @@ "test": "jest" }, "dependencies": { + "axios": "^1.6.2", + "moment": "^2.29.4", "react": "18.2.0", - "react-native": "0.72.6" + "react-native": "0.72.6", + "react-native-device-info": "^10.11.0", + "react-native-vector-icons": "^10.0.2" }, "devDependencies": { "@babel/core": "^7.20.0", @@ -22,9 +26,14 @@ "@react-native-community/eslint-config": "^3.2.0", "@react-native/eslint-config": "^0.72.2", "@react-native/metro-config": "^0.72.11", + "@testing-library/react-native": "^12.4.1", "@tsconfig/react-native": "^3.0.0", + "@types/jest": "^29.5.8", + "@types/node": "^20.10.3", "@types/react": "^18.0.24", + "@types/react-native-vector-icons": "^6.4.17", "@types/react-test-renderer": "^18.0.0", + "axios-mock-adapter": "^1.22.0", "babel-jest": "^29.2.1", "eslint": "^8.19.0", "husky": "^8.0.3", @@ -32,6 +41,8 @@ "metro-react-native-babel-preset": "0.76.8", "prettier": "^2.4.1", "react-test-renderer": "18.2.0", + "ts-node": "^10.9.1", + "tslib": "^2.6.2", "typescript": "4.8.4" }, "engines": { diff --git a/react-native.config.js b/react-native.config.js new file mode 100644 index 0000000..183a5ee --- /dev/null +++ b/react-native.config.js @@ -0,0 +1,9 @@ +module.exports = { + dependencies: { + 'react-native-vector-icons': { + platforms: { + ios: null, + }, + }, + }, +}; diff --git a/src/domain/repositories/Arrival.ts b/src/domain/repositories/Arrival.ts new file mode 100644 index 0000000..7e346af --- /dev/null +++ b/src/domain/repositories/Arrival.ts @@ -0,0 +1,8 @@ +interface Arrival { + carPlate: string; + planned: string; + estimatedGPS: string; + distanceGPS: string; +} + +export default Arrival; diff --git a/src/domain/repositories/AuthRepository.ts b/src/domain/repositories/AuthRepository.ts new file mode 100644 index 0000000..692e704 --- /dev/null +++ b/src/domain/repositories/AuthRepository.ts @@ -0,0 +1,7 @@ +import AuthRequest from '../../infraestructure/api/models/AuthRequest'; + +interface AuthRepository { + auth(request: AuthRequest): Promise; +} + +export default AuthRepository; diff --git a/src/domain/repositories/DevicesRepository.ts b/src/domain/repositories/DevicesRepository.ts new file mode 100644 index 0000000..bf5e14f --- /dev/null +++ b/src/domain/repositories/DevicesRepository.ts @@ -0,0 +1,10 @@ +import DeviceRequest from '../../infraestructure/api/models/DeviceRequest'; +import DeviceInfoResponse from '../../infraestructure/api/models/DeviceInfoResponse'; +import WhoAmIResponse from './WhoAmIResponse'; + +interface DevicesRepository { + whoAmI(request: DeviceRequest): Promise; + getDeviceInfo(request: DeviceRequest): Promise; +} + +export default DevicesRepository; diff --git a/src/domain/repositories/LineDetail.ts b/src/domain/repositories/LineDetail.ts new file mode 100644 index 0000000..ef5110d --- /dev/null +++ b/src/domain/repositories/LineDetail.ts @@ -0,0 +1,13 @@ +import Arrival from './Arrival'; + +interface LineDetail { + lineNumber: string; + description: string; + locomotionType: number; + backgroundColor: string; + letterColor: string; + lineMessage: string; + arrivals: Arrival[]; +} + +export default LineDetail; diff --git a/src/domain/repositories/WhoAmIResponse.ts b/src/domain/repositories/WhoAmIResponse.ts new file mode 100644 index 0000000..877d0da --- /dev/null +++ b/src/domain/repositories/WhoAmIResponse.ts @@ -0,0 +1,6 @@ +interface WhoAmIResponse { + stopNumber: string; + stopName: string; +} + +export default WhoAmIResponse; diff --git a/src/domain/services/BusStopInfoService.spec.ts b/src/domain/services/BusStopInfoService.spec.ts new file mode 100644 index 0000000..86ed55b --- /dev/null +++ b/src/domain/services/BusStopInfoService.spec.ts @@ -0,0 +1,371 @@ +import {jest} from '@jest/globals'; + +import BusStopInfoService from './BusStopInfoService'; + +const service = new BusStopInfoService([ + { + lineNumber: '803010', + description: 'Tucapel', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: '', + arrivals: [ + { + carPlate: 'RPDA-98', + planned: '', + estimatedGPS: '15:08', + distanceGPS: '1.0 KM', + }, + { + carPlate: 'WYXYZ-22', + planned: '', + estimatedGPS: '15:42', + distanceGPS: '5.0 KM', + }, + { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }, + ], + }, + { + lineNumber: '5487', + description: 'Centauro', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: 'Sin info. GPS, la informacion es estimada', + arrivals: [ + { + carPlate: 'PLKJ-32', + planned: '15:13', + estimatedGPS: '15:13', + distanceGPS: '', + }, + { + carPlate: 'GHLK-11', + planned: '15:39', + estimatedGPS: '15:39', + distanceGPS: '', + }, + { + carPlate: 'DFQW-55', + planned: '17:22', + estimatedGPS: '17:22', + distanceGPS: '', + }, + ], + }, +]); + +jest.useFakeTimers({legacyFakeTimers: false}); + +describe('BusStopInfoService tests', () => { + it('should be defined', () => { + expect(BusStopInfoService).toBeTruthy(); + }); + + describe('getBuses', () => { + it('should return a list of buses', () => { + const buses = service.getLines(); + + expect(buses).toHaveLength(2); + expect(buses).toMatchObject([ + { + lineNumber: '803010', + description: 'Tucapel', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: '', + arrivals: [ + { + carPlate: 'RPDA-98', + planned: '', + estimatedGPS: '15:08', + distanceGPS: '1.0 KM', + }, + { + carPlate: 'WYXYZ-22', + planned: '', + estimatedGPS: '15:42', + distanceGPS: '5.0 KM', + }, + { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }, + ], + }, + { + lineNumber: '5487', + description: 'Centauro', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: 'Sin info. GPS, la informacion es estimada', + arrivals: [ + { + carPlate: 'PLKJ-32', + planned: '15:13', + estimatedGPS: '15:13', + distanceGPS: '', + }, + { + carPlate: 'GHLK-11', + planned: '15:39', + estimatedGPS: '15:39', + distanceGPS: '', + }, + { + carPlate: 'DFQW-55', + planned: '17:22', + estimatedGPS: '17:22', + distanceGPS: '', + }, + ], + }, + ]); + }); + }); + + it('should return a bus by lineNumber', () => { + const bus = service.getLinesByNumber('803010'); + + expect(bus).toMatchObject({ + lineNumber: '803010', + description: 'Tucapel', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: '', + arrivals: [ + { + carPlate: 'RPDA-98', + planned: '', + estimatedGPS: '15:08', + distanceGPS: '1.0 KM', + }, + { + carPlate: 'WYXYZ-22', + planned: '', + estimatedGPS: '15:42', + distanceGPS: '5.0 KM', + }, + { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }, + ], + }); + }); + + describe('pruneBusList', () => { + it('should return a list of buses', () => { + const prunedList = service.pruneBusList(0, 3); + + expect(prunedList).toHaveLength(2); + expect(prunedList).toMatchObject([ + { + lineNumber: '803010', + description: 'Tucapel', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: '', + arrivals: [ + { + carPlate: 'RPDA-98', + planned: '', + estimatedGPS: '15:08', + distanceGPS: '1.0 KM', + }, + { + carPlate: 'WYXYZ-22', + planned: '', + estimatedGPS: '15:42', + distanceGPS: '5.0 KM', + }, + { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }, + ], + }, + { + lineNumber: '5487', + description: 'Centauro', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: 'Sin info. GPS, la informacion es estimada', + arrivals: [ + { + carPlate: 'PLKJ-32', + planned: '15:13', + estimatedGPS: '15:13', + distanceGPS: '', + }, + { + carPlate: 'GHLK-11', + planned: '15:39', + estimatedGPS: '15:39', + distanceGPS: '', + }, + { + carPlate: 'DFQW-55', + planned: '17:22', + estimatedGPS: '17:22', + distanceGPS: '', + }, + ], + }, + ]); + }); + }); + + describe('getNextArraival', () => { + beforeEach(() => { + jest.useFakeTimers({legacyFakeTimers: false}); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + it('should return next arraival', () => { + jest.setSystemTime(new Date('2024-11-25T16:33:37').getTime()); + + const nextArraival = service.getNextArraival('803010'); + + expect(nextArraival).toMatchObject({ + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }); + }); + + it('should throw an error if not arraival found', () => { + jest.setSystemTime(new Date('2024-11-25T20:33:37').getTime()); + + expect(() => { + service.getNextArraival('803010'); + }).toThrow('No next arrival'); + }); + }); + + describe('isArraivalTimeBetween tests', () => { + beforeEach(() => { + jest.useFakeTimers({legacyFakeTimers: false}); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + it('should return < a 3 minutos', () => { + jest.setSystemTime(new Date('2024-11-25T17:17:37').getTime()); + const arraival = { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }; + + const arraivalTimeText = service.checkArraivalTime(arraival); + + expect(arraivalTimeText).toStrictEqual('< a 3 minutos'); + }); + + it('should return Entre 3 a 5 minutos', () => { + jest.setSystemTime(new Date('2024-11-25T17:14:59').getTime()); + const arraival = { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }; + + const arraivalTimeText = service.checkArraivalTime(arraival); + + expect(arraivalTimeText).toStrictEqual('Entre 3 a 5 minutos'); + }); + + it('should return Menos de 10 minutos', () => { + jest.setSystemTime(new Date('2024-11-25T17:09:37').getTime()); + const arraival = { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }; + + const arraivalTimeText = service.checkArraivalTime(arraival); + + expect(arraivalTimeText).toStrictEqual('Menos de 10 minutos'); + }); + + it('should return Más de 10 minutos', () => { + jest.setSystemTime(new Date('2024-11-25T17:00:37').getTime()); + const arraival = { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '17:18', + distanceGPS: '13.4 KM', + }; + + const arraivalTimeText = service.checkArraivalTime(arraival); + + expect(arraivalTimeText).toStrictEqual('Más de 10 minutos'); + }); + }); + + describe('getLineNumberFromDescription tests', () => { + it('should return a list of numbers', () => { + const numbers = service.getLineNumberFromDescription('10N'); + + expect(numbers).toBe('10'); + }); + + it('should throw an error if no numbers found', () => { + expect(() => { + service.getLineNumberFromDescription('N'); + }).toThrow('No numbers found'); + }); + }); + + describe('getLineLetterFromDescription tests', () => { + it('should return a list of letters', () => { + const letters = service.getLineLetterFromDescription('10N'); + + expect(letters).toBe('N'); + }); + + it('should throw an error if no letters found', () => { + expect(() => { + service.getLineLetterFromDescription('10'); + }).toThrow('No letters found'); + }); + }); + + describe('getLineDescription tests', () => { + it('should return a line description', () => { + const description = service.getLineDescription( + '10K', + 'Vía Láctea 10K - Leonera', + ); + + expect(description).toBe('Vía Láctea - Leonera'); + }); + }); +}); diff --git a/src/domain/services/BusStopInfoService.ts b/src/domain/services/BusStopInfoService.ts new file mode 100644 index 0000000..69beef0 --- /dev/null +++ b/src/domain/services/BusStopInfoService.ts @@ -0,0 +1,102 @@ +import moment from 'moment'; +import LineDetail from '../repositories/LineDetail'; +import {getHours, getMinutes, getSeconds} from '../../utils/DateUtils'; +import Arrival from '../repositories/Arrival'; + +// TODO: Change to a better name or split ? +class BusStopInfoService { + private lines: LineDetail[]; + + constructor(lines: LineDetail[]) { + this.lines = lines; + } + + getLines(): LineDetail[] { + return this.lines; + } + + getLinesByNumber(lineNumber: string): LineDetail { + const line = this.lines.find(bus => bus.lineNumber === lineNumber); + + if (!line) { + throw new Error('No buses found'); + } + + return line; + } + + pruneBusList(start: number, howMany: number): LineDetail[] { + const end = start + howMany; + return this.lines.slice(start, end); + } + + getNextArraival(lineNumber: string): Arrival { + const currentTime = moment(); + + const nextArraival = this.getLinesByNumber(lineNumber).arrivals.find( + arrival => { + const compareTime = moment(); + compareTime.set('hour', getHours(arrival.estimatedGPS)); + compareTime.set('minute', getMinutes(arrival.estimatedGPS)); + compareTime.set('second', getSeconds(arrival.estimatedGPS)); + + if (compareTime.isAfter(currentTime)) { + return arrival; + } + }, + ); + + if (!nextArraival) { + throw new Error('No next arrival'); + } + + return nextArraival; + } + + checkArraivalTime(arrival: Arrival): string { + const compareTime = moment(); + compareTime.set('hour', getHours(arrival.estimatedGPS)); + compareTime.set('minute', getMinutes(arrival.estimatedGPS)); + compareTime.set('second', getSeconds(arrival.estimatedGPS)); + + const now = moment(); + const diffInMinutes = compareTime.diff(now, 'minutes'); + + if (diffInMinutes <= 3) { + return '< a 3 minutos'; + } else if (diffInMinutes > 3 && diffInMinutes < 6) { + return 'Entre 3 a 5 minutos'; + } else if (diffInMinutes >= 6 && diffInMinutes <= 10) { + return 'Menos de 10 minutos'; + } else { + return 'Más de 10 minutos'; + } + } + + getLineNumberFromDescription(description: string): string { + const numbers = description.match(/\d+/g); + + if (!numbers) { + throw new Error('No numbers found'); + } + + return numbers.join(''); + } + + getLineLetterFromDescription(description: string): string { + const letters = description.match(/[a-zA-Z]+/g); + + if (!letters) { + throw new Error('No letters found'); + } + + return letters.join(''); + } + + getLineDescription(description: string, line: string): string { + const space = ' '; // this is to eliminate the extra space left when applying the replace. + return line.replace(`${space}${description}`, ''); + } +} + +export default BusStopInfoService; diff --git a/src/infraestructure/api/clients/AuthAPI.ts b/src/infraestructure/api/clients/AuthAPI.ts new file mode 100644 index 0000000..be414aa --- /dev/null +++ b/src/infraestructure/api/clients/AuthAPI.ts @@ -0,0 +1,30 @@ +import axios from 'axios'; +import AuthResponse from '../models/AuthResponse'; +import AuthRequest from '../models/AuthRequest'; + +class AuthAPI { + private baseURL: string; + + constructor(baseURL: string) { + this.baseURL = baseURL; + } + + async auth({username, password}: AuthRequest): Promise { + if (!username) { + throw new Error('username is required'); + } + + if (!password) { + throw new Error('password is required'); + } + + const {data} = await axios.post(`${this.baseURL}/api/auth/`, { + username, + password, + }); + + return data; + } +} + +export default AuthAPI; diff --git a/src/infraestructure/api/clients/DevicesAPI.ts b/src/infraestructure/api/clients/DevicesAPI.ts new file mode 100644 index 0000000..da8865f --- /dev/null +++ b/src/infraestructure/api/clients/DevicesAPI.ts @@ -0,0 +1,72 @@ +import axios from 'axios'; +import DeviceRequest from '../models/DeviceRequest'; +import {GetInfoDeviceResponse} from '../models/GetInfoDeviceResponse'; +import WhoamiResponse from '../models/WhoamiResponse'; +import responseDevicesMock from './response-devices-mock.json'; + +const KEYAUTORIZACION = 'token'; + +class DevicesAPI { + private baseURL: string; + + constructor(baseURL: string) { + this.baseURL = baseURL; + } + + async whoami({token, deviceId}: DeviceRequest): Promise { + if (!token) { + throw new Error('token is required'); + } + + if (!deviceId) { + throw new Error('deviceId is required'); + } + const {data} = await axios.post( + `${this.baseURL}/api/dispositivos/whoami/`, + { + whoami: {idDispositivo: deviceId, KeyAuthorizacion: KEYAUTORIZACION}, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + }, + ); + + return data; + } + + async getInfoDevice({ + token, + deviceId, + }: DeviceRequest): Promise { + if (!token) { + throw new Error('token is required'); + } + + if (!deviceId) { + throw new Error('deviceId is required'); + } + + const {data} = await axios.post( + `${this.baseURL}/api/dispositivos/getInfoDevice/`, + { + GetInfoDevice: { + idDispositivo: deviceId, + KeyAuthorizacion: KEYAUTORIZACION, + }, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + }, + ); + + return data; // rial implementation + + // return responseDevicesMock; // mock implementation + } +} + +export default DevicesAPI; diff --git a/src/infraestructure/api/clients/__tests__/AuthAPI.spec.ts b/src/infraestructure/api/clients/__tests__/AuthAPI.spec.ts new file mode 100644 index 0000000..48c76b4 --- /dev/null +++ b/src/infraestructure/api/clients/__tests__/AuthAPI.spec.ts @@ -0,0 +1,59 @@ +import axios from 'axios'; +import MockAdapter from 'axios-mock-adapter'; +import AuthAPI from '../AuthAPI'; + +const mockAdapter = new MockAdapter(axios); + +const BASE_URL = 'https://test.cl'; + +const authAPI = new AuthAPI(BASE_URL); + +describe('AuthAPI tests', () => { + it('should be defined', () => { + expect(AuthAPI).toBeDefined(); + }); + + it('should return a token', async () => { + mockAdapter.onPost(`${BASE_URL}/api/auth/`).reply(200, { + token: 'token', + }); + + const token = await authAPI.auth({ + username: 'username', + password: 'password', + }); + + expect(token).toMatchObject({token: 'token'}); + }); + + it('should throw an error if username is not provided', async () => { + await expect( + authAPI.auth({ + password: 'password', + username: '', + }), + ).rejects.toThrow('username is required'); + }); + + it('should throw an error if password is not provided', async () => { + await expect( + authAPI.auth({ + username: 'username', + password: '', + }), + ).rejects.toThrow('password is required'); + }); + + it('should return an error if it fails to request a token', async () => { + mockAdapter.onPost(`${BASE_URL}/api/auth/`).reply(400, { + error: 'error', + }); + + await expect( + authAPI.auth({ + username: 'username', + password: 'password', + }), + ).rejects.toThrow('Request failed with status code 400'); + }); +}); diff --git a/src/infraestructure/api/clients/__tests__/DeviceAPI.spec.ts b/src/infraestructure/api/clients/__tests__/DeviceAPI.spec.ts new file mode 100644 index 0000000..2e6d833 --- /dev/null +++ b/src/infraestructure/api/clients/__tests__/DeviceAPI.spec.ts @@ -0,0 +1,107 @@ +import axios from 'axios'; +import MockAdapter from 'axios-mock-adapter'; +import DevicesAPI from '../DevicesAPI'; + +const mockAdapter = new MockAdapter(axios); + +const BASE_URL = 'https://test.cl'; + +const deviceAPI = new DevicesAPI(BASE_URL); + +describe('devices tests', () => { + it('should be defined', () => { + expect(deviceAPI).toBeDefined(); + }); + + describe('whoami', () => { + it('should return stop information by device id', async () => { + mockAdapter.onPost(`${BASE_URL}/api/dispositivos/whoami/`).reply(200, { + stopNumber: 'stopNumber', + stopName: 'stopName', + }); + + const response = await deviceAPI.whoami({ + token: 'token', + deviceId: 'deviceId', + }); + + expect(response).toMatchObject({ + stopNumber: 'stopNumber', + stopName: 'stopName', + }); + }); + + it('should throw an error if token is not provided', async () => { + await expect( + deviceAPI.whoami({token: '', deviceId: 'deviceId'}), + ).rejects.toThrow('token is required'); + }); + + it('should throw an error if deviceId is not provided', async () => { + await expect( + deviceAPI.whoami({token: 'token', deviceId: ''}), + ).rejects.toThrow('deviceId is required'); + }); + + it('should return an error if it fails to request stop information', async () => { + mockAdapter.onPost(`${BASE_URL}/api/dispositivos/whoami/`).reply(400, { + error: 'error', + }); + + await expect( + deviceAPI.whoami({ + token: 'token', + deviceId: 'deviceId', + }), + ).rejects.toThrow('Request failed with status code 400'); + }); + }); + + describe('getInfoDevice', () => { + it('should return stop information by device id', async () => { + mockAdapter + .onPost(`${BASE_URL}/api/dispositivos/getInfoDevice/`) + .reply(200, { + stopNumber: 'stopNumber', + stopName: 'stopName', + }); + + const response = await deviceAPI.getInfoDevice({ + token: 'token', + deviceId: 'deviceId', + }); + + expect(response).toMatchObject({ + stopNumber: 'stopNumber', + stopName: 'stopName', + }); + }); + + it('should throw an error if token is not provided', async () => { + await expect( + deviceAPI.getInfoDevice({token: '', deviceId: 'deviceId'}), + ).rejects.toThrow('token is required'); + }); + + it('should throw an error if deviceId is not provided', async () => { + await expect( + deviceAPI.getInfoDevice({token: 'token', deviceId: ''}), + ).rejects.toThrow('deviceId is required'); + }); + + it('should return an error if it fails to request stop information', async () => { + mockAdapter + .onPost(`${BASE_URL}/api/dispositivos/getInfoDevice/`) + .reply(400, { + error: 'error', + }); + + await expect( + deviceAPI.getInfoDevice({ + token: 'token', + deviceId: 'deviceId', + }), + ).rejects.toThrow('Request failed with status code 400'); + }); + }); +}); diff --git a/src/infraestructure/api/clients/response-devices-mock.json b/src/infraestructure/api/clients/response-devices-mock.json new file mode 100644 index 0000000..ef4cb7c --- /dev/null +++ b/src/infraestructure/api/clients/response-devices-mock.json @@ -0,0 +1,1368 @@ +{ + "GetInfoDeviceResponse": { + "DetalleLineas": [ + { + "Linea": "Vía Láctea 10K - Leonera", + "Descripcion": "10K", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "RW8962", + "Planificada": null, + "EstimadaGPS": "21:16:25", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DKSZ83", + "Planificada": null, + "EstimadaGPS": "21:28:58", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Láctea 10L - Los Bloques", + "Descripcion": "10L", + "TipoLocomocion": null, + "colorFondo": "4e0963", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "GCJW93", + "Planificada": null, + "EstimadaGPS": "20:56:01", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "KLJL34", + "Planificada": null, + "EstimadaGPS": "21:10:21", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CWCK88", + "Planificada": null, + "EstimadaGPS": "21:30:40", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "XF4036", + "Planificada": null, + "EstimadaGPS": "21:36:28", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Láctea 10M - Los Bloques", + "Descripcion": "10M", + "TipoLocomocion": null, + "colorFondo": "ad0101", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "DRFP53", + "Planificada": null, + "EstimadaGPS": "21:20:34", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Láctea 10N - Los Bloques", + "Descripcion": "10N", + "TipoLocomocion": null, + "colorFondo": "b10086", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "CPFC27", + "Planificada": null, + "EstimadaGPS": "20:36:30", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HFXZ79", + "Planificada": null, + "EstimadaGPS": "20:37:46", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FWJX76", + "Planificada": null, + "EstimadaGPS": "20:43:33", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DPZZ52", + "Planificada": null, + "EstimadaGPS": "21:13:25", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DYFY38", + "Planificada": null, + "EstimadaGPS": "21:30:33", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HYYX77", + "Planificada": null, + "EstimadaGPS": "21:37:31", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "RW9475", + "Planificada": null, + "EstimadaGPS": "21:39:04", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Láctea 10O - Pobl. Porvenir", + "Descripcion": "10O", + "TipoLocomocion": null, + "colorFondo": "0d7215", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "JCHL93", + "Planificada": null, + "EstimadaGPS": "20:45:13", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "XU2768", + "Planificada": null, + "EstimadaGPS": "21:17:44", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CSYZ74", + "Planificada": null, + "EstimadaGPS": "21:33:02", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Láctea 10P - Leonera", + "Descripcion": "10P", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "BTST46", + "Planificada": null, + "EstimadaGPS": "20:38:33", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "RLKB76", + "Planificada": null, + "EstimadaGPS": "21:27:15", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Futuro 11Q - Los Bloques", + "Descripcion": "11Q", + "TipoLocomocion": null, + "colorFondo": "ad0101", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "LJKK86", + "Planificada": null, + "EstimadaGPS": "21:06:21", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "XW8423", + "Planificada": null, + "EstimadaGPS": "21:11:44", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HZRP10", + "Planificada": null, + "EstimadaGPS": "21:22:11", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Futuro 11R - Porvenir", + "Descripcion": "11R", + "TipoLocomocion": null, + "colorFondo": "b10086", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "CSYR79", + "Planificada": null, + "EstimadaGPS": "20:55:10", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "BZLY10", + "Planificada": null, + "EstimadaGPS": "21:10:58", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "RYHY66", + "Planificada": null, + "EstimadaGPS": "21:18:11", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "XZ9717", + "Planificada": null, + "EstimadaGPS": "21:30:42", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Siglo XXI 13S - Leonera", + "Descripcion": "13S", + "TipoLocomocion": null, + "colorFondo": "ce5504", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "FSYW10", + "Planificada": null, + "EstimadaGPS": "20:38:24", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FYDV68", + "Planificada": null, + "EstimadaGPS": "20:38:34", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HHBP53", + "Planificada": null, + "EstimadaGPS": "20:39:30", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "LHWX56", + "Planificada": null, + "EstimadaGPS": "20:40:11", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FDCB32", + "Planificada": null, + "EstimadaGPS": "20:47:29", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "WV6705", + "Planificada": null, + "EstimadaGPS": "20:56:02", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CVTG93", + "Planificada": null, + "EstimadaGPS": "21:02:20", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DPZZ21", + "Planificada": null, + "EstimadaGPS": "21:18:02", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HYCZ31", + "Planificada": null, + "EstimadaGPS": "21:19:13", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FZWC15", + "Planificada": null, + "EstimadaGPS": "21:21:56", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Chiguayante Sur 14T - Coquimbo", + "Descripcion": "14T", + "TipoLocomocion": null, + "colorFondo": "ce5504", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "FCBR88", + "Planificada": null, + "EstimadaGPS": "20:38:25", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DRTH95", + "Planificada": null, + "EstimadaGPS": "20:55:26", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DCRD27", + "Planificada": null, + "EstimadaGPS": "21:09:13", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CPHW48", + "Planificada": null, + "EstimadaGPS": "21:25:39", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Chiguayante Sur 14U - Los Altos", + "Descripcion": "14U", + "TipoLocomocion": null, + "colorFondo": "cc9b00", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "FDBY83", + "Planificada": null, + "EstimadaGPS": "20:36:31", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HFLS53", + "Planificada": null, + "EstimadaGPS": "20:37:14", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FFVP21", + "Planificada": null, + "EstimadaGPS": "20:39:44", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FKLS63", + "Planificada": null, + "EstimadaGPS": "20:40:00", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Universo 16K - Leonera", + "Descripcion": "16K", + "TipoLocomocion": null, + "colorFondo": "ce5504", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "BPDS42", + "Planificada": null, + "EstimadaGPS": "20:38:51", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "BJFK98", + "Planificada": null, + "EstimadaGPS": "21:02:49", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "GWZC19", + "Planificada": null, + "EstimadaGPS": "21:10:52", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "BHZY40", + "Planificada": null, + "EstimadaGPS": "21:18:39", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CZBW17", + "Planificada": null, + "EstimadaGPS": "21:32:02", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Vía Universo 16V - Leonera", + "Descripcion": "16V", + "TipoLocomocion": null, + "colorFondo": "ad0101", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "WK4163", + "Planificada": null, + "EstimadaGPS": "20:48:11", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "ZV6766", + "Planificada": null, + "EstimadaGPS": "21:17:45", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Expresos Chiguayante 17C - Leonera", + "Descripcion": "17C", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "DRTS98", + "Planificada": null, + "EstimadaGPS": "20:43:30", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "YG6214", + "Planificada": null, + "EstimadaGPS": "21:13:28", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Expresos Chiguayante 17W - Leonera", + "Descripcion": "17W", + "TipoLocomocion": null, + "colorFondo": "0d7215", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "HYCZ71", + "Planificada": null, + "EstimadaGPS": "20:36:23", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JXFY79", + "Planificada": null, + "EstimadaGPS": "20:47:02", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JHHJ90", + "Planificada": null, + "EstimadaGPS": "20:51:20", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "GWZC84", + "Planificada": null, + "EstimadaGPS": "21:18:00", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FVDC88", + "Planificada": null, + "EstimadaGPS": "21:18:39", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "LGVH69", + "Planificada": null, + "EstimadaGPS": "21:19:37", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Expresos Chiguayante 17X - Leonera", + "Descripcion": "17X", + "TipoLocomocion": null, + "colorFondo": "ce5504", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "DYSZ71", + "Planificada": null, + "EstimadaGPS": "20:35:52", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FCHP83", + "Planificada": null, + "EstimadaGPS": "20:50:21", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "BBGF22", + "Planificada": null, + "EstimadaGPS": "20:52:25", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FFVP27", + "Planificada": null, + "EstimadaGPS": "20:52:31", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "BBGL85", + "Planificada": null, + "EstimadaGPS": "20:56:31", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HYZD26", + "Planificada": null, + "EstimadaGPS": "21:02:00", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Buses Palomares 18Y - Hualqui", + "Descripcion": "18Y", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "LZZG48", + "Planificada": null, + "EstimadaGPS": "20:51:14", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Nueva Llacolén 20A - Boca Sur", + "Descripcion": "20A", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "HYYX24", + "Planificada": null, + "EstimadaGPS": "20:40:00", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "ZY4652", + "Planificada": null, + "EstimadaGPS": "21:00:25", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FPKV41", + "Planificada": null, + "EstimadaGPS": "21:20:51", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Nueva Llacolén 20M - San Pedro Costa", + "Descripcion": "20M", + "TipoLocomocion": null, + "colorFondo": "b10086", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "FXRL56", + "Planificada": null, + "EstimadaGPS": "20:45:32", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "RXFF50", + "Planificada": null, + "EstimadaGPS": "21:08:55", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "ZY3567", + "Planificada": null, + "EstimadaGPS": "21:14:25", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Riviera Biobío 21B - Candelaria", + "Descripcion": "21B", + "TipoLocomocion": null, + "colorFondo": "ce5504", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "KHSX95", + "Planificada": null, + "EstimadaGPS": "20:35:51", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HYVR34", + "Planificada": null, + "EstimadaGPS": "20:40:49", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "YT2138", + "Planificada": null, + "EstimadaGPS": "20:43:01", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Buses San Pedro 22D - Michaihue", + "Descripcion": "22D", + "TipoLocomocion": null, + "colorFondo": "b38800", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "FYDV31", + "Planificada": null, + "EstimadaGPS": "20:49:24", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "YR2002", + "Planificada": null, + "EstimadaGPS": "20:56:26", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Ruta Las Playas 30Q - Higueras", + "Descripcion": "30Q", + "TipoLocomocion": null, + "colorFondo": "0d7215", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "ZT1825", + "Planificada": null, + "EstimadaGPS": "20:38:58", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DCGT36", + "Planificada": null, + "EstimadaGPS": "20:52:56", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DJBB52", + "Planificada": null, + "EstimadaGPS": "21:17:48", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CJVG74", + "Planificada": null, + "EstimadaGPS": "21:27:27", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Ruta Las Playas 30R - Higueras", + "Descripcion": "30R", + "TipoLocomocion": null, + "colorFondo": "049684", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "DPZY91", + "Planificada": null, + "EstimadaGPS": "20:38:37", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HXKL13", + "Planificada": null, + "EstimadaGPS": "20:45:06", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JWXV66", + "Planificada": null, + "EstimadaGPS": "21:03:46", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JRZZ67", + "Planificada": null, + "EstimadaGPS": "21:23:56", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Ruta del Mar 31D - Lobos Viejos", + "Descripcion": "31D", + "TipoLocomocion": null, + "colorFondo": "ad0101", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "CFTD78", + "Planificada": null, + "EstimadaGPS": "20:39:41", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CLFX61", + "Planificada": null, + "EstimadaGPS": "20:44:07", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DDVZ66", + "Planificada": null, + "EstimadaGPS": "21:20:41", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Ruta del Mar 32E - Lobos Viejos", + "Descripcion": "32E", + "TipoLocomocion": null, + "colorFondo": "b10086", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "CTDG26", + "Planificada": null, + "EstimadaGPS": "20:41:14", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FFTL50", + "Planificada": null, + "EstimadaGPS": "21:17:51", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CFWC16", + "Planificada": null, + "EstimadaGPS": "21:36:01", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Ruta del Mar 32J - Lobos Viejos", + "Descripcion": "32J", + "TipoLocomocion": null, + "colorFondo": "598200", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "HFBC38", + "Planificada": null, + "EstimadaGPS": "20:36:34", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FYBB73", + "Planificada": null, + "EstimadaGPS": "20:58:20", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "BZPT67", + "Planificada": null, + "EstimadaGPS": "21:29:34", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Las Golondrinas 40G - Candelaria", + "Descripcion": "40G", + "TipoLocomocion": null, + "colorFondo": "ad0101", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "DWHG74", + "Planificada": null, + "EstimadaGPS": "20:36:34", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "BLDT29", + "Planificada": null, + "EstimadaGPS": "20:42:28", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JVTK78", + "Planificada": null, + "EstimadaGPS": "21:06:34", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FXRL49", + "Planificada": null, + "EstimadaGPS": "21:19:39", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Buses Hualpencillo 42F - Concepción", + "Descripcion": "42F", + "TipoLocomocion": null, + "colorFondo": "ce5504", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "RLLV59", + "Planificada": null, + "EstimadaGPS": "20:38:15", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "BBVC71", + "Planificada": null, + "EstimadaGPS": "20:51:04", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "WK7487", + "Planificada": null, + "EstimadaGPS": "21:09:43", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FWTT75", + "Planificada": null, + "EstimadaGPS": "21:27:19", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Base Naval 56O - Pta. Los Leones", + "Descripcion": "56O", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "HZRP11", + "Planificada": null, + "EstimadaGPS": "20:38:06", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "WW4900", + "Planificada": null, + "EstimadaGPS": "20:38:53", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "KCFB59", + "Planificada": null, + "EstimadaGPS": "20:53:02", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Denavi Sur 57Y - Cosmito", + "Descripcion": "57Y", + "TipoLocomocion": null, + "colorFondo": "ce5504", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "DBHL17", + "Planificada": null, + "EstimadaGPS": "20:56:20", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FCJS56", + "Planificada": null, + "EstimadaGPS": "21:13:07", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Mi Expreso 62M - San Vicente", + "Descripcion": "62M", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "HZGX71", + "Planificada": null, + "EstimadaGPS": "20:38:39", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FFVP83", + "Planificada": null, + "EstimadaGPS": "20:43:41", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Las Bahías 70I - Centinela", + "Descripcion": "70I", + "TipoLocomocion": null, + "colorFondo": "613FA6", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "JRZZ56", + "Planificada": null, + "EstimadaGPS": "20:36:42", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JXJG49", + "Planificada": null, + "EstimadaGPS": "20:50:09", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FHZB99", + "Planificada": null, + "EstimadaGPS": "20:52:19", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "KFTK39", + "Planificada": null, + "EstimadaGPS": "20:53:14", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "KVJC80", + "Planificada": null, + "EstimadaGPS": "21:14:24", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Las Bahías 70J - Los Copihues", + "Descripcion": "70J", + "TipoLocomocion": null, + "colorFondo": "b38800", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "RTZT30", + "Planificada": null, + "EstimadaGPS": "20:44:12", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "CXSS25", + "Planificada": null, + "EstimadaGPS": "20:50:43", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DPZY99", + "Planificada": null, + "EstimadaGPS": "20:52:14", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Las Bahías 70K - Los Copihues", + "Descripcion": "70K", + "TipoLocomocion": null, + "colorFondo": "0d7215", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "BKKS46", + "Planificada": null, + "EstimadaGPS": "20:56:25", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Pedro de Valdivia 72K - Lonco", + "Descripcion": "72K", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "RLVZ65", + "Planificada": null, + "EstimadaGPS": "20:38:25", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "RVWC96", + "Planificada": null, + "EstimadaGPS": "20:56:36", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Las Galaxias 80H - Hualqui", + "Descripcion": "80H", + "TipoLocomocion": null, + "colorFondo": "0071ca", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "GJLW52", + "Planificada": null, + "EstimadaGPS": "20:39:25", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DLDW43", + "Planificada": null, + "EstimadaGPS": "20:49:45", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HFLR38", + "Planificada": null, + "EstimadaGPS": "21:11:22", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HYCZ20", + "Planificada": null, + "EstimadaGPS": "21:26:46", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Las Galaxias 80Q - Hualqui", + "Descripcion": "80Q", + "TipoLocomocion": null, + "colorFondo": "ce5504", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "DKYR64", + "Planificada": null, + "EstimadaGPS": "20:38:06", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "GYGK16", + "Planificada": null, + "EstimadaGPS": "20:40:37", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JSBB39", + "Planificada": null, + "EstimadaGPS": "20:59:11", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HJXW59", + "Planificada": null, + "EstimadaGPS": "21:17:13", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Las Galaxias 80Z - Valle Piedra", + "Descripcion": "80Z", + "TipoLocomocion": null, + "colorFondo": "0d7215", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "GSRZ32", + "Planificada": null, + "EstimadaGPS": "20:40:04", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FLVX57", + "Planificada": null, + "EstimadaGPS": "20:41:04", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DJJH69", + "Planificada": null, + "EstimadaGPS": "20:49:17", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HJXW56", + "Planificada": null, + "EstimadaGPS": "20:54:41", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "RFDS28", + "Planificada": null, + "EstimadaGPS": "21:08:28", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DPGK78", + "Planificada": null, + "EstimadaGPS": "21:10:49", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "DPGK86", + "Planificada": null, + "EstimadaGPS": "21:23:49", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "FTPC75", + "Planificada": null, + "EstimadaGPS": "21:30:39", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Nueva Sol Yet 90X - Parque Central", + "Descripcion": "90X", + "TipoLocomocion": null, + "colorFondo": "ad0101", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "YE3093", + "Planificada": null, + "EstimadaGPS": "20:40:10", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JVXY87", + "Planificada": null, + "EstimadaGPS": "20:45:13", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "JPRY91", + "Planificada": null, + "EstimadaGPS": "20:49:49", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "HVLT12", + "Planificada": null, + "EstimadaGPS": "20:53:22", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + }, + { + "Linea": "Biobús B02 - Centro Concepción", + "Descripcion": "B02", + "TipoLocomocion": null, + "colorFondo": "0d7215", + "colorLetra": "ffffff", + "Llegadas": [ + { + "patente": "KHXV29", + "Planificada": null, + "EstimadaGPS": "20:43:11", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "WF1304", + "Planificada": null, + "EstimadaGPS": "21:02:10", + "DistanciaGPS": null, + "Mensajelinea": null + }, + { + "patente": "STJZ94", + "Planificada": null, + "EstimadaGPS": "21:15:00", + "DistanciaGPS": null, + "Mensajelinea": null + } + ] + } + ], + "MensajeParadero": "No considerar, uso futuro" + } +} diff --git a/src/infraestructure/api/models/AuthRequest.ts b/src/infraestructure/api/models/AuthRequest.ts new file mode 100644 index 0000000..7b02f71 --- /dev/null +++ b/src/infraestructure/api/models/AuthRequest.ts @@ -0,0 +1,6 @@ +interface AuthRequest { + username: string; + password: string; +} + +export default AuthRequest; diff --git a/src/infraestructure/api/models/AuthResponse.ts b/src/infraestructure/api/models/AuthResponse.ts new file mode 100644 index 0000000..1438df0 --- /dev/null +++ b/src/infraestructure/api/models/AuthResponse.ts @@ -0,0 +1,5 @@ +interface AuthResponse { + token: string; +} + +export default AuthResponse; diff --git a/src/infraestructure/api/models/DetalleLinea.ts b/src/infraestructure/api/models/DetalleLinea.ts new file mode 100644 index 0000000..21d300c --- /dev/null +++ b/src/infraestructure/api/models/DetalleLinea.ts @@ -0,0 +1,13 @@ +import Llegada from './Llegada'; + +interface DetalleLinea { + Linea: string; + Descripcion: string; + TipoLocomocion: number; + colorFondo: string; + colorLetra: string; + Llegadas: Llegada[]; + Mensajelinea: string; +} + +export default DetalleLinea; diff --git a/src/infraestructure/api/models/DeviceInfoResponse.ts b/src/infraestructure/api/models/DeviceInfoResponse.ts new file mode 100644 index 0000000..5a209da --- /dev/null +++ b/src/infraestructure/api/models/DeviceInfoResponse.ts @@ -0,0 +1,8 @@ +import LineDetail from './LineDetail'; + +interface DeviceInfoResponse { + stopMessage: string; + lineDetails: LineDetail[]; +} + +export default DeviceInfoResponse; diff --git a/src/infraestructure/api/models/DeviceRequest.ts b/src/infraestructure/api/models/DeviceRequest.ts new file mode 100644 index 0000000..df37ca9 --- /dev/null +++ b/src/infraestructure/api/models/DeviceRequest.ts @@ -0,0 +1,6 @@ +interface DeviceRequest { + token: string; + deviceId: string; +} + +export default DeviceRequest; diff --git a/src/infraestructure/api/models/GetInfoDeviceResponse.ts b/src/infraestructure/api/models/GetInfoDeviceResponse.ts new file mode 100644 index 0000000..45588a4 --- /dev/null +++ b/src/infraestructure/api/models/GetInfoDeviceResponse.ts @@ -0,0 +1,8 @@ +import DetalleLinea from './DetalleLinea'; + +export interface GetInfoDeviceResponse { + GetInfoDeviceResponse: { + DetalleLineas: DetalleLinea[]; + MensajeParadero: string; + }; +} diff --git a/src/infraestructure/api/models/Llegada.ts b/src/infraestructure/api/models/Llegada.ts new file mode 100644 index 0000000..4df74a5 --- /dev/null +++ b/src/infraestructure/api/models/Llegada.ts @@ -0,0 +1,8 @@ +interface Llegada { + Patente: string; + Planificada: string; + EstimadaGPS: string; + DistanciaGPS: string; +} + +export default Llegada; diff --git a/src/infraestructure/api/models/WhoamiResponse.ts b/src/infraestructure/api/models/WhoamiResponse.ts new file mode 100644 index 0000000..b7ac3b1 --- /dev/null +++ b/src/infraestructure/api/models/WhoamiResponse.ts @@ -0,0 +1,8 @@ +interface WhoamiResponse { + WhoamiResponse: { + NroParadero: string; + NombreParadero: string; + }; +} + +export default WhoamiResponse; diff --git a/src/infraestructure/consts/urls.ts b/src/infraestructure/consts/urls.ts new file mode 100644 index 0000000..c8eda4e --- /dev/null +++ b/src/infraestructure/consts/urls.ts @@ -0,0 +1,6 @@ +const BASE_URL = 'https://transporte.hz.kursor.cl'; +const LOGIN_METHOD = '/api/auth/'; +const WHOAMI_METHOD = '/api/dispositivos/whoami/'; +const INFO_DEVICE_METHOD = '/api/dispositivos/getInfoDevice/'; + +export {BASE_URL, LOGIN_METHOD, WHOAMI_METHOD, INFO_DEVICE_METHOD}; diff --git a/src/infraestructure/hooks/__tests__/useDevices.spec.ts b/src/infraestructure/hooks/__tests__/useDevices.spec.ts new file mode 100644 index 0000000..0e14db7 --- /dev/null +++ b/src/infraestructure/hooks/__tests__/useDevices.spec.ts @@ -0,0 +1,13 @@ +describe('useDevices tests', () => { + it('should be defined', () => { + expect(true).toBeTruthy(); + }); + + it('should return stop information', () => { + expect(true).toBeTruthy(); + }); + + it('should return a list of devices', () => { + expect(true).toBeTruthy(); + }); +}); diff --git a/src/infraestructure/hooks/__tests__/useLogin.spec.ts b/src/infraestructure/hooks/__tests__/useLogin.spec.ts new file mode 100644 index 0000000..bb8af15 --- /dev/null +++ b/src/infraestructure/hooks/__tests__/useLogin.spec.ts @@ -0,0 +1,9 @@ +describe('useLogin tests', () => { + it('should be defined', () => { + expect(true).toBeTruthy(); + }); + + it('should return a token', () => { + expect(true).toBeTruthy(); + }); +}); diff --git a/src/infraestructure/hooks/useDevices.ts b/src/infraestructure/hooks/useDevices.ts new file mode 100644 index 0000000..c7af1f5 --- /dev/null +++ b/src/infraestructure/hooks/useDevices.ts @@ -0,0 +1,212 @@ +import {useCallback, useEffect, useMemo, useState} from 'react'; +import DevicesRepositoryImpl from '../repositories/DevicesRepositoryImpl'; +import DevicesAPI from '../api/clients/DevicesAPI'; +import AuthRepositoryImpl from '../repositories/AuthRepositoryImpl'; +import AuthAPI from '../api/clients/AuthAPI'; +import LineDetail from '../../domain/repositories/LineDetail'; + +import {Line} from '../../presentation/screens/BusStopInfoScreen'; +import BusStopInfoService from '../../domain/services/BusStopInfoService'; + +export enum Status { + LOADING = 'LOADING', + SUCCESS = 'SUCCESS', + ERROR = 'ERROR', +} + +interface State { + status: Status; + lines: LineDetail[]; + displayedLines: Line[]; + currentIndex: number; + stopMessage: string; + stopName: string; +} + +const DEVICE_ID = 'TTM543870hyt'; +const BASE_URL = 'https://transporte.hz.kursor.cl'; +const USER = 'usuario1'; +const PASSWORD = 'usuario1'; + +const useDevices = () => { + const [state, setState] = useState({ + status: Status.LOADING, + currentIndex: 0, + stopMessage: '', + displayedLines: [], + lines: [], + stopName: 'Sin información - Sin información', + }); + + const baseUrl = BASE_URL; // TODO: remoteconfig ? + const username = USER; + const password = PASSWORD; + const deviceApi = useMemo(() => new DevicesAPI(baseUrl), [baseUrl]); + const authApi = useMemo(() => new AuthAPI(baseUrl), [baseUrl]); + const devicesRepository = useMemo( + () => new DevicesRepositoryImpl(deviceApi), + [deviceApi], + ); + const authRepository = useMemo( + () => new AuthRepositoryImpl(authApi), + [authApi], + ); + + const setDisplayedLines = useCallback( + (lineDetails: LineDetail[], stopMessage: string, stopName: string) => { + if (!lineDetails || !stopName) { + return; + } + + try { + let busStopInfoService = new BusStopInfoService(lineDetails); + + const linesWithArrivals = lineDetails + .map(line => { + try { + busStopInfoService.getNextArraival(line.lineNumber); + + return line; + } catch (error) { + return undefined; + } + }) + .filter((line): line is LineDetail => line !== undefined); + + busStopInfoService = new BusStopInfoService(linesWithArrivals); + + const linesToDisplay: Line[] = busStopInfoService + .pruneBusList(state.currentIndex, 21) // result 7 * 3 + .map(line => { + try { + const nextArraival = busStopInfoService.getNextArraival( + line.lineNumber, + ); + + const estimatedArrivalTimeInMinutes = + busStopInfoService.checkArraivalTime(nextArraival); + + const lineLetter = + busStopInfoService.getLineLetterFromDescription( + line.description, + ); + const lineNumber = + busStopInfoService.getLineNumberFromDescription( + line.description, + ); + + const lineDescription = busStopInfoService.getLineDescription( + line.description, + line.lineNumber, + ); + + return { + backgroundColor: line.backgroundColor, + estimatedArrivalTimeInMinutes, + letterColor: line.letterColor, + lineLetter, + lineNumber, + lineDescription, + }; + } catch (error) { + return undefined; + } + }) + .filter((line): line is Line => line !== undefined); + + setState(prevState => { + const displayedLines = + linesToDisplay.length === 0 + ? prevState.displayedLines + : linesToDisplay; + + return { + ...prevState, + displayedLines, + stopMessage, + stopName, + lines: lineDetails, + }; + }); + } catch (error: unknown) { + setState(prevState => ({ + ...prevState, + status: Status.ERROR, + })); + } + }, + [state.currentIndex], + ); + + useEffect(() => { + const init = async () => { + try { + const token = await authRepository.auth({username, password}); + + const {lineDetails, stopMessage} = + await devicesRepository.getDeviceInfo({ + deviceId: DEVICE_ID, + token, + }); + + const {stopName} = await devicesRepository.whoAmI({ + deviceId: DEVICE_ID, + token, + }); + + if (!lineDetails) { + setState((prevState: State) => ({ + ...prevState, + status: Status.ERROR, + })); + return; + } + + setState((prevState: State) => ({ + ...prevState, + ...{ + lines: lineDetails, + stopMessage, + stopName, + status: Status.SUCCESS, + }, + })); + } catch (error) { + setState((prevState: State) => ({ + ...prevState, + status: Status.ERROR, + })); + } + }; + + init(); + }, [authRepository, devicesRepository, password, username]); + + useEffect(() => { + setDisplayedLines(state.lines, state.stopMessage, state.stopName); + }, [setDisplayedLines, state.lines, state.stopMessage, state.stopName]); + + useEffect(() => { + const interval = setInterval(() => { + setState(prevState => { + const isGreatherThanLinesLength = + (prevState.currentIndex || 1) + 21 >= state.lines.length; + + return { + ...prevState, + currentIndex: isGreatherThanLinesLength + ? 0 + : (prevState.currentIndex || 1 + 21) % state.lines.length, + }; + }); + }, 5000); + + return () => { + clearInterval(interval); + }; + }, [state.lines, state.status]); + + return {state}; +}; + +export default useDevices; diff --git a/src/infraestructure/hooks/useLogin.ts b/src/infraestructure/hooks/useLogin.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/infraestructure/repositories/AuthRepositoryImpl.ts b/src/infraestructure/repositories/AuthRepositoryImpl.ts new file mode 100644 index 0000000..adc8d10 --- /dev/null +++ b/src/infraestructure/repositories/AuthRepositoryImpl.ts @@ -0,0 +1,19 @@ +import AuthRepository from '../../domain/repositories/AuthRepository'; +import AuthAPI from '../api/clients/AuthAPI'; +import AuthRequest from '../api/models/AuthRequest'; + +class AuthRepositoryImpl implements AuthRepository { + private authAPI: AuthAPI; + + constructor(authAPI: AuthAPI) { + this.authAPI = authAPI; + } + + async auth(request: AuthRequest): Promise { + const {token} = await this.authAPI.auth(request); + + return token; + } +} + +export default AuthRepositoryImpl; diff --git a/src/infraestructure/repositories/DevicesRepositoryImpl.ts b/src/infraestructure/repositories/DevicesRepositoryImpl.ts new file mode 100644 index 0000000..02a536b --- /dev/null +++ b/src/infraestructure/repositories/DevicesRepositoryImpl.ts @@ -0,0 +1,29 @@ +import DevicesRepository from '../../domain/repositories/DevicesRepository'; +import DevicesAPI from '../api/clients/DevicesAPI'; +import DeviceInfoResponse from '../api/models/DeviceInfoResponse'; +import toDeviceInfoResponse from './mappers/toDeviceInfoResponse'; +import WhoAmIResponse from '../../domain/repositories/WhoAmIResponse'; +import DeviceRequest from '../api/models/DeviceRequest'; +import toWhoAmIResponse from './mappers/toWhoAmIResponse'; + +class DevicesRepositoryImpl implements DevicesRepository { + private devicesAPI: DevicesAPI; + + constructor(devicesAPI: DevicesAPI) { + this.devicesAPI = devicesAPI; + } + + async whoAmI(request: DeviceRequest): Promise { + const response = await this.devicesAPI.whoami(request); + + return toWhoAmIResponse(response); + } + + async getDeviceInfo(request: DeviceRequest): Promise { + const response = await this.devicesAPI.getInfoDevice(request); + + return toDeviceInfoResponse(response); + } +} + +export default DevicesRepositoryImpl; diff --git a/src/infraestructure/repositories/__tests__/AuthRepositoryImpl.spec.ts b/src/infraestructure/repositories/__tests__/AuthRepositoryImpl.spec.ts new file mode 100644 index 0000000..a47a938 --- /dev/null +++ b/src/infraestructure/repositories/__tests__/AuthRepositoryImpl.spec.ts @@ -0,0 +1,24 @@ +import AuthAPI from '../../api/clients/AuthAPI'; +import AuthRepositoryImpl from '../AuthRepositoryImpl'; + +jest.mock('../../api/clients/AuthAPI'); + +describe('AuthRepositoryImpl tests', () => { + it('should be defined', () => { + expect(AuthRepositoryImpl).toBeDefined(); + }); + + it('should return a token', async () => { + const mockedAuthAPI = new AuthAPI( + 'https://api.example.com', + ) as jest.Mocked; + + mockedAuthAPI.auth.mockResolvedValue({token: 'TOKEN'}); + + const repo = new AuthRepositoryImpl(mockedAuthAPI); + + const token = await repo.auth({username: 'username', password: 'password'}); + + expect(token).toBe('TOKEN'); + }); +}); diff --git a/src/infraestructure/repositories/__tests__/DevicesRepositoryImpl.spec.ts b/src/infraestructure/repositories/__tests__/DevicesRepositoryImpl.spec.ts new file mode 100644 index 0000000..51b635b --- /dev/null +++ b/src/infraestructure/repositories/__tests__/DevicesRepositoryImpl.spec.ts @@ -0,0 +1,93 @@ +import DevicesRepositoryImpl from '../DevicesRepositoryImpl'; +import DevicesAPI from '../../api/clients/DevicesAPI'; +import DeviceInfoResponse from '../../api/models/DeviceInfoResponse'; +import LineDetail from '../../../domain/repositories/LineDetail'; + +jest.mock('../../api/clients/DevicesAPI'); + +describe('DevicesRepositoryImpl tests', () => { + it('should be defined', () => { + expect(DevicesRepositoryImpl).toBeDefined(); + }); + + it('should return a whoami response', async () => { + const mockedDevicesAPI = new DevicesAPI( + 'https://api.example.com', + ) as jest.Mocked; + + mockedDevicesAPI.whoami.mockResolvedValue({ + WhoamiResponse: {NombreParadero: 'stopName', NroParadero: 'stopNumber'}, + }); + + const repo = new DevicesRepositoryImpl(mockedDevicesAPI); + + const whoami = await repo.whoAmI({ + token: 'token', + deviceId: 'deviceId', + }); + + expect(whoami).toMatchObject({ + stopNumber: 'stopNumber', + stopName: 'stopName', + }); + }); + + it('should return a device info response', async () => { + const mockedDevicesAPI = new DevicesAPI( + 'https://api.example.com', + ) as jest.Mocked; + + mockedDevicesAPI.getInfoDevice.mockResolvedValue({ + GetInfoDeviceResponse: { + MensajeParadero: 'stopMessage', + DetalleLineas: [ + { + colorFondo: 'colorFondo', + colorLetra: 'colorLetra', + Descripcion: 'Descripcion', + Linea: 'Linea', + Llegadas: [ + { + DistanciaGPS: 'DistanciaGPS', + EstimadaGPS: 'EstimadaGPS', + Patente: 'Patente', + Planificada: 'Planificada', + }, + ], + Mensajelinea: 'Mensajelinea', + TipoLocomocion: 0, + }, + ], + }, + }); + + const repo = new DevicesRepositoryImpl(mockedDevicesAPI); + + const deviceInfo = await repo.getDeviceInfo({ + token: 'token', + deviceId: 'deviceId', + }); + + expect(deviceInfo).toMatchObject({ + lineDetails: [ + { + arrivals: [ + { + carPlate: 'Patente', + distanceGPS: 'DistanciaGPS', + estimatedGPS: 'EstimadaGPS', + planned: 'Planificada', + }, + ], + backgroundColor: 'colorFondo', + description: 'Descripcion', + letterColor: 'colorLetra', + lineMessage: 'Mensajelinea', + lineNumber: 'Linea', + locomotionType: 0, + } as LineDetail, + ], + stopMessage: 'stopMessage', + } as DeviceInfoResponse); + }); +}); diff --git a/src/infraestructure/repositories/mappers/__tests__/deviceInfoMapper.spec.ts b/src/infraestructure/repositories/mappers/__tests__/deviceInfoMapper.spec.ts new file mode 100644 index 0000000..c9e7865 --- /dev/null +++ b/src/infraestructure/repositories/mappers/__tests__/deviceInfoMapper.spec.ts @@ -0,0 +1,136 @@ +import {GetInfoDeviceResponse} from '../../../api/models/GetInfoDeviceResponse'; +import toDeviceInfoResponse from '../toDeviceInfoResponse'; + +describe('toDeviceInfoResponse tests', () => { + it('should be defined', () => {}); + + it('should map to DeviceInfoResponse', () => { + const responseFromBackEnd: GetInfoDeviceResponse = { + GetInfoDeviceResponse: { + DetalleLineas: [ + { + Linea: '803010', + Descripcion: 'Tucapel', + TipoLocomocion: 1, + colorFondo: 'Hexadecimal', + colorLetra: 'Hexadecimal', + Llegadas: [ + { + Patente: 'RPDA-98', + Planificada: '', + EstimadaGPS: '15:08', + DistanciaGPS: '1.0 KM', + }, + { + Patente: 'WYXYZ-22', + Planificada: '', + EstimadaGPS: '15:42', + DistanciaGPS: '5.0 KM', + }, + { + Patente: 'ABCA-65', + Planificada: '', + EstimadaGPS: '16:18', + DistanciaGPS: '13.4 KM', + }, + ], + Mensajelinea: '', + }, + { + Linea: '5487', + Descripcion: 'Centauro', + TipoLocomocion: 1, + colorFondo: 'Hexadecimal', + colorLetra: 'Hexadecimal', + Llegadas: [ + { + Patente: 'PLKJ-32', + Planificada: '15:13', + EstimadaGPS: '', + DistanciaGPS: '', + }, + { + Patente: 'GHLK-11', + Planificada: '15:39', + EstimadaGPS: '', + DistanciaGPS: '', + }, + { + Patente: 'DFQW-55', + Planificada: '16:22', + EstimadaGPS: '', + DistanciaGPS: '', + }, + ], + Mensajelinea: 'Sin info. GPS, la informacion es estimada', + }, + ], + MensajeParadero: 'No considerar, uso futuro', + }, + }; + + const mappedResponse = toDeviceInfoResponse(responseFromBackEnd); + + expect(mappedResponse).toMatchObject({ + lineDetails: [ + { + lineNumber: '803010', + description: 'Tucapel', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: '', + arrivals: [ + { + carPlate: 'RPDA-98', + planned: '', + estimatedGPS: '15:08', + distanceGPS: '1.0 KM', + }, + { + carPlate: 'WYXYZ-22', + planned: '', + estimatedGPS: '15:42', + distanceGPS: '5.0 KM', + }, + { + carPlate: 'ABCA-65', + planned: '', + estimatedGPS: '16:18', + distanceGPS: '13.4 KM', + }, + ], + }, + { + lineNumber: '5487', + description: 'Centauro', + locomotionType: 1, + backgroundColor: 'Hexadecimal', + letterColor: 'Hexadecimal', + lineMessage: 'Sin info. GPS, la informacion es estimada', + arrivals: [ + { + carPlate: 'PLKJ-32', + planned: '15:13', + estimatedGPS: '', + distanceGPS: '', + }, + { + carPlate: 'GHLK-11', + planned: '15:39', + estimatedGPS: '', + distanceGPS: '', + }, + { + carPlate: 'DFQW-55', + planned: '16:22', + estimatedGPS: '', + distanceGPS: '', + }, + ], + }, + ], + stopMessage: 'No considerar, uso futuro', + }); + }); +}); diff --git a/src/infraestructure/repositories/mappers/__tests__/toWhoAmIResponse.spec.ts b/src/infraestructure/repositories/mappers/__tests__/toWhoAmIResponse.spec.ts new file mode 100644 index 0000000..9b8ca31 --- /dev/null +++ b/src/infraestructure/repositories/mappers/__tests__/toWhoAmIResponse.spec.ts @@ -0,0 +1,21 @@ +import toWhoAmIResponse from '../toWhoAmIResponse'; + +describe('whoamiMapper', () => { + it('should be defined', () => { + expect(toWhoAmIResponse).toBeDefined(); + }); + + it('should map to WhoamIResponse', () => { + expect( + toWhoAmIResponse({ + WhoamiResponse: { + NroParadero: '37477', + NombreParadero: "O'Higgins - entre Angol y Salas", + }, + }), + ).toMatchObject({ + stopNumber: '37477', + stopName: "O'Higgins - entre Angol y Salas", + }); + }); +}); diff --git a/src/infraestructure/repositories/mappers/toDeviceInfoResponse.ts b/src/infraestructure/repositories/mappers/toDeviceInfoResponse.ts new file mode 100644 index 0000000..a6cb82c --- /dev/null +++ b/src/infraestructure/repositories/mappers/toDeviceInfoResponse.ts @@ -0,0 +1,52 @@ +import Arrival from '../../../domain/repositories/Arrival'; +import LineDetail from '../../../domain/repositories/LineDetail'; +import DeviceInfoResponse from '../../api/models/DeviceInfoResponse'; +import {GetInfoDeviceResponse} from '../../api/models/GetInfoDeviceResponse'; + +const toDeviceInfoResponse = ( + response: GetInfoDeviceResponse, +): DeviceInfoResponse => { + const { + GetInfoDeviceResponse: {DetalleLineas, MensajeParadero}, + } = response; + + const mappedLines: LineDetail[] = DetalleLineas.map(linea => { + const { + Linea, + Descripcion, + TipoLocomocion, + colorFondo, + colorLetra, + Mensajelinea, + Llegadas, + } = linea; + + const mappedArrivals: Arrival[] = Llegadas.map(llegada => { + const {Patente, Planificada, EstimadaGPS, DistanciaGPS} = llegada; + + return { + carPlate: Patente, + planned: Planificada, + estimatedGPS: EstimadaGPS, + distanceGPS: DistanciaGPS, + }; + }); + + return { + lineNumber: Linea, + description: Descripcion, + locomotionType: TipoLocomocion, + backgroundColor: colorFondo, + letterColor: colorLetra, + lineMessage: Mensajelinea, + arrivals: mappedArrivals, + }; + }); + + return { + lineDetails: mappedLines, + stopMessage: MensajeParadero, + }; +}; + +export default toDeviceInfoResponse; diff --git a/src/infraestructure/repositories/mappers/toWhoAmIResponse.ts b/src/infraestructure/repositories/mappers/toWhoAmIResponse.ts new file mode 100644 index 0000000..2e216e0 --- /dev/null +++ b/src/infraestructure/repositories/mappers/toWhoAmIResponse.ts @@ -0,0 +1,13 @@ +import WhoAmIResponse from '../../../domain/repositories/WhoAmIResponse'; +import WhoamiResponse from '../../api/models/WhoamiResponse'; + +const toWhoAmIResponse = (response: WhoamiResponse): WhoAmIResponse => { + const {NroParadero, NombreParadero} = response.WhoamiResponse; + + return { + stopNumber: NroParadero, + stopName: NombreParadero, + }; +}; + +export default toWhoAmIResponse; diff --git a/src/presentation/components/Banner.tsx b/src/presentation/components/Banner.tsx new file mode 100644 index 0000000..3531013 --- /dev/null +++ b/src/presentation/components/Banner.tsx @@ -0,0 +1,27 @@ +import {View, Text, StyleSheet, StyleProp, ViewStyle} from 'react-native'; + +interface BannerProps { + text: string; + style?: StyleProp; +} + +const Banner = ({text, style}: BannerProps) => { + return ( + + {text} + + ); +}; + +const styles = StyleSheet.create({ + bannerContainer: { + justifyContent: 'center', + paddingLeft: 8, + }, + bannerText: { + color: 'white', + fontWeight: 'bold', + }, +}); + +export default Banner; diff --git a/src/presentation/components/Container.tsx b/src/presentation/components/Container.tsx new file mode 100644 index 0000000..2f3122d --- /dev/null +++ b/src/presentation/components/Container.tsx @@ -0,0 +1,21 @@ +import {ReactNode} from 'react'; +import {View, StyleSheet, StyleProp, ViewStyle} from 'react-native'; + +interface ContainerProps { + children: ReactNode; + style?: StyleProp; +} + +const Container = ({children, style}: ContainerProps) => { + return ( + {children} + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, +}); + +export default Container; diff --git a/src/presentation/components/Header.tsx b/src/presentation/components/Header.tsx new file mode 100644 index 0000000..c76bb80 --- /dev/null +++ b/src/presentation/components/Header.tsx @@ -0,0 +1,66 @@ +import {View, Text, StyleSheet, StyleProp, ViewStyle} from 'react-native'; +import Container from './Container'; +import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; + +interface HeaderProps { + title?: string; + subTitle?: string; + style?: StyleProp; +} +const Header = ({title, subTitle, style}: HeaderProps) => { + return ( + + + + + + + {title} + {subTitle && {subTitle}} + + + + ); +}; + +const defaultProps = { + title: 'Sin información', + subTitle: 'Sin información', +}; + +Header.defaultProps = defaultProps; + +const styles = StyleSheet.create({ + container: { + backgroundColor: 'orange', + }, + contentContainer: { + flex: 1, + flexDirection: 'row', + alignItems: 'stretch', + }, + iconContainer: { + justifyContent: 'center', + alignContent: 'center', + overflow: 'hidden', + }, + titleContainer: { + flex: 1, + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + marginRight: 16, + }, + title: { + fontSize: 24, + fontWeight: 'bold', + color: 'white', + }, + subTitle: { + fontSize: 16, + fontWeight: 'normal', + color: 'white', + }, +}); + +export default Header; diff --git a/src/presentation/components/__tests__/Banner.spec.tsx b/src/presentation/components/__tests__/Banner.spec.tsx new file mode 100644 index 0000000..97f0b92 --- /dev/null +++ b/src/presentation/components/__tests__/Banner.spec.tsx @@ -0,0 +1,20 @@ +import {render} from '@testing-library/react-native'; +import Banner from '../Banner'; + +describe('Banner tests', () => { + it('should be defined', () => { + expect(Banner).toBeDefined(); + }); + + it('should render correctly', () => { + const {toJSON} = render(); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('should get text correctly', () => { + const {getByText} = render(); + + expect(getByText('text')).toBeDefined(); + }); +}); diff --git a/src/presentation/components/__tests__/Container.spec.tsx b/src/presentation/components/__tests__/Container.spec.tsx new file mode 100644 index 0000000..3c5e5c1 --- /dev/null +++ b/src/presentation/components/__tests__/Container.spec.tsx @@ -0,0 +1,19 @@ +import {render} from '@testing-library/react-native'; +import Container from '../Container'; +import {Text} from 'react-native'; + +describe('Container tests', () => { + it('should be defined', () => { + expect(Container).toBeDefined(); + }); + + it('should render correctly', () => { + const {toJSON} = render( + + Test + , + ); + + expect(toJSON()).toMatchSnapshot(); + }); +}); diff --git a/src/presentation/components/__tests__/Header.spec.tsx b/src/presentation/components/__tests__/Header.spec.tsx new file mode 100644 index 0000000..b18c178 --- /dev/null +++ b/src/presentation/components/__tests__/Header.spec.tsx @@ -0,0 +1,21 @@ +import {render} from '@testing-library/react-native'; +import Header from '../Header'; + +describe('Header tests', () => { + it('should be defined', () => { + expect(Header).toBeDefined(); + }); + + it('should render correctly', () => { + const {toJSON} = render(
); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('should render a title and a subtitle', () => { + const {getByText} = render(
); + + expect(getByText('Title')).toBeDefined(); + expect(getByText('Subtitle')).toBeDefined(); + }); +}); diff --git a/src/presentation/components/__tests__/__snapshots__/Banner.spec.tsx.snap b/src/presentation/components/__tests__/__snapshots__/Banner.spec.tsx.snap new file mode 100644 index 0000000..9b03bea --- /dev/null +++ b/src/presentation/components/__tests__/__snapshots__/Banner.spec.tsx.snap @@ -0,0 +1,23 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Banner tests should render correctly 1`] = ` + + + text + + +`; diff --git a/src/presentation/components/__tests__/__snapshots__/Container.spec.tsx.snap b/src/presentation/components/__tests__/__snapshots__/Container.spec.tsx.snap new file mode 100644 index 0000000..435c279 --- /dev/null +++ b/src/presentation/components/__tests__/__snapshots__/Container.spec.tsx.snap @@ -0,0 +1,15 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Container tests should render correctly 1`] = ` + + + Test + + +`; diff --git a/src/presentation/components/__tests__/__snapshots__/Header.spec.tsx.snap b/src/presentation/components/__tests__/__snapshots__/Header.spec.tsx.snap new file mode 100644 index 0000000..ed78955 --- /dev/null +++ b/src/presentation/components/__tests__/__snapshots__/Header.spec.tsx.snap @@ -0,0 +1,87 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Header tests should render correctly 1`] = ` + + + + + 󰃧 + + + + + Title + + + Subtitle + + + + +`; diff --git a/src/presentation/screens/App.tsx b/src/presentation/screens/App.tsx new file mode 100644 index 0000000..2ca278a --- /dev/null +++ b/src/presentation/screens/App.tsx @@ -0,0 +1,18 @@ +import {SafeAreaView, StyleSheet} from 'react-native'; +import BusStopInfoScreen from './BusStopInfoScreen'; + +const App = () => { + return ( + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, +}); + +export default App; diff --git a/src/presentation/screens/BusStopInfoScreen.tsx b/src/presentation/screens/BusStopInfoScreen.tsx new file mode 100644 index 0000000..189d2fd --- /dev/null +++ b/src/presentation/screens/BusStopInfoScreen.tsx @@ -0,0 +1,197 @@ +import {ActivityIndicator, StyleSheet, View} from 'react-native'; +import Container from '../components/Container'; +import Header from '../components/Header'; +import {Text} from 'react-native'; +import useDevices, {Status} from '../../infraestructure/hooks/useDevices'; +import Banner from '../components/Banner'; + +export interface Line { + lineNumber: string; + lineLetter: string; + letterColor: string; + backgroundColor: string; + estimatedArrivalTimeInMinutes: string; + lineDescription: string; +} + +interface TableProps { + data: Line[]; +} + +const Table = ({data}: TableProps) => { + const rows = 7; + const columns = 3; + + const baseTableData: Line[][] = Array.from({length: rows}, () => + new Array(columns).fill({ + lineNumber: '', + lineLetter: '', + letterColor: '', + backgroundColor: '', + estimatedArrivalTimeInMinutes: '', + }), + ); + + data.map((item, index) => { + const row = Math.floor(index / columns); + const column = index % columns; + baseTableData[row][column] = item; + }); + + return ( + + {baseTableData.map((row, rowIndex) => ( + + {row.map((cell, cellIndex) => { + if (cell.lineNumber === '') { + return ; + } + + return ( + + + {cell.lineNumber} + + + {cell.lineLetter} + + + + + + {cell.lineDescription} + + + {cell.estimatedArrivalTimeInMinutes} + + + + ); + })} + + ))} + + ); +}; + +const BusStopInfoScreen = () => { + const { + state: {status, displayedLines, stopName}, + } = useDevices(); + + const splitStopName = stopName.split('-'); + let title = splitStopName[0] ? `${splitStopName[0].trim()}` : ''; + const subTitle = splitStopName[1] ? `${splitStopName[1].trim()}` : ''; + + return ( + +
+ + + + {status === Status.LOADING ? ( + + ) : ( + + )} + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + justifyContent: 'center', + }, + headerContainer: { + flex: 1.5, + backgroundColor: 'orange', + }, + bannerContainer: { + flex: 0.5, + backgroundColor: 'grey', + }, + bodyContainer: { + flex: 10, + justifyContent: 'center', + }, + busContainer: { + backgroundColor: 'brown', + flexDirection: 'column', + }, + footerContainer: { + flex: 1, + backgroundColor: 'grey', + }, +}); + +const tableStyles = StyleSheet.create({ + table: { + flex: 1, + backgroundColor: 'white', + }, + row: { + flex: 1, + flexDirection: 'row', + }, + cell: { + flex: 1, + borderWidth: 1, + flexDirection: 'column', + borderColor: 'grey', + }, + lineInformationContainer: { + flex: 1, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + timeContainer: { + alignItems: 'center', + backgroundColor: 'blue', + }, + lineNumber: { + fontSize: 20, + marginRight: 8, + fontWeight: 'bold', + color: 'grey', + }, + lineLetter: { + fontSize: 14, + color: 'white', + fontWeight: 'bold', + }, + letterContainer: { + paddingHorizontal: 16, + paddingVertical: 8, + borderRadius: 50, + }, + time: { + fontSize: 12, + fontWeight: 'bold', + color: 'white', + }, + lineDescription: { + fontSize: 12, + fontWeight: 'bold', + color: 'white', + }, +}); + +export default BusStopInfoScreen; diff --git a/src/utils/DateUtils.ts b/src/utils/DateUtils.ts new file mode 100644 index 0000000..389f7ea --- /dev/null +++ b/src/utils/DateUtils.ts @@ -0,0 +1,22 @@ +/** + * @param {date} string in format 'HH:mm:ss' + */ +const getHours = (date: string): number => { + return Number.parseInt(date.split(':')[0], 10); +}; + +/** + * @param {date} string in format 'HH:mm:ss' + */ +const getMinutes = (date: string): number => { + return Number.parseInt(date.split(':')[1], 10); +}; + +/** + * @param {date} string in format 'HH:mm:ss' + */ +const getSeconds = (date: string): number => { + return Number.parseInt(date.split(':')[2], 10); +}; + +export {getHours, getMinutes, getSeconds}; diff --git a/src/utils/__tests__/DateUtils.spec.ts b/src/utils/__tests__/DateUtils.spec.ts new file mode 100644 index 0000000..234a10c --- /dev/null +++ b/src/utils/__tests__/DateUtils.spec.ts @@ -0,0 +1,33 @@ +import {getHours, getMinutes, getSeconds} from '../DateUtils'; + +describe('DateUtils tests', () => { + describe('getHours tests', () => { + it('should be defined', () => { + expect(getHours).toBeDefined(); + }); + + it('should return 13', () => { + expect(getHours('13:00:00')).toBe(13); + }); + }); + + describe('getMinutes tests', () => { + it('should be defined', () => { + expect(getMinutes).toBeDefined(); + }); + + it('should return 30', () => { + expect(getMinutes('13:30:00')).toBe(30); + }); + }); + + describe('getSeconds tests', () => { + it('should be defined', () => { + expect(getSeconds).toBeDefined(); + }); + + it('should return 13', () => { + expect(getSeconds('13:30:13')).toBe(13); + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index eadda83..ba02373 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,34 +15,34 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": - version "7.22.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" - integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.4.tgz#03ae5af150be94392cb5c7ccd97db5a19a5da6aa" + integrity sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA== dependencies: - "@babel/highlight" "^7.22.13" + "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" - integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" + integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.20.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" - integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" + integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" + "@babel/generator" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helpers" "^7.23.2" - "@babel/parser" "^7.23.0" + "@babel/parser" "^7.23.3" "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" + "@babel/traverse" "^7.23.3" + "@babel/types" "^7.23.3" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -50,20 +50,20 @@ semver "^6.3.1" "@babel/eslint-parser@^7.18.2", "@babel/eslint-parser@^7.20.0": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" - integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz#7bf0db1c53b54da0c8a12627373554a0828479ca" + integrity sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.20.0", "@babel/generator@^7.23.0", "@babel/generator@^7.7.2": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" - integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== +"@babel/generator@^7.20.0", "@babel/generator@^7.23.3", "@babel/generator@^7.23.4", "@babel/generator@^7.7.2": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.4.tgz#4a41377d8566ec18f807f42962a7f3551de83d1c" + integrity sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ== dependencies: - "@babel/types" "^7.23.0" + "@babel/types" "^7.23.4" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -75,14 +75,14 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== @@ -93,7 +93,7 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== @@ -108,7 +108,7 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== @@ -155,17 +155,17 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": +"@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" - integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-module-imports" "^7.22.15" @@ -185,7 +185,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": +"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== @@ -194,7 +194,7 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== @@ -224,10 +224,10 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" @@ -249,43 +249,51 @@ "@babel/types" "^7.22.19" "@babel/helpers@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" - integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.4.tgz#7d2cfb969aa43222032193accd7329851facf3c1" + integrity sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw== dependencies: "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" + "@babel/traverse" "^7.23.4" + "@babel/types" "^7.23.4" -"@babel/highlight@^7.22.13": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== dependencies: "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.3", "@babel/parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.4.tgz#409fbe690c333bb70187e2de4021e1e47a026661" + integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" - integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" - integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz#20c60d4639d18f7da8602548512e9d3a4c8d7098" + integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-proposal-async-generator-functions@^7.0.0": version "7.20.7" @@ -306,12 +314,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.22.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.17.tgz#91b60cd338f501cccdf549af2308768911ec5fbb" - integrity sha512-cop/3quQBVvdz6X5SJC6AhUv3C9DrVTM06LUEXimEdWAhCSyOJIr9NiZDU9leHZ0/aiG0Sh7Zmvaku5TWYNgbA== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz#6f511a676c540ccc8d17a8553dbba9230b0ddac0" + integrity sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-default-from" "^7.22.5" + "@babel/plugin-syntax-export-default-from" "^7.23.3" "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": version "7.18.6" @@ -397,10 +405,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz#ac3a24b362a04415a017ab96b9b4483d0e2a6e44" - integrity sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ== +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz#7e6d4bf595d5724230200fb2b7401d4734b15335" + integrity sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -411,24 +419,24 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" - integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz#084564e0f3cc21ea6c70c44cff984a1c0509729a" + integrity sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -446,10 +454,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" - integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -509,10 +517,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" - integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== +"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -524,219 +532,219 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" - integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== +"@babel/plugin-transform-async-generator-functions@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz#93ac8e3531f347fba519b4703f9ff2a75c6ae27a" + integrity sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== +"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== dependencies: - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" - integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" + integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" - integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== +"@babel/plugin-transform-class-static-block@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" + integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" - integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb" + integrity sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" + "@babel/template" "^7.22.15" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" - integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dynamic-import@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" - integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== +"@babel/plugin-transform-dynamic-import@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" + integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" - integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== +"@babel/plugin-transform-export-namespace-from@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" + integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" - integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== +"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz#cfa7ca159cc3306fab526fc67091556b51af26ff" + integrity sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-flow" "^7.22.5" + "@babel/plugin-syntax-flow" "^7.23.3" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" - integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz#afe115ff0fbce735e02868d41489093c63e15559" + integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" - integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== +"@babel/plugin-transform-json-strings@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" + integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" - integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== +"@babel/plugin-transform-logical-assignment-operators@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" + integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" - integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== dependencies: - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" - integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== dependencies: - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" - integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== +"@babel/plugin-transform-modules-systemjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" + integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": @@ -747,148 +755,148 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" - integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" + integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" - integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== +"@babel/plugin-transform-numeric-separator@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" + integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" - integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== +"@babel/plugin-transform-object-rest-spread@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" + integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== dependencies: - "@babel/compat-data" "^7.22.9" + "@babel/compat-data" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.23.3" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" -"@babel/plugin-transform-optional-catch-binding@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" - integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== +"@babel/plugin-transform-optional-catch-binding@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" + integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" - integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== +"@babel/plugin-transform-optional-chaining@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" + integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" - integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-methods@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" - integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" - integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== +"@babel/plugin-transform-private-property-in-object@^7.23.3": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" + integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-display-name@^7.0.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" - integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz#ca2fdc11bc20d4d46de01137318b13d04e481d8e" - integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" + integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c" - integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" + integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx@^7.0.0": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" - integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/types" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" -"@babel/plugin-transform-regenerator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" - integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-runtime@^7.0.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" - integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz#5132b388580002fc5cb7c84eccfb968acdc231cb" + integrity sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" @@ -897,102 +905,103 @@ babel-plugin-polyfill-regenerator "^0.5.3" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typescript@^7.22.15", "@babel/plugin-transform-typescript@^7.5.0": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" - integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== +"@babel/plugin-transform-typescript@^7.23.3", "@babel/plugin-transform-typescript@^7.5.0": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz#da12914d17b3c4b307f32c5fd91fbfdf17d56f86" + integrity sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-typescript" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" -"@babel/plugin-transform-unicode-escapes@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" - integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.20.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" - integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e" + integrity sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q== dependencies: - "@babel/compat-data" "^7.23.2" + "@babel/compat-data" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -1004,56 +1013,55 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.23.2" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.23.0" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.15" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.23.0" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.11" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.15" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.11" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.23.0" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-modules-systemjs" "^7.23.0" - "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.3" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.3" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.3" + "@babel/plugin-transform-classes" "^7.23.3" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.3" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.3" + "@babel/plugin-transform-for-of" "^7.23.3" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.3" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.3" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.23.0" - "@babel/plugin-transform-parameters" "^7.22.15" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.3" + "@babel/plugin-transform-numeric-separator" "^7.23.3" + "@babel/plugin-transform-object-rest-spread" "^7.23.3" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.3" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.3" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.23.0" babel-plugin-polyfill-corejs2 "^0.4.6" babel-plugin-polyfill-corejs3 "^0.8.5" babel-plugin-polyfill-regenerator "^0.5.3" @@ -1061,13 +1069,13 @@ semver "^6.3.1" "@babel/preset-flow@^7.13.13": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.15.tgz#30318deb9b3ebd9f5738e96da03a531e0cd3165d" - integrity sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.23.3.tgz#8084e08b9ccec287bd077ab288b286fab96ffab1" + integrity sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-flow-strip-types" "^7.22.5" + "@babel/plugin-transform-flow-strip-types" "^7.23.3" "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" @@ -1079,15 +1087,15 @@ esutils "^2.0.2" "@babel/preset-typescript@^7.13.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" - integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-typescript" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" "@babel/register@^7.13.16": version "7.22.15" @@ -1106,13 +1114,13 @@ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.0.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.8.4": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" - integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.4.tgz#36fa1d2b36db873d25ec631dcc4923fdc1cf2e2e" + integrity sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.0.0", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": +"@babel/template@^7.0.0", "@babel/template@^7.22.15", "@babel/template@^7.3.3": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== @@ -1121,28 +1129,28 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.20.0", "@babel/traverse@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" - integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== +"@babel/traverse@^7.20.0", "@babel/traverse@^7.23.3", "@babel/traverse@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.4.tgz#c2790f7edf106d059a0098770fe70801417f3f85" + integrity sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg== dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" + "@babel/code-frame" "^7.23.4" + "@babel/generator" "^7.23.4" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.0" - "@babel/types" "^7.23.0" + "@babel/parser" "^7.23.4" + "@babel/types" "^7.23.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" - integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== +"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.4", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.4.tgz#7206a1810fc512a7f7f7d4dace4cb4c1c9dbfb8e" + integrity sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ== dependencies: - "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" @@ -1152,15 +1160,15 @@ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@commitlint/cli@^18.2.0": - version "18.2.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-18.2.0.tgz#c2dc8f0a834b5c4befa48cad6396f694f28d2b5f" - integrity sha512-F/DCG791kMFmWg5eIdogakuGeg4OiI2kD430ed1a1Hh3epvrJdeIAgcGADAMIOmF+m0S1+VlIYUKG2dvQQ1Izw== + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-18.4.3.tgz#5b6112035f2cb17b76244cde5f1587ab853c2365" + integrity sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww== dependencies: - "@commitlint/format" "^18.1.0" - "@commitlint/lint" "^18.1.0" - "@commitlint/load" "^18.2.0" - "@commitlint/read" "^18.1.0" - "@commitlint/types" "^18.1.0" + "@commitlint/format" "^18.4.3" + "@commitlint/lint" "^18.4.3" + "@commitlint/load" "^18.4.3" + "@commitlint/read" "^18.4.3" + "@commitlint/types" "^18.4.3" execa "^5.0.0" lodash.isfunction "^3.0.9" resolve-from "5.0.0" @@ -1168,148 +1176,155 @@ yargs "^17.0.0" "@commitlint/config-conventional@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-18.1.0.tgz#f8f37b0de4090ebd3f9418672184814fab520205" - integrity sha512-8vvvtV3GOLEMHeKc8PjRL1lfP1Y4B6BG0WroFd9PJeRiOc3nFX1J0wlJenLURzl9Qus6YXVGWf+a/ZlbCKT3AA== + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-18.4.3.tgz#8158e6bd874a86ff46a6424f45acd803bc5fef1b" + integrity sha512-729eRRaNta7JZF07qf6SAGSghoDEp9mH7yHU0m7ff0q89W97wDrWCyZ3yoV3mcQJwbhlmVmZPTkPcm7qiAu8WA== dependencies: conventional-changelog-conventionalcommits "^7.0.2" -"@commitlint/config-validator@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-18.1.0.tgz#e717151ab99206bdf70d2b526a32e530cec72512" - integrity sha512-kbHkIuItXn93o2NmTdwi5Mk1ujyuSIysRE/XHtrcps/27GuUKEIqBJp6TdJ4Sq+ze59RlzYSHMKuDKZbfg9+uQ== +"@commitlint/config-validator@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-18.4.3.tgz#cf71d36383cd5241e3b74097e7110514d5d43860" + integrity sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA== dependencies: - "@commitlint/types" "^18.1.0" + "@commitlint/types" "^18.4.3" ajv "^8.11.0" -"@commitlint/ensure@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-18.1.0.tgz#3342fdaf42210166a6ca8779c0028298dd60b4b7" - integrity sha512-CkPzJ9UBumIo54VDcpmBlaVX81J++wzEhN3DJH9+6PaLeiIG+gkSx8t7C2gfwG7PaiW4HzQtdQlBN5ab+c4vFQ== +"@commitlint/ensure@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-18.4.3.tgz#1193a6418fe05edc8d5eff91f3129db345fa1d38" + integrity sha512-MI4fwD9TWDVn4plF5+7JUyLLbkOdzIRBmVeNlk4dcGlkrVA+/l5GLcpN66q9LkFsFv6G2X31y89ApA3hqnqIFg== dependencies: - "@commitlint/types" "^18.1.0" + "@commitlint/types" "^18.4.3" lodash.camelcase "^4.3.0" lodash.kebabcase "^4.1.1" lodash.snakecase "^4.1.1" lodash.startcase "^4.4.0" lodash.upperfirst "^4.3.1" -"@commitlint/execute-rule@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-18.1.0.tgz#1dcacf8da1981dd2e6da76988fdac9f48cdccd46" - integrity sha512-w3Vt4K+O7+nSr9/gFSEfZ1exKUOPSlJaRpnk7Y+XowEhvwT7AIk1HNANH+gETf0zGZ020+hfiMW/Ome+SNCUsg== +"@commitlint/execute-rule@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-18.4.3.tgz#4dca5412dc8fdeb4210432961f209d9eb65008f5" + integrity sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q== -"@commitlint/format@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-18.1.0.tgz#fe0d03b47cf2eda98a5bd9819d595935f53576de" - integrity sha512-So/w217tGWMZZb1yXcUFNF2qFLyYtSVqbnGoMbX8a+JKcG4oB11Gc1adS0ssUOMivtiNpaLtkSHFynyiwtJtiQ== +"@commitlint/format@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-18.4.3.tgz#3478bc2980eb178e13881834e290f12362ec6357" + integrity sha512-8b+ItXYHxAhRAXFfYki5PpbuMMOmXYuzLxib65z2XTqki59YDQJGpJ/wB1kEE5MQDgSTQWtKUrA8n9zS/1uIDQ== dependencies: - "@commitlint/types" "^18.1.0" + "@commitlint/types" "^18.4.3" chalk "^4.1.0" -"@commitlint/is-ignored@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-18.1.0.tgz#f43501fcf853a35d5d1062c63694b2fbb88a72d6" - integrity sha512-fa1fY93J/Nx2GH6r6WOLdBOiL7x9Uc1N7wcpmaJ1C5Qs6P+rPSUTkofe2IOhSJIJoboHfAH6W0ru4xtK689t0Q== +"@commitlint/is-ignored@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-18.4.3.tgz#443e1791af9a13a62299c54f836ad25da42f2663" + integrity sha512-ZseOY9UfuAI32h9w342Km4AIaTieeFskm2ZKdrG7r31+c6zGBzuny9KQhwI9puc0J3GkUquEgKJblCl7pMnjwg== dependencies: - "@commitlint/types" "^18.1.0" + "@commitlint/types" "^18.4.3" semver "7.5.4" -"@commitlint/lint@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-18.1.0.tgz#fb4a93340224e44fff4b5e7fc703d1dac390a32e" - integrity sha512-LGB3eI5UYu5LLayibNrRM4bSbowr1z9uyqvp0c7+0KaSJi+xHxy/QEhb6fy4bMAtbXEvygY0sUu9HxSWg41rVQ== +"@commitlint/lint@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-18.4.3.tgz#1c5a912c2c3785e21d499821c4b70c58ff9a2cfb" + integrity sha512-18u3MRgEXNbnYkMOWoncvq6QB8/90m9TbERKgdPqVvS+zQ/MsuRhdvHYCIXGXZxUb0YI4DV2PC4bPneBV/fYuA== dependencies: - "@commitlint/is-ignored" "^18.1.0" - "@commitlint/parse" "^18.1.0" - "@commitlint/rules" "^18.1.0" - "@commitlint/types" "^18.1.0" + "@commitlint/is-ignored" "^18.4.3" + "@commitlint/parse" "^18.4.3" + "@commitlint/rules" "^18.4.3" + "@commitlint/types" "^18.4.3" -"@commitlint/load@^18.2.0": - version "18.2.0" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-18.2.0.tgz#ca2428c306d0b7f5ae9bac91991efaa359ba0ad6" - integrity sha512-xjX3d3CRlOALwImhOsmLYZh14/+gW/KxsY7+bPKrzmGuFailf9K7ckhB071oYZVJdACnpY4hDYiosFyOC+MpAA== +"@commitlint/load@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-18.4.3.tgz#de156698ddf6e9719ecc49159890834490f61bff" + integrity sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q== dependencies: - "@commitlint/config-validator" "^18.1.0" - "@commitlint/execute-rule" "^18.1.0" - "@commitlint/resolve-extends" "^18.1.0" - "@commitlint/types" "^18.1.0" + "@commitlint/config-validator" "^18.4.3" + "@commitlint/execute-rule" "^18.4.3" + "@commitlint/resolve-extends" "^18.4.3" + "@commitlint/types" "^18.4.3" "@types/node" "^18.11.9" chalk "^4.1.0" - cosmiconfig "^8.0.0" + cosmiconfig "^8.3.6" cosmiconfig-typescript-loader "^5.0.0" lodash.isplainobject "^4.0.6" lodash.merge "^4.6.2" lodash.uniq "^4.5.0" resolve-from "^5.0.0" -"@commitlint/message@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-18.1.0.tgz#841f5b3a72922407ca3e3a1668568c2cf22e2cd0" - integrity sha512-8dT/jJg73wf3o2Mut/fqEDTpBYSIEVtX5PWyuY/0uviEYeheZAczFo/VMIkeGzhJJn1IrcvAwWsvJ1lVGY2I/w== +"@commitlint/message@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-18.4.3.tgz#1e0985ae7c751a620f01b2cfe8f0e875354805e2" + integrity sha512-ddJ7AztWUIoEMAXoewx45lKEYEOeOlBVWjk8hDMUGpprkuvWULpaXczqdjwVtjrKT3JhhN+gMs8pm5G3vB2how== -"@commitlint/parse@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-18.1.0.tgz#d5b019f47f090b0f82931a5ea1d5eeb0fc2a140e" - integrity sha512-23yv8uBweXWYn8bXk4PjHIsmVA+RkbqPh2h7irupBo2LthVlzMRc4LM6UStasScJ4OlXYYaWOmuP7jcExUF50Q== +"@commitlint/parse@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-18.4.3.tgz#f96515b0fa9b7a05dca52be8b214ab50eadfd9c9" + integrity sha512-eoH7CXM9L+/Me96KVcfJ27EIIbA5P9sqw3DqjJhRYuhaULIsPHFs5S5GBDCqT0vKZQDx0DgxhMpW6AQbnKrFtA== dependencies: - "@commitlint/types" "^18.1.0" - conventional-changelog-angular "^6.0.0" + "@commitlint/types" "^18.4.3" + conventional-changelog-angular "^7.0.0" conventional-commits-parser "^5.0.0" -"@commitlint/read@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-18.1.0.tgz#646dc66b0784f864f663b5ad82fabf8789fb41d8" - integrity sha512-rzfzoKUwxmvYO81tI5o1371Nwt3vhcQR36oTNfupPdU1jgSL3nzBIS3B93LcZh3IYKbCIMyMPN5WZ10BXdeoUg== +"@commitlint/read@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-18.4.3.tgz#269fb814bb914bf23c8719690bd01c9ad4a6c09a" + integrity sha512-H4HGxaYA6OBCimZAtghL+B+SWu8ep4X7BwgmedmqWZRHxRLcX2q0bWBtUm5FsMbluxbOfrJwOs/Z0ah4roP/GQ== dependencies: - "@commitlint/top-level" "^18.1.0" - "@commitlint/types" "^18.1.0" + "@commitlint/top-level" "^18.4.3" + "@commitlint/types" "^18.4.3" fs-extra "^11.0.0" git-raw-commits "^2.0.11" minimist "^1.2.6" -"@commitlint/resolve-extends@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-18.1.0.tgz#f134b679c3dfdd4006d2d6c9ace36237b7b0ffed" - integrity sha512-3mZpzOEJkELt7BbaZp6+bofJyxViyObebagFn0A7IHaLARhPkWTivXdjvZHS12nAORftv88Yhbh8eCPKfSvB7g== +"@commitlint/resolve-extends@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-18.4.3.tgz#741c42381ea48f4624209bfc0da0a15b5fba75b5" + integrity sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw== dependencies: - "@commitlint/config-validator" "^18.1.0" - "@commitlint/types" "^18.1.0" + "@commitlint/config-validator" "^18.4.3" + "@commitlint/types" "^18.4.3" import-fresh "^3.0.0" lodash.mergewith "^4.6.2" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-18.1.0.tgz#772fe47c5ff78482881f5238b17f129027f06cdb" - integrity sha512-VJNQ674CRv4znI0DbsjZLVnn647J+BTxHGcrDIsYv7c99gW7TUGeIe5kL80G7l8+5+N0se8v9yn+Prr8xEy6Yw== +"@commitlint/rules@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-18.4.3.tgz#2ae1f16ea1ede20e01ca81ad187fdc65ccc9a5f1" + integrity sha512-8KIeukDf45BiY+Lul1T0imSNXF0sMrlLG6JpLLKolkmYVQ6PxxoNOriwyZ3UTFFpaVbPy0rcITaV7U9JCAfDTA== dependencies: - "@commitlint/ensure" "^18.1.0" - "@commitlint/message" "^18.1.0" - "@commitlint/to-lines" "^18.1.0" - "@commitlint/types" "^18.1.0" + "@commitlint/ensure" "^18.4.3" + "@commitlint/message" "^18.4.3" + "@commitlint/to-lines" "^18.4.3" + "@commitlint/types" "^18.4.3" execa "^5.0.0" -"@commitlint/to-lines@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-18.1.0.tgz#6dc3784cd49843e05bc5939696aaa0cd2f4b58a1" - integrity sha512-aHIoSDjG0ckxPLYDpODUeSLbEKmF6Jrs1B5JIssbbE9eemBtXtjm9yzdiAx9ZXcwoHlhbTp2fbndDb3YjlvJag== +"@commitlint/to-lines@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-18.4.3.tgz#b6cac1eff3d93f0791791a9f8db7b13c6136a350" + integrity sha512-fy1TAleik4Zfru1RJ8ZU6cOSvgSVhUellxd3WZV1D5RwHZETt1sZdcA4mQN2y3VcIZsUNKkW0Mq8CM9/L9harQ== -"@commitlint/top-level@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-18.1.0.tgz#ddbfa15baecac424f3d64bf0a29eed9ac4e48eb1" - integrity sha512-1/USHlolIxJlsfLKecSXH+6PDojIvnzaJGPYwF7MtnTuuXCNQ4izkeqDsRuNMe9nU2VIKpK9OT8Q412kGNmgGw== +"@commitlint/top-level@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-18.4.3.tgz#f4c6fb8ab98de9240c3ed3e4b330d8c50a0fee3a" + integrity sha512-E6fJPBLPFL5R8+XUNSYkj4HekIOuGMyJo3mIx2PkYc3clel+pcWQ7TConqXxNWW4x1ugigiIY2RGot55qUq1hw== dependencies: find-up "^5.0.0" -"@commitlint/types@^18.1.0": - version "18.1.0" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-18.1.0.tgz#7d0d0227ee28b5bacbafa648601ee51e8604f03e" - integrity sha512-65vGxZmbs+2OVwEItxhp3Ul7X2m2LyLfifYI/NdPwRqblmuES2w2aIRhIjb7cwUIBHHSTT8WXj4ixVHQibmvLQ== +"@commitlint/types@^18.4.3": + version "18.4.3" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-18.4.3.tgz#bb50de49330ddff2adcc8ccabb840c8e660336b3" + integrity sha512-cvzx+vtY/I2hVBZHCLrpoh+sA0hfuzHwDc+BAFPimYLjJkpHnghQM+z8W/KyLGkygJh3BtI3xXXq+dKjnSWEmA== dependencies: chalk "^4.1.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1337,10 +1352,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.53.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" - integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== +"@eslint/js@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.54.0.tgz#4fab9a2ff7860082c304f750e94acd644cf984cf" + integrity sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ== "@hapi/hoek@^9.0.0": version "9.3.0" @@ -1619,7 +1634,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.1.0": +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== @@ -1642,6 +1657,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.20" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" @@ -1979,15 +2002,44 @@ dependencies: "@sinonjs/commons" "^3.0.0" +"@testing-library/react-native@^12.4.1": + version "12.4.1" + resolved "https://registry.yarnpkg.com/@testing-library/react-native/-/react-native-12.4.1.tgz#f15d0b6727e5e1af8bc35049aa95ce24b4420fe7" + integrity sha512-HDHwGTJwBB9//Flv0HhApghFsUYZvaKTemXOs9PCMk6P8mUl4IJby8zAud8rq7bT/ZMnehgIak8QK+mJCH6+5Q== + dependencies: + jest-matcher-utils "^29.7.0" + pretty-format "^29.7.0" + redent "^3.0.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + "@tsconfig/react-native@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@tsconfig/react-native/-/react-native-3.0.2.tgz#f7db242eee4820f5a3d0edcc86c920bb7d9ec0f2" integrity sha512-F7IoHEqf741lut4Z2K+IkWQRvXAhBiZMeY5L7BysG7Z2Z3MlIyFR+AagD8jQ/CqC1vowGnRwfLjeuwIpaeoJxA== "@types/babel__core@^7.1.14": - version "7.20.4" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.4.tgz#26a87347e6c6f753b3668398e34496d6d9ac6ac0" - integrity sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -2043,6 +2095,14 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/jest@^29.5.8": + version "29.5.10" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.10.tgz#a10fc5bab9e426081c12b2ef73d24d4f0c9b7f50" + integrity sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + "@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" @@ -2054,16 +2114,23 @@ integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/node@*": - version "20.9.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298" - integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw== + version "20.10.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.0.tgz#16ddf9c0a72b832ec4fcce35b8249cf149214617" + integrity sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ== dependencies: undici-types "~5.26.4" "@types/node@^18.11.9": - version "18.18.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.9.tgz#5527ea1832db3bba8eb8023ce8497b7d3f299592" - integrity sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ== + version "18.18.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.13.tgz#ae0f76c0bfe79d8fad0f910b78ae3e59b333c6e8" + integrity sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g== + dependencies: + undici-types "~5.26.4" + +"@types/node@^20.10.3": + version "20.10.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.3.tgz#4900adcc7fc189d5af5bb41da8f543cea6962030" + integrity sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg== dependencies: undici-types "~5.26.4" @@ -2073,35 +2140,50 @@ integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== "@types/prop-types@*": - version "15.7.10" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.10.tgz#892afc9332c4d62a5ea7e897fe48ed2085bbb08a" - integrity sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A== + version "15.7.11" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + +"@types/react-native-vector-icons@^6.4.17": + version "6.4.18" + resolved "https://registry.yarnpkg.com/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.18.tgz#18671c617b9d0958747bc959903470dde91a8c79" + integrity sha512-YGlNWb+k5laTBHd7+uZowB9DpIK3SXUneZqAiKQaj1jnJCZM0x71GDim5JCTMi4IFkhc9m8H/Gm28T5BjyivUw== + dependencies: + "@types/react" "*" + "@types/react-native" "^0.70" + +"@types/react-native@^0.70": + version "0.70.18" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.70.18.tgz#b4080f22995f61491c7404196f6e5379869591d2" + integrity sha512-M06e2opOY8PyLVfVSWd70X2yrIDZrgiOw677HsOrI/fT27aqvKGuFE44tDUBLEvQ8XEPC+T5pW2h5Az6gX7hdA== + dependencies: + "@types/react" "*" "@types/react-test-renderer@^18.0.0": - version "18.0.6" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.6.tgz#1db32c09d3931a7f4ed7f31612f6cccb2910d28f" - integrity sha512-O2JT1J3/v/NaYHYmPf2DXBSqUGmp6iwhFPicES6Pc1Y90B9Qgu99mmaBGqfZFpVuXLzF/pNJB4K9ySL3iqFeXA== + version "18.0.7" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.7.tgz#2cfe657adb3688cdf543995eceb2e062b5a68728" + integrity sha512-1+ANPOWc6rB3IkSnElhjv6VLlKg2dSv/OWClUyZimbLsQyBn8Js9Vtdsi3UICJ2rIQ3k2la06dkB+C92QfhKmg== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.24": - version "18.2.37" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.37.tgz#0f03af69e463c0f19a356c2660dbca5d19c44cae" - integrity sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw== + version "18.2.38" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.38.tgz#3605ca41d3daff2c434e0b98d79a2469d4c2dd52" + integrity sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/scheduler@*": - version "0.16.6" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.6.tgz#eb26db6780c513de59bee0b869ef289ad3068711" - integrity sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA== + version "0.16.8" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== "@types/semver@^7.3.12": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" - integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== "@types/stack-utils@^2.0.0": version "2.0.3" @@ -2114,23 +2196,23 @@ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^15.0.0": - version "15.0.18" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.18.tgz#b7dda4339f4dde367ffe99650e18967108cea321" - integrity sha512-DDi2KmvAnNsT/EvU8jp1UR7pOJojBtJ3GLZ/uw1MUq4VbbESppPWoHUY4h0OB4BbEbGJiyEsmUcuZDZtoR+ZwQ== + version "15.0.19" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.19.tgz#328fb89e46109ecbdb70c295d96ff2f46dfd01b9" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== dependencies: "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - version "16.0.8" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.8.tgz#0d57a5a491d85ae75d372a32e657b1779b86c65d" - integrity sha512-1GwLEkmFafeb/HbE6pC7tFlgYSQ4Iqh2qlWCq8xN+Qfaiaxr2PcLfuhfRFRYqI6XJyeFoLYyKnhFbNsst9FMtQ== + version "16.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e" + integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.31" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.31.tgz#8fd0089803fd55d8a285895a18b88cb71a99683c" - integrity sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg== + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" @@ -2251,7 +2333,12 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.8.2, acorn@^8.9.0: +acorn-walk@^8.1.1: + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== + +acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: version "8.11.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== @@ -2339,6 +2426,11 @@ appdirsjs@^1.2.4: resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.7.tgz#50b4b7948a26ba6090d4aede2ae2dc2b051be3b3" integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2463,11 +2555,33 @@ asynciterator.prototype@^1.0.0: dependencies: has-symbols "^1.0.3" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +axios-mock-adapter@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz#0f3e6be0fc9b55baab06f2d49c0b71157e7c053d" + integrity sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw== + dependencies: + fast-deep-equal "^3.1.3" + is-buffer "^2.0.5" + +axios@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" + integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-core@^7.0.0-bridge.0: version "7.0.0-bridge.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" @@ -2724,9 +2838,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001561" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da" - integrity sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw== + version "1.0.30001564" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz#eaa8bbc58c0cbccdcb7b41186df39dd2ba591889" + integrity sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg== chalk@^2.4.2: version "2.4.2" @@ -2773,9 +2887,9 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.5.0: - version "2.9.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" - integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== cliui@^6.0.0: version "6.0.0" @@ -2786,6 +2900,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -2848,6 +2971,13 @@ colorette@^1.0.7: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + command-exists@^1.2.8: version "1.2.9" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" @@ -2916,10 +3046,10 @@ connect@^3.6.5: parseurl "~1.3.3" utils-merge "1.0.1" -conventional-changelog-angular@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz#a9a9494c28b7165889144fd5b91573c4aa9ca541" - integrity sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg== +conventional-changelog-angular@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" + integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== dependencies: compare-func "^2.0.0" @@ -2946,9 +3076,9 @@ convert-source-map@^2.0.0: integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.33.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" - integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== + version "3.33.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.3.tgz#ec678b772c5a2d8a7c60a91c3a81869aa704ae01" + integrity sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow== dependencies: browserslist "^4.22.1" @@ -2974,7 +3104,7 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" -cosmiconfig@^8.0.0: +cosmiconfig@^8.3.6: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== @@ -2997,6 +3127,11 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -3088,6 +3223,11 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, de has-property-descriptors "^1.0.0" object-keys "^1.1.1" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -3122,6 +3262,11 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -3156,9 +3301,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.578" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.578.tgz#7a3510f333bcd55e87882799ebeb7518d6ab4d95" - integrity sha512-V0ZhSu1BQZKfG0yNEL6Dadzik8E1vAzfpVOapdSiT9F6yapEJ3Bk+4tZ4SMPdWiUchCgnM/ByYtBzp5ntzDMIA== + version "1.4.594" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz#f69f207fba80735a44a988df42f3f439115d0515" + integrity sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ== emittery@^0.13.1: version "0.13.1" @@ -3418,14 +3563,14 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.19.0: - version "8.53.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" - integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== + version "8.54.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.54.0.tgz#588e0dd4388af91a2e8fa37ea64924074c783537" + integrity sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.3" - "@eslint/js" "8.53.0" + "@eslint/js" "8.54.0" "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -3534,7 +3679,7 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^29.7.0: +expect@^29.0.0, expect@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== @@ -3657,9 +3802,9 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" - integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" keyv "^4.5.3" @@ -3676,15 +3821,20 @@ flow-enums-runtime@^0.0.5: integrity sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ== flow-parser@0.*: - version "0.220.1" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.220.1.tgz#8302ef224e2efb549cccb69fcfb8fb8fb2346668" - integrity sha512-RoM3ARqVYvxnwtkM36RjQFzo5Z9p22jUqtuMrN8gzA/8fU6iMLFE3cXkdSFPyfHRXLU8ILH8TCtSFADk1ACPCg== + version "0.222.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.222.0.tgz#88decc0e35bc11c011af66dbc2f669589d69a6b2" + integrity sha512-Fq5OkFlFRSMV2EOZW+4qUYMTE0uj8pcLsYJMxXYriSBDpHAF7Ofx3PibCTy3cs5P6vbsry7eYj7Z7xFD49GIOQ== flow-parser@^0.206.0: version "0.206.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== +follow-redirects@^1.15.0: + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -3692,6 +3842,15 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +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" + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -3989,9 +4148,9 @@ ieee754@^1.1.13: integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.0.5, ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== image-size@^1.0.2: version "1.0.2" @@ -4109,6 +4268,11 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -4327,9 +4491,9 @@ isobject@^3.0.1: integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.1.tgz#c680fd1544600460367af5811866c34c44c6f3b1" - integrity sha512-opCrKqbthmq3SKZ10mFMQG9dk3fTa3quaOLD35kJa5ejwZHd9xAr+kLuziiZz2cG32s4lMZxNdmdcEQnTDP4+g== + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-instrument@^5.0.4: version "5.2.1" @@ -5096,6 +5260,11 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -5429,7 +5598,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.27, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -5484,6 +5653,11 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.6" +moment@^2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5888,7 +6062,7 @@ pretty-format@^26.5.2, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^29.7.0: +pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== @@ -5917,7 +6091,7 @@ prompts@^2.0.1, prompts@^2.4.0: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@*, prop-types@^15.8.1: +prop-types@*, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -5926,6 +6100,11 @@ prop-types@*, prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -5981,6 +6160,19 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-native-device-info@^10.11.0: + version "10.11.0" + resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-10.11.0.tgz#2c9f378f1c3c5eb9aafa803d015b84325991a9aa" + integrity sha512-qRzhuYOm5ZXQi5dhfJFjDq157oipxcEW/fo0QyMm5+TI6V6/+P/tju+Hif6z0rpLCf7MV7iDVRv2Kqha4D/yvQ== + +react-native-vector-icons@^10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-10.0.2.tgz#44724e0787fb13899efce3510698d1ff69aceefb" + integrity sha512-ZwhUkJhIMkGL3cW7IT4sEEHu2AOzerqsRQ73UzXsB+ecBpVK5bRmp0XswiQleZKZalZfs/WIfWLXLfTQHcQo6A== + dependencies: + prop-types "^15.7.2" + yargs "^16.1.1" + react-native@0.72.6: version "0.72.6" resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.72.6.tgz#9f8d090694907e2f83af22e115cc0e4a3d5fa626" @@ -6812,12 +7004,31 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1: +tslib@^2.0.1, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -7006,10 +7217,15 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + v8-to-istanbul@^9.0.1: - version "9.1.3" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" - integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" @@ -7217,7 +7433,7 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.3: +yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== @@ -7244,6 +7460,19 @@ yargs@^15.1.0: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^17.0.0, yargs@^17.3.1, yargs@^17.6.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" @@ -7257,6 +7486,11 @@ yargs@^17.0.0, yargs@^17.3.1, yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"